@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
@@ -0,0 +1,204 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { getMeta } from '../entity/index.js';
3
+ import { AbstractQuerier, Serialized } from '../querier/index.js';
4
+ import { clone, getFieldCallbackValue, getKeys, hasKeys, isSelectingRelations } from '../util/index.js';
5
+ export class MongodbQuerier extends AbstractQuerier {
6
+ dialect;
7
+ conn;
8
+ extra;
9
+ session;
10
+ constructor(dialect, conn, extra) {
11
+ super();
12
+ this.dialect = dialect;
13
+ this.conn = conn;
14
+ this.extra = extra;
15
+ }
16
+ async execute(task) {
17
+ return task(this.session);
18
+ }
19
+ async findMany(entity, q) {
20
+ const meta = getMeta(entity);
21
+ let documents;
22
+ const hasSelectedRelations = isSelectingRelations(meta, q.$select);
23
+ if (hasSelectedRelations) {
24
+ const pipeline = this.dialect.aggregationPipeline(entity, q);
25
+ this.extra?.logger('findMany', entity.name, JSON.stringify(pipeline, null, 2));
26
+ documents = await this.execute((session) => this.collection(entity).aggregate(pipeline, { session }).toArray());
27
+ documents = this.dialect.normalizeIds(meta, documents);
28
+ await this.fillToManyRelations(entity, documents, q.$select);
29
+ }
30
+ else {
31
+ const cursor = this.collection(entity).find({}, { session: this.session });
32
+ const filter = this.dialect.where(entity, q.$where);
33
+ if (hasKeys(filter)) {
34
+ cursor.filter(filter);
35
+ }
36
+ const select = this.dialect.select(entity, q.$select);
37
+ if (hasKeys(select)) {
38
+ cursor.project(select);
39
+ }
40
+ const sort = this.dialect.sort(entity, q.$sort);
41
+ if (hasKeys(sort)) {
42
+ cursor.sort(sort);
43
+ }
44
+ if (q.$skip) {
45
+ cursor.skip(q.$skip);
46
+ }
47
+ if (q.$limit) {
48
+ cursor.limit(q.$limit);
49
+ }
50
+ this.extra?.logger?.('findMany', entity.name, q);
51
+ documents = await this.execute(() => cursor.toArray());
52
+ documents = this.dialect.normalizeIds(meta, documents);
53
+ }
54
+ return documents;
55
+ }
56
+ count(entity, qm = {}) {
57
+ const filter = this.dialect.where(entity, qm.$where);
58
+ this.extra?.logger?.('count', entity.name, filter);
59
+ return this.execute((session) => this.collection(entity).countDocuments(filter, {
60
+ session,
61
+ }));
62
+ }
63
+ async insertMany(entity, payloads) {
64
+ if (!payloads?.length) {
65
+ return [];
66
+ }
67
+ payloads = clone(payloads);
68
+ const meta = getMeta(entity);
69
+ const persistables = this.dialect.getPersistables(meta, payloads, 'onInsert');
70
+ this.extra?.logger?.('insertMany', entity.name, persistables);
71
+ const { insertedIds } = await this.execute((session) => this.collection(entity).insertMany(persistables, { session }));
72
+ const ids = Object.values(insertedIds);
73
+ for (const [index, it] of payloads.entries()) {
74
+ it[meta.id] = ids[index];
75
+ }
76
+ await this.insertRelations(entity, payloads);
77
+ return ids;
78
+ }
79
+ async updateMany(entity, qm, payload) {
80
+ payload = clone(payload);
81
+ const meta = getMeta(entity);
82
+ const persistable = this.dialect.getPersistable(meta, payload, 'onUpdate');
83
+ const where = this.dialect.where(entity, qm.$where);
84
+ const update = { $set: persistable };
85
+ this.extra?.logger?.('updateMany', entity.name, where, update);
86
+ const { matchedCount } = await this.execute((session) => this.collection(entity).updateMany(where, update, {
87
+ session,
88
+ }));
89
+ await this.updateRelations(entity, qm, payload);
90
+ return matchedCount;
91
+ }
92
+ async upsertOne(entity, conflictPaths, payload) {
93
+ payload = clone(payload);
94
+ const meta = getMeta(entity);
95
+ const persistable = this.dialect.getPersistable(meta, payload, 'onInsert');
96
+ this.extra?.logger?.('upsertOne', entity.name, persistable);
97
+ const where = getKeys(conflictPaths).reduce((acc, key) => {
98
+ acc[key] = payload[key];
99
+ return acc;
100
+ }, {});
101
+ const filter = this.dialect.where(entity, where);
102
+ const update = { $set: persistable };
103
+ const res = await this.execute((session) => this.collection(entity).findOneAndUpdate(filter, update, {
104
+ upsert: true,
105
+ session,
106
+ }));
107
+ const firstId = res?._id;
108
+ return { firstId, changes: firstId ? 1 : 0 };
109
+ }
110
+ async deleteMany(entity, qm, opts = {}) {
111
+ const meta = getMeta(entity);
112
+ const where = this.dialect.where(entity, qm.$where);
113
+ this.extra?.logger?.('deleteMany', entity.name, where, opts);
114
+ const founds = await this.execute((session) => this.collection(entity)
115
+ .find(where, {
116
+ projection: { _id: true },
117
+ session,
118
+ })
119
+ .toArray());
120
+ if (!founds.length) {
121
+ return 0;
122
+ }
123
+ const ids = this.dialect.normalizeIds(meta, founds).map((found) => found[meta.id]);
124
+ let changes;
125
+ if (meta.softDelete && !opts.softDelete) {
126
+ const onDeleteValue = getFieldCallbackValue(meta.fields[meta.softDelete].onDelete);
127
+ const updateResult = await this.execute((session) => this.collection(entity).updateMany({ _id: { $in: ids } }, { $set: { [meta.softDelete]: onDeleteValue } }, {
128
+ session,
129
+ }));
130
+ changes = updateResult.matchedCount;
131
+ }
132
+ else {
133
+ const deleteResult = await this.execute((session) => this.collection(entity).deleteMany({ _id: { $in: ids } }, { session }));
134
+ changes = deleteResult.deletedCount;
135
+ }
136
+ await this.deleteRelations(entity, ids, opts);
137
+ return changes;
138
+ }
139
+ get hasOpenTransaction() {
140
+ return this.session?.inTransaction();
141
+ }
142
+ collection(entity) {
143
+ const { name } = getMeta(entity);
144
+ return this.db.collection(name);
145
+ }
146
+ get db() {
147
+ return this.conn.db();
148
+ }
149
+ async beginTransaction() {
150
+ if (this.hasOpenTransaction) {
151
+ throw TypeError('pending transaction');
152
+ }
153
+ this.extra?.logger?.('beginTransaction');
154
+ await this.session?.endSession();
155
+ this.session = this.conn.startSession();
156
+ this.session.startTransaction();
157
+ }
158
+ async commitTransaction() {
159
+ if (!this.hasOpenTransaction) {
160
+ throw TypeError('not a pending transaction');
161
+ }
162
+ this.extra?.logger?.('commitTransaction');
163
+ await this.session.commitTransaction();
164
+ }
165
+ async rollbackTransaction() {
166
+ if (!this.hasOpenTransaction) {
167
+ throw TypeError('not a pending transaction');
168
+ }
169
+ this.extra?.logger?.('rollbackTransaction');
170
+ await this.session.abortTransaction();
171
+ }
172
+ async internalRelease() {
173
+ if (this.hasOpenTransaction) {
174
+ throw TypeError('pending transaction');
175
+ }
176
+ await this.session?.endSession();
177
+ this.session = undefined;
178
+ }
179
+ }
180
+ __decorate([
181
+ Serialized(),
182
+ __metadata("design:type", Function),
183
+ __metadata("design:paramtypes", [Function]),
184
+ __metadata("design:returntype", Promise)
185
+ ], MongodbQuerier.prototype, "execute", null);
186
+ __decorate([
187
+ Serialized(),
188
+ __metadata("design:type", Function),
189
+ __metadata("design:paramtypes", []),
190
+ __metadata("design:returntype", Promise)
191
+ ], MongodbQuerier.prototype, "beginTransaction", null);
192
+ __decorate([
193
+ Serialized(),
194
+ __metadata("design:type", Function),
195
+ __metadata("design:paramtypes", []),
196
+ __metadata("design:returntype", Promise)
197
+ ], MongodbQuerier.prototype, "commitTransaction", null);
198
+ __decorate([
199
+ Serialized(),
200
+ __metadata("design:type", Function),
201
+ __metadata("design:paramtypes", []),
202
+ __metadata("design:returntype", Promise)
203
+ ], MongodbQuerier.prototype, "rollbackTransaction", null);
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uZ28vbW9uZ29kYlF1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXhHLE1BQU0sT0FBTyxjQUFlLFNBQVEsZUFBZTtJQUl0QztJQUNBO0lBQ0E7SUFMSCxPQUFPLENBQWdCO0lBRS9CLFlBQ1csT0FBcUIsRUFDckIsSUFBaUIsRUFDakIsS0FBb0I7UUFFN0IsS0FBSyxFQUFFLENBQUM7UUFKQyxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZTtJQUcvQixDQUFDO0lBR2EsQUFBTixLQUFLLENBQUMsT0FBTyxDQUFJLElBQTRDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRVEsS0FBSyxDQUFDLFFBQVEsQ0FBcUIsTUFBZSxFQUFFLENBQVc7UUFDdEUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdCLElBQUksU0FBYyxDQUFDO1FBQ25CLE1BQU0sb0JBQW9CLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRSxJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7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QixFQUFFLENBQUM7WUFDNUIsTUFBTSxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQWxPZTtJQURiLFVBQVUsRUFBRTs7Ozs2Q0FHWjtBQTZMYztJQURkLFVBQVUsRUFBRTs7OztzREFTWjtBQUdjO0lBRGQsVUFBVSxFQUFFOzs7O3VEQU9aO0FBR2M7SUFEZCxVQUFVLEVBQUU7Ozs7eURBT1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENsaWVudFNlc3Npb24sIERvY3VtZW50LCBNb25nb0NsaWVudCwgT3B0aW9uYWxVbmxlc3NSZXF1aXJlZElkLCBVcGRhdGVGaWx0ZXIgfSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7IGdldE1ldGEgfSBmcm9tICcuLi9lbnRpdHkvaW5kZXguanMnO1xuaW1wb3J0IHsgQWJzdHJhY3RRdWVyaWVyLCBTZXJpYWxpemVkIH0gZnJvbSAnLi4vcXVlcmllci9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhT3B0aW9ucyxcbiAgSWRWYWx1ZSxcbiAgUXVlcnksXG4gIFF1ZXJ5Q29uZmxpY3RQYXRocyxcbiAgUXVlcnlPcHRpb25zLFxuICBRdWVyeVNlYXJjaCxcbiAgUXVlcnlXaGVyZSxcbiAgVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBjbG9uZSwgZ2V0RmllbGRDYWxsYmFja1ZhbHVlLCBnZXRLZXlzLCBoYXNLZXlzLCBpc1NlbGVjdGluZ1JlbGF0aW9ucyB9IGZyb20gJy4uL3V0aWwvaW5kZXguanMnO1xuXG5pbXBvcnQgdHlwZSB7IE1vbmdvRGlhbGVjdCB9IGZyb20gJy4vbW9uZ29EaWFsZWN0LmpzJztcblxuZXhwb3J0IGNsYXNzIE1vbmdvZGJRdWVyaWVyIGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVyIHtcbiAgcHJpdmF0ZSBzZXNzaW9uOiBDbGllbnRTZXNzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGRpYWxlY3Q6IE1vbmdvRGlhbGVjdCxcbiAgICByZWFkb25seSBjb25uOiBNb25nb0NsaWVudCxcbiAgICByZWFkb25seSBleHRyYT86IEV4dHJhT3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIEBTZXJpYWxpemVkKClcbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlPFQ+KHRhc2s6IChzZXNzaW9uOiBDbGllbnRTZXNzaW9uKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRhc2sodGhpcy5zZXNzaW9uKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGZpbmRNYW55PEUgZXh0ZW5kcyBEb2N1bWVudD4oZW50aXR5OiBUeXBlPEU+LCBxOiBRdWVyeTxFPikge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG5cbiAgICBsZXQgZG9jdW1lbnRzOiBFW107XG4gICAgY29uc3QgaGFzU2VsZWN0ZWRSZWxhdGlvbnMgPSBpc1NlbGVjdGluZ1JlbGF0aW9ucyhtZXRhLCBxLiRzZWxlY3QpO1xuXG4gICAgaWYgKGhhc1NlbGVjdGVkUmVsYXRpb25zKSB7XG4gICAgICBjb25zdCBwaXBlbGluZSA9IHRoaXMuZGlhbGVjdC5hZ2dyZWdhdGlvblBpcGVsaW5lKGVudGl0eSwgcSk7XG4gICAgICB0aGlzLmV4dHJhPy5sb2dnZXIoJ2ZpbmRNYW55JywgZW50aXR5Lm5hbWUsIEpTT04uc3RyaW5naWZ5KHBpcGVsaW5lLCBudWxsLCAyKSk7XG4gICAgICBkb2N1bWVudHMgPSBhd2FpdCB0aGlzLmV4ZWN1dGUoKHNlc3Npb24pID0+XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbihlbnRpdHkpLmFnZ3JlZ2F0ZTxFPihwaXBlbGluZSwgeyBzZXNzaW9uIH0pLnRvQXJyYXkoKSxcbiAgICAgICk7XG4gICAgICBkb2N1bWVudHMgPSB0aGlzLmRpYWxlY3Qubm9ybWFsaXplSWRzKG1ldGEsIGRvY3VtZW50cykgYXMgRVtdO1xuICAgICAgYXdhaXQgdGhpcy5maWxsVG9NYW55UmVsYXRpb25zKGVudGl0eSwgZG9jdW1lbnRzLCBxLiRzZWxlY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjdXJzb3IgPSB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS5maW5kPEU+KHt9LCB7IHNlc3Npb246IHRoaXMuc2Vzc2lvbiB9KTtcblxuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5kaWFsZWN0LndoZXJlKGVudGl0eSwgcS4kd2hlcmUpO1xuICAgICAgaWYgKGhhc0tleXMoZmlsdGVyKSkge1xuICAgICAgICBjdXJzb3IuZmlsdGVyKGZpbHRlcik7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWxlY3QgPSB0aGlzLmRpYWxlY3Quc2VsZWN0KGVudGl0eSwgcS4kc2VsZWN0KTtcbiAgICAgIGlmIChoYXNLZXlzKHNlbGVjdCkpIHtcbiAgICAgICAgY3Vyc29yLnByb2plY3Qoc2VsZWN0KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNvcnQgPSB0aGlzLmRpYWxlY3Quc29ydChlbnRpdHksIHEuJHNvcnQpO1xuICAgICAgaWYgKGhhc0tleXMoc29ydCkpIHtcbiAgICAgICAgY3Vyc29yLnNvcnQoc29ydCk7XG4gICAgICB9XG4gICAgICBpZiAocS4kc2tpcCkge1xuICAgICAgICBjdXJzb3Iuc2tpcChxLiRza2lwKTtcbiAgICAgIH1cbiAgICAgIGlmIChxLiRsaW1pdCkge1xuICAgICAgICBjdXJzb3IubGltaXQocS4kbGltaXQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LignZmluZE1hbnknLCBlbnRpdHkubmFtZSwgcSk7XG5cbiAgICAgIGRvY3VtZW50cyA9IGF3YWl0IHRoaXMuZXhlY3V0ZSgoKSA9PiBjdXJzb3IudG9BcnJheSgpIGFzIFByb21pc2U8RVtdPik7XG4gICAgICBkb2N1bWVudHMgPSB0aGlzLmRpYWxlY3Qubm9ybWFsaXplSWRzKG1ldGEsIGRvY3VtZW50cykgYXMgRVtdO1xuICAgIH1cblxuICAgIHJldHVybiBkb2N1bWVudHM7XG4gIH1cblxuICBvdmVycmlkZSBjb3VudDxFIGV4dGVuZHMgRG9jdW1lbnQ+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5U2VhcmNoPEU+ID0ge30pIHtcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRpYWxlY3Qud2hlcmUoZW50aXR5LCBxbS4kd2hlcmUpO1xuICAgIHRoaXMuZXh0cmE/LmxvZ2dlcj8uKCdjb3VudCcsIGVudGl0eS5uYW1lLCBmaWx0ZXIpO1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoKHNlc3Npb24pID0+XG4gICAgICB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS5jb3VudERvY3VtZW50cyhmaWx0ZXIsIHtcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnNlcnRNYW55PEUgZXh0ZW5kcyBEb2N1bWVudD4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkczogRVtdKSB7XG4gICAgaWYgKCFwYXlsb2Fkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcGF5bG9hZHMgPSBjbG9uZShwYXlsb2Fkcyk7XG5cbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgIGNvbnN0IHBlcnNpc3RhYmxlcyA9IHRoaXMuZGlhbGVjdC5nZXRQZXJzaXN0YWJsZXMobWV0YSwgcGF5bG9hZHMsICdvbkluc2VydCcpIGFzIE9wdGlvbmFsVW5sZXNzUmVxdWlyZWRJZDxFPltdO1xuXG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4oJ2luc2VydE1hbnknLCBlbnRpdHkubmFtZSwgcGVyc2lzdGFibGVzKTtcblxuICAgIGNvbnN0IHsgaW5zZXJ0ZWRJZHMgfSA9IGF3YWl0IHRoaXMuZXhlY3V0ZSgoc2Vzc2lvbikgPT5cbiAgICAgIHRoaXMuY29sbGVjdGlvbihlbnRpdHkpLmluc2VydE1hbnkocGVyc2lzdGFibGVzLCB7IHNlc3Npb24gfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGlkcyA9IE9iamVjdC52YWx1ZXMoaW5zZXJ0ZWRJZHMpIGFzIHVua25vd24gYXMgSWRWYWx1ZTxFPltdO1xuXG4gICAgZm9yIChjb25zdCBbaW5kZXgsIGl0XSBvZiBwYXlsb2Fkcy5lbnRyaWVzKCkpIHtcbiAgICAgIGl0W21ldGEuaWRdID0gaWRzW2luZGV4XTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluc2VydFJlbGF0aW9ucyhlbnRpdHksIHBheWxvYWRzKTtcblxuICAgIHJldHVybiBpZHM7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyB1cGRhdGVNYW55PEUgZXh0ZW5kcyBEb2N1bWVudD4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlTZWFyY2g8RT4sIHBheWxvYWQ6IEUpIHtcbiAgICBwYXlsb2FkID0gY2xvbmUocGF5bG9hZCk7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBjb25zdCBwZXJzaXN0YWJsZSA9IHRoaXMuZGlhbGVjdC5nZXRQZXJzaXN0YWJsZShtZXRhLCBwYXlsb2FkLCAnb25VcGRhdGUnKTtcbiAgICBjb25zdCB3aGVyZSA9IHRoaXMuZGlhbGVjdC53aGVyZShlbnRpdHksIHFtLiR3aGVyZSk7XG4gICAgY29uc3QgdXBkYXRlID0geyAkc2V0OiBwZXJzaXN0YWJsZSB9IHNhdGlzZmllcyBVcGRhdGVGaWx0ZXI8RT47XG5cbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LigndXBkYXRlTWFueScsIGVudGl0eS5uYW1lLCB3aGVyZSwgdXBkYXRlKTtcblxuICAgIGNvbnN0IHsgbWF0Y2hlZENvdW50IH0gPSBhd2FpdCB0aGlzLmV4ZWN1dGUoKHNlc3Npb24pID0+XG4gICAgICB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS51cGRhdGVNYW55KHdoZXJlLCB1cGRhdGUsIHtcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVJlbGF0aW9ucyhlbnRpdHksIHFtLCBwYXlsb2FkKTtcblxuICAgIHJldHVybiBtYXRjaGVkQ291bnQ7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyB1cHNlcnRPbmU8RSBleHRlbmRzIERvY3VtZW50PihlbnRpdHk6IFR5cGU8RT4sIGNvbmZsaWN0UGF0aHM6IFF1ZXJ5Q29uZmxpY3RQYXRoczxFPiwgcGF5bG9hZDogRSkge1xuICAgIHBheWxvYWQgPSBjbG9uZShwYXlsb2FkKTtcblxuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgcGVyc2lzdGFibGUgPSB0aGlzLmRpYWxlY3QuZ2V0UGVyc2lzdGFibGUobWV0YSwgcGF5bG9hZCwgJ29uSW5zZXJ0JykgYXMgT3B0aW9uYWxVbmxlc3NSZXF1aXJlZElkPEU+O1xuXG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4oJ3Vwc2VydE9uZScsIGVudGl0eS5uYW1lLCBwZXJzaXN0YWJsZSk7XG5cbiAgICBjb25zdCB3aGVyZSA9IGdldEtleXMoY29uZmxpY3RQYXRocykucmVkdWNlKFxuICAgICAgKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGFjY1trZXldID0gcGF5bG9hZFtrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFF1ZXJ5V2hlcmU8RT4sXG4gICAgKTtcblxuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGlhbGVjdC53aGVyZShlbnRpdHksIHdoZXJlKTtcblxuICAgIGNvbnN0IHVwZGF0ZSA9IHsgJHNldDogcGVyc2lzdGFibGUgfSBhcyBVcGRhdGVGaWx0ZXI8RT47XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmV4ZWN1dGUoKHNlc3Npb24pID0+XG4gICAgICB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS5maW5kT25lQW5kVXBkYXRlKGZpbHRlciwgdXBkYXRlLCB7XG4gICAgICAgIHVwc2VydDogdHJ1ZSxcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCBmaXJzdElkID0gcmVzPy5faWQgYXMgdW5rbm93biBhcyBzdHJpbmc7XG5cbiAgICByZXR1cm4geyBmaXJzdElkLCBjaGFuZ2VzOiBmaXJzdElkID8gMSA6IDAgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGRlbGV0ZU1hbnk8RSBleHRlbmRzIERvY3VtZW50PihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeVNlYXJjaDxFPiwgb3B0czogUXVlcnlPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgIGNvbnN0IHdoZXJlID0gdGhpcy5kaWFsZWN0LndoZXJlKGVudGl0eSwgcW0uJHdoZXJlKTtcbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LignZGVsZXRlTWFueScsIGVudGl0eS5uYW1lLCB3aGVyZSwgb3B0cyk7XG4gICAgY29uc3QgZm91bmRzID0gYXdhaXQgdGhpcy5leGVjdXRlKChzZXNzaW9uKSA9PlxuICAgICAgdGhpcy5jb2xsZWN0aW9uKGVudGl0eSlcbiAgICAgICAgLmZpbmQod2hlcmUsIHtcbiAgICAgICAgICBwcm9qZWN0aW9uOiB7IF9pZDogdHJ1ZSB9LFxuICAgICAgICAgIHNlc3Npb24sXG4gICAgICAgIH0pXG4gICAgICAgIC50b0FycmF5KCksXG4gICAgKTtcbiAgICBpZiAoIWZvdW5kcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCBpZHMgPSB0aGlzLmRpYWxlY3Qubm9ybWFsaXplSWRzKG1ldGEsIGZvdW5kcyBhcyB1bmtub3duIGFzIEVbXSkubWFwKChmb3VuZCkgPT4gZm91bmRbbWV0YS5pZF0pO1xuICAgIGxldCBjaGFuZ2VzOiBudW1iZXI7XG4gICAgaWYgKG1ldGEuc29mdERlbGV0ZSAmJiAhb3B0cy5zb2Z0RGVsZXRlKSB7XG4gICAgICBjb25zdCBvbkRlbGV0ZVZhbHVlID0gZ2V0RmllbGRDYWxsYmFja1ZhbHVlKG1ldGEuZmllbGRzW21ldGEuc29mdERlbGV0ZV0ub25EZWxldGUpO1xuICAgICAgY29uc3QgdXBkYXRlUmVzdWx0ID0gYXdhaXQgdGhpcy5leGVjdXRlKChzZXNzaW9uKSA9PlxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS51cGRhdGVNYW55KFxuICAgICAgICAgIHsgX2lkOiB7ICRpbjogaWRzIH0gfSxcbiAgICAgICAgICB7ICRzZXQ6IHsgW21ldGEuc29mdERlbGV0ZV06IG9uRGVsZXRlVmFsdWUgfSB9IGFzIFVwZGF0ZUZpbHRlcjxFPixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXNzaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgY2hhbmdlcyA9IHVwZGF0ZVJlc3VsdC5tYXRjaGVkQ291bnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlbGV0ZVJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZSgoc2Vzc2lvbikgPT5cbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uKGVudGl0eSkuZGVsZXRlTWFueSh7IF9pZDogeyAkaW46IGlkcyB9IH0sIHsgc2Vzc2lvbiB9KSxcbiAgICAgICk7XG4gICAgICBjaGFuZ2VzID0gZGVsZXRlUmVzdWx0LmRlbGV0ZWRDb3VudDtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5kZWxldGVSZWxhdGlvbnMoZW50aXR5LCBpZHMsIG9wdHMpO1xuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGhhc09wZW5UcmFuc2FjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uPy5pblRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBjb2xsZWN0aW9uPEUgZXh0ZW5kcyBEb2N1bWVudD4oZW50aXR5OiBUeXBlPEU+KSB7XG4gICAgY29uc3QgeyBuYW1lIH0gPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgcmV0dXJuIHRoaXMuZGIuY29sbGVjdGlvbjxFPihuYW1lKTtcbiAgfVxuXG4gIGdldCBkYigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uLmRiKCk7XG4gIH1cblxuICBAU2VyaWFsaXplZCgpXG4gIG92ZXJyaWRlIGFzeW5jIGJlZ2luVHJhbnNhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaGFzT3BlblRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ3BlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5leHRyYT8ubG9nZ2VyPy4oJ2JlZ2luVHJhbnNhY3Rpb24nKTtcbiAgICBhd2FpdCB0aGlzLnNlc3Npb24/LmVuZFNlc3Npb24oKTtcbiAgICB0aGlzLnNlc3Npb24gPSB0aGlzLmNvbm4uc3RhcnRTZXNzaW9uKCk7XG4gICAgdGhpcy5zZXNzaW9uLnN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIEBTZXJpYWxpemVkKClcbiAgb3ZlcnJpZGUgYXN5bmMgY29tbWl0VHJhbnNhY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLmhhc09wZW5UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdub3QgYSBwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMuZXh0cmE/LmxvZ2dlcj8uKCdjb21taXRUcmFuc2FjdGlvbicpO1xuICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5jb21taXRUcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgQFNlcmlhbGl6ZWQoKVxuICBvdmVycmlkZSBhc3luYyByb2xsYmFja1RyYW5zYWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5oYXNPcGVuVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignbm90IGEgcGVuZGluZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/Ligncm9sbGJhY2tUcmFuc2FjdGlvbicpO1xuICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5hYm9ydFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbFJlbGVhc2UoKSB7XG4gICAgaWYgKHRoaXMuaGFzT3BlblRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ3BlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uPy5lbmRTZXNzaW9uKCk7XG4gICAgdGhpcy5zZXNzaW9uID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ import { MongoMemoryReplSet } from 'mongodb-memory-server';
2
+ import { getEntities, getMeta } from '../entity/index.js';
3
+ import { AbstractQuerierIt } from '../querier/abstractQuerier-test.js';
4
+ import { createSpec } from '../test/index.js';
5
+ import { MongodbQuerierPool } from './mongodbQuerierPool.js';
6
+ class MongodbQuerierIt extends AbstractQuerierIt {
7
+ static replSet;
8
+ constructor() {
9
+ super(new MongodbQuerierPool('mongodb://127.0.0.1:27017/test'));
10
+ }
11
+ async beforeAll() {
12
+ MongodbQuerierIt.replSet = await MongoMemoryReplSet.create({
13
+ replSet: { count: 1, storageEngine: 'wiredTiger' },
14
+ });
15
+ const uri = MongodbQuerierIt.replSet.getUri();
16
+ this.pool = new MongodbQuerierPool(uri);
17
+ await super.beforeAll();
18
+ }
19
+ async afterAll() {
20
+ await super.afterAll();
21
+ await this.pool.end();
22
+ await MongodbQuerierIt.replSet.stop();
23
+ }
24
+ async createTables() {
25
+ const entities = getEntities();
26
+ await Promise.all(entities.map((entity) => {
27
+ const meta = getMeta(entity);
28
+ return this.querier.conn.db().createCollection(meta.name);
29
+ }));
30
+ }
31
+ async dropTables() {
32
+ await this.querier.conn.db().dropDatabase();
33
+ }
34
+ }
35
+ createSpec(new MongodbQuerierIt());
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb25nby9tb25nb2RiUXVlcmllci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE1BQU0sZ0JBQWlCLFNBQVEsaUJBQWlDO0lBQzlELE1BQU0sQ0FBQyxPQUFPLENBQXFCO0lBRW5DO1FBQ0UsS0FBSyxDQUFDLElBQUksa0JBQWtCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFUSxLQUFLLENBQUMsU0FBUztRQUN0QixnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDekQsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFO1NBQ25ELENBQUMsQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVRLEtBQUssQ0FBQyxRQUFRO1FBQ3JCLE1BQU0sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRVEsS0FBSyxDQUFDLFlBQVk7UUFDekIsTUFBTSxRQUFRLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDL0IsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsVUFBVTtRQUN2QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQUVELFVBQVUsQ0FBQyxJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vbmdvTWVtb3J5UmVwbFNldCB9IGZyb20gJ21vbmdvZGItbWVtb3J5LXNlcnZlcic7XG5pbXBvcnQgeyBnZXRFbnRpdGllcywgZ2V0TWV0YSB9IGZyb20gJy4uL2VudGl0eS9pbmRleC5qcyc7XG5pbXBvcnQgeyBBYnN0cmFjdFF1ZXJpZXJJdCB9IGZyb20gJy4uL3F1ZXJpZXIvYWJzdHJhY3RRdWVyaWVyLXRlc3QuanMnO1xuaW1wb3J0IHsgY3JlYXRlU3BlYyB9IGZyb20gJy4uL3Rlc3QvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBNb25nb2RiUXVlcmllciB9IGZyb20gJy4vbW9uZ29kYlF1ZXJpZXIuanMnO1xuaW1wb3J0IHsgTW9uZ29kYlF1ZXJpZXJQb29sIH0gZnJvbSAnLi9tb25nb2RiUXVlcmllclBvb2wuanMnO1xuXG5jbGFzcyBNb25nb2RiUXVlcmllckl0IGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVySXQ8TW9uZ29kYlF1ZXJpZXI+IHtcbiAgc3RhdGljIHJlcGxTZXQ6IE1vbmdvTWVtb3J5UmVwbFNldDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihuZXcgTW9uZ29kYlF1ZXJpZXJQb29sKCdtb25nb2RiOi8vMTI3LjAuMC4xOjI3MDE3L3Rlc3QnKSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBiZWZvcmVBbGwoKSB7XG4gICAgTW9uZ29kYlF1ZXJpZXJJdC5yZXBsU2V0ID0gYXdhaXQgTW9uZ29NZW1vcnlSZXBsU2V0LmNyZWF0ZSh7XG4gICAgICByZXBsU2V0OiB7IGNvdW50OiAxLCBzdG9yYWdlRW5naW5lOiAnd2lyZWRUaWdlcicgfSxcbiAgICB9KTtcbiAgICBjb25zdCB1cmkgPSBNb25nb2RiUXVlcmllckl0LnJlcGxTZXQuZ2V0VXJpKCk7XG4gICAgdGhpcy5wb29sID0gbmV3IE1vbmdvZGJRdWVyaWVyUG9vbCh1cmkpO1xuICAgIGF3YWl0IHN1cGVyLmJlZm9yZUFsbCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgYWZ0ZXJBbGwoKSB7XG4gICAgYXdhaXQgc3VwZXIuYWZ0ZXJBbGwoKTtcbiAgICBhd2FpdCB0aGlzLnBvb2wuZW5kKCk7XG4gICAgYXdhaXQgTW9uZ29kYlF1ZXJpZXJJdC5yZXBsU2V0LnN0b3AoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZVRhYmxlcygpIHtcbiAgICBjb25zdCBlbnRpdGllcyA9IGdldEVudGl0aWVzKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBlbnRpdGllcy5tYXAoKGVudGl0eSkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyaWVyLmNvbm4uZGIoKS5jcmVhdGVDb2xsZWN0aW9uKG1ldGEubmFtZSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZHJvcFRhYmxlcygpIHtcbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIuY29ubi5kYigpLmRyb3BEYXRhYmFzZSgpO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IE1vbmdvZGJRdWVyaWVySXQoKSk7XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { type MongoClientOptions } from 'mongodb';
2
+ import { AbstractQuerierPool } from '../querier/index.js';
3
+ import type { ExtraOptions } from '../type/index.js';
4
+ import { MongodbQuerier } from './mongodbQuerier.js';
5
+ export declare class MongodbQuerierPool extends AbstractQuerierPool<MongodbQuerier> {
6
+ private readonly client;
7
+ constructor(uri: string, opts?: MongoClientOptions, extra?: ExtraOptions);
8
+ getQuerier(): Promise<MongodbQuerier>;
9
+ end(): Promise<void>;
10
+ }
@@ -0,0 +1,20 @@
1
+ import { MongoClient } from 'mongodb';
2
+ import { AbstractQuerierPool } from '../querier/index.js';
3
+ import { MongoDialect } from './mongoDialect.js';
4
+ import { MongodbQuerier } from './mongodbQuerier.js';
5
+ export class MongodbQuerierPool extends AbstractQuerierPool {
6
+ client;
7
+ constructor(uri, opts, extra) {
8
+ super('mongodb', extra);
9
+ this.client = new MongoClient(uri, opts);
10
+ }
11
+ async getQuerier() {
12
+ const conn = await this.client.connect();
13
+ const querier = new MongodbQuerier(new MongoDialect(), conn, this.extra);
14
+ return querier;
15
+ }
16
+ async end() {
17
+ await this.client.close();
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXJQb29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbmdvL21vbmdvZGJRdWVyaWVyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUEyQixNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxtQkFBbUM7SUFDeEQsTUFBTSxDQUFjO0lBRXJDLFlBQVksR0FBVyxFQUFFLElBQXlCLEVBQUUsS0FBb0I7UUFDdEUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb25nb0NsaWVudCwgdHlwZSBNb25nb0NsaWVudE9wdGlvbnMgfSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7IEFic3RyYWN0UXVlcmllclBvb2wgfSBmcm9tICcuLi9xdWVyaWVyL2luZGV4LmpzJztcbmltcG9ydCB0eXBlIHsgRXh0cmFPcHRpb25zIH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBNb25nb0RpYWxlY3QgfSBmcm9tICcuL21vbmdvRGlhbGVjdC5qcyc7XG5pbXBvcnQgeyBNb25nb2RiUXVlcmllciB9IGZyb20gJy4vbW9uZ29kYlF1ZXJpZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgTW9uZ29kYlF1ZXJpZXJQb29sIGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVyUG9vbDxNb25nb2RiUXVlcmllcj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudDogTW9uZ29DbGllbnQ7XG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIG9wdHM/OiBNb25nb0NsaWVudE9wdGlvbnMsIGV4dHJhPzogRXh0cmFPcHRpb25zKSB7XG4gICAgc3VwZXIoJ21vbmdvZGInLCBleHRyYSk7XG4gICAgdGhpcy5jbGllbnQgPSBuZXcgTW9uZ29DbGllbnQodXJpLCBvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGdldFF1ZXJpZXIoKSB7XG4gICAgY29uc3QgY29ubiA9IGF3YWl0IHRoaXMuY2xpZW50LmNvbm5lY3QoKTtcbiAgICBjb25zdCBxdWVyaWVyID0gbmV3IE1vbmdvZGJRdWVyaWVyKG5ldyBNb25nb0RpYWxlY3QoKSwgY29ubiwgdGhpcy5leHRyYSk7XG4gICAgcmV0dXJuIHF1ZXJpZXI7XG4gIH1cblxuICBhc3luYyBlbmQoKSB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQuY2xvc2UoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { MongoMemoryReplSet } from 'mongodb-memory-server';
2
+ import { AbstractQuerierPoolIt } from '../querier/abstractQuerierPool-test.js';
3
+ import { createSpec } from '../test/index.js';
4
+ import { MongodbQuerierPool } from './mongodbQuerierPool.js';
5
+ class MongodbQuerierPoolIt extends AbstractQuerierPoolIt {
6
+ static replSet;
7
+ async beforeAll() {
8
+ MongodbQuerierPoolIt.replSet = await MongoMemoryReplSet.create({
9
+ replSet: { count: 1, storageEngine: 'wiredTiger' },
10
+ });
11
+ const uri = MongodbQuerierPoolIt.replSet.getUri();
12
+ this.pool = new MongodbQuerierPool(uri);
13
+ }
14
+ async afterAll() {
15
+ await super.afterAll();
16
+ await this.pool.end();
17
+ await MongodbQuerierPoolIt.replSet.stop();
18
+ }
19
+ }
20
+ createSpec(new MongodbQuerierPoolIt(new MongodbQuerierPool('mongodb://127.0.0.1:27017/test')));
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXJQb29sLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uZ28vbW9uZ29kYlF1ZXJpZXJQb29sLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE1BQU0sb0JBQXFCLFNBQVEscUJBQXFDO0lBQ3RFLE1BQU0sQ0FBQyxPQUFPLENBQXFCO0lBRW5DLEtBQUssQ0FBQyxTQUFTO1FBQ2Isb0JBQW9CLENBQUMsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDO1lBQzdELE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRTtTQUNuRCxDQUFDLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUSxLQUFLLENBQUMsUUFBUTtRQUNyQixNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBRUQsVUFBVSxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vbmdvTWVtb3J5UmVwbFNldCB9IGZyb20gJ21vbmdvZGItbWVtb3J5LXNlcnZlcic7XG5pbXBvcnQgeyBBYnN0cmFjdFF1ZXJpZXJQb29sSXQgfSBmcm9tICcuLi9xdWVyaWVyL2Fic3RyYWN0UXVlcmllclBvb2wtdGVzdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTcGVjIH0gZnJvbSAnLi4vdGVzdC9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IE1vbmdvZGJRdWVyaWVyIH0gZnJvbSAnLi9tb25nb2RiUXVlcmllci5qcyc7XG5pbXBvcnQgeyBNb25nb2RiUXVlcmllclBvb2wgfSBmcm9tICcuL21vbmdvZGJRdWVyaWVyUG9vbC5qcyc7XG5cbmNsYXNzIE1vbmdvZGJRdWVyaWVyUG9vbEl0IGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVyUG9vbEl0PE1vbmdvZGJRdWVyaWVyPiB7XG4gIHN0YXRpYyByZXBsU2V0OiBNb25nb01lbW9yeVJlcGxTZXQ7XG5cbiAgYXN5bmMgYmVmb3JlQWxsKCkge1xuICAgIE1vbmdvZGJRdWVyaWVyUG9vbEl0LnJlcGxTZXQgPSBhd2FpdCBNb25nb01lbW9yeVJlcGxTZXQuY3JlYXRlKHtcbiAgICAgIHJlcGxTZXQ6IHsgY291bnQ6IDEsIHN0b3JhZ2VFbmdpbmU6ICd3aXJlZFRpZ2VyJyB9LFxuICAgIH0pO1xuICAgIGNvbnN0IHVyaSA9IE1vbmdvZGJRdWVyaWVyUG9vbEl0LnJlcGxTZXQuZ2V0VXJpKCk7XG4gICAgdGhpcy5wb29sID0gbmV3IE1vbmdvZGJRdWVyaWVyUG9vbCh1cmkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgYWZ0ZXJBbGwoKSB7XG4gICAgYXdhaXQgc3VwZXIuYWZ0ZXJBbGwoKTtcbiAgICBhd2FpdCB0aGlzLnBvb2wuZW5kKCk7XG4gICAgYXdhaXQgTW9uZ29kYlF1ZXJpZXJQb29sSXQucmVwbFNldC5zdG9wKCk7XG4gIH1cbn1cblxuY3JlYXRlU3BlYyhuZXcgTW9uZ29kYlF1ZXJpZXJQb29sSXQobmV3IE1vbmdvZGJRdWVyaWVyUG9vbCgnbW9uZ29kYjovLzEyNy4wLjAuMToyNzAxNy90ZXN0JykpKTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './mysql2Querier.js';
2
+ export * from './mysql2QuerierPool.js';
3
+ export * from './mysqlDialect.js';
@@ -0,0 +1,4 @@
1
+ export * from './mysql2Querier.js';
2
+ export * from './mysql2QuerierPool.js';
3
+ export * from './mysqlDialect.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXlzcWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL215c3FsMlF1ZXJpZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9teXNxbDJRdWVyaWVyUG9vbC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL215c3FsRGlhbGVjdC5qcyc7XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import type { PoolConnection } from 'mysql2/promise';
2
+ import { AbstractSqlQuerier } from '../querier/index.js';
3
+ import type { ExtraOptions } from '../type/index.js';
4
+ export declare class MySql2Querier extends AbstractSqlQuerier {
5
+ readonly connect: () => Promise<PoolConnection>;
6
+ readonly extra?: ExtraOptions;
7
+ conn: PoolConnection;
8
+ constructor(connect: () => Promise<PoolConnection>, extra?: ExtraOptions);
9
+ internalAll<T>(query: string, values?: unknown[]): Promise<T[]>;
10
+ internalRun(query: string, values?: unknown[]): Promise<{
11
+ changes: any;
12
+ ids: any[];
13
+ firstId: any;
14
+ }>;
15
+ lazyConnect(): Promise<void>;
16
+ internalRelease(): Promise<void>;
17
+ }
@@ -0,0 +1,43 @@
1
+ import { AbstractSqlQuerier } from '../querier/index.js';
2
+ import { MySqlDialect } from './mysqlDialect.js';
3
+ export class MySql2Querier extends AbstractSqlQuerier {
4
+ connect;
5
+ extra;
6
+ conn;
7
+ constructor(connect, extra) {
8
+ super(new MySqlDialect(extra?.namingStrategy));
9
+ this.connect = connect;
10
+ this.extra = extra;
11
+ }
12
+ async internalAll(query, values) {
13
+ this.extra?.logger?.(query, values);
14
+ await this.lazyConnect();
15
+ const [res] = await this.conn.query(query, values);
16
+ return res;
17
+ }
18
+ async internalRun(query, values) {
19
+ this.extra?.logger?.(query, values);
20
+ await this.lazyConnect();
21
+ const [res] = await this.conn.query(query, values);
22
+ const ids = res.insertId
23
+ ? Array(res.affectedRows)
24
+ .fill(res.insertId)
25
+ .map((i, index) => i + index)
26
+ : [];
27
+ return { changes: res.affectedRows, ids, firstId: ids[0] };
28
+ }
29
+ async lazyConnect() {
30
+ this.conn ??= await this.connect();
31
+ }
32
+ async internalRelease() {
33
+ if (this.hasOpenTransaction) {
34
+ throw TypeError('pending transaction');
35
+ }
36
+ if (!this.conn) {
37
+ return;
38
+ }
39
+ await this.conn.release();
40
+ this.conn = undefined;
41
+ }
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9teXNxbC9teXNxbDJRdWVyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sYUFBYyxTQUFRLGtCQUFrQjtJQUl4QztJQUNBO0lBSlgsSUFBSSxDQUFpQjtJQUVyQixZQUNXLE9BQXNDLEVBQ3RDLEtBQW9CO1FBRTdCLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUh0QyxZQUFPLEdBQVAsT0FBTyxDQUErQjtRQUN0QyxVQUFLLEdBQUwsS0FBSyxDQUFlO0lBRy9CLENBQUM7SUFFUSxLQUFLLENBQUMsV0FBVyxDQUFJLEtBQWEsRUFBRSxNQUFrQjtRQUM3RCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVRLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYSxFQUFFLE1BQWtCO1FBQzFELElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBUSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUTtZQUN0QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7aUJBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO2lCQUNsQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQThCLENBQUM7SUFDekYsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWU7UUFDNUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQb29sQ29ubmVjdGlvbiB9IGZyb20gJ215c3FsMi9wcm9taXNlJztcbmltcG9ydCB7IEFic3RyYWN0U3FsUXVlcmllciB9IGZyb20gJy4uL3F1ZXJpZXIvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYU9wdGlvbnMsIFF1ZXJ5VXBkYXRlUmVzdWx0IH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBNeVNxbERpYWxlY3QgfSBmcm9tICcuL215c3FsRGlhbGVjdC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBNeVNxbDJRdWVyaWVyIGV4dGVuZHMgQWJzdHJhY3RTcWxRdWVyaWVyIHtcbiAgY29ubjogUG9vbENvbm5lY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY29ubmVjdDogKCkgPT4gUHJvbWlzZTxQb29sQ29ubmVjdGlvbj4sXG4gICAgcmVhZG9ubHkgZXh0cmE/OiBFeHRyYU9wdGlvbnMsXG4gICkge1xuICAgIHN1cGVyKG5ldyBNeVNxbERpYWxlY3QoZXh0cmE/Lm5hbWluZ1N0cmF0ZWd5KSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbEFsbDxUPihxdWVyeTogc3RyaW5nLCB2YWx1ZXM/OiB1bmtub3duW10pIHtcbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LihxdWVyeSwgdmFsdWVzKTtcbiAgICBhd2FpdCB0aGlzLmxhenlDb25uZWN0KCk7XG4gICAgY29uc3QgW3Jlc10gPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnkocXVlcnksIHZhbHVlcyk7XG4gICAgcmV0dXJuIHJlcyBhcyBUW107XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbFJ1bihxdWVyeTogc3RyaW5nLCB2YWx1ZXM/OiB1bmtub3duW10pIHtcbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LihxdWVyeSwgdmFsdWVzKTtcbiAgICBhd2FpdCB0aGlzLmxhenlDb25uZWN0KCk7XG4gICAgY29uc3QgW3Jlc106IGFueSA9IGF3YWl0IHRoaXMuY29ubi5xdWVyeShxdWVyeSwgdmFsdWVzKTtcbiAgICBjb25zdCBpZHMgPSByZXMuaW5zZXJ0SWRcbiAgICAgID8gQXJyYXkocmVzLmFmZmVjdGVkUm93cylcbiAgICAgICAgICAuZmlsbChyZXMuaW5zZXJ0SWQpXG4gICAgICAgICAgLm1hcCgoaSwgaW5kZXgpID0+IGkgKyBpbmRleClcbiAgICAgIDogW107XG4gICAgcmV0dXJuIHsgY2hhbmdlczogcmVzLmFmZmVjdGVkUm93cywgaWRzLCBmaXJzdElkOiBpZHNbMF0gfSBzYXRpc2ZpZXMgUXVlcnlVcGRhdGVSZXN1bHQ7XG4gIH1cblxuICBhc3luYyBsYXp5Q29ubmVjdCgpIHtcbiAgICB0aGlzLmNvbm4gPz89IGF3YWl0IHRoaXMuY29ubmVjdCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgaW50ZXJuYWxSZWxlYXNlKCkge1xuICAgIGlmICh0aGlzLmhhc09wZW5UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb25uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY29ubi5yZWxlYXNlKCk7XG4gICAgdGhpcy5jb25uID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { AbstractSqlQuerierIt } from '../querier/abstractSqlQuerier-test.js';
2
+ export declare class MySql2QuerierIt extends AbstractSqlQuerierIt {
3
+ constructor();
4
+ }
@@ -0,0 +1,16 @@
1
+ import { AbstractSqlQuerierIt } from '../querier/abstractSqlQuerier-test.js';
2
+ import { createSpec } from '../test/index.js';
3
+ import { MySql2QuerierPool } from './mysql2QuerierPool.js';
4
+ export class MySql2QuerierIt extends AbstractSqlQuerierIt {
5
+ constructor() {
6
+ super(new MySql2QuerierPool({
7
+ host: '0.0.0.0',
8
+ port: 3316,
9
+ user: 'test',
10
+ password: 'test',
11
+ database: 'test',
12
+ }), 'INT AUTO_INCREMENT PRIMARY KEY');
13
+ }
14
+ }
15
+ createSpec(new MySql2QuerierIt());
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL215c3FsL215c3FsMlF1ZXJpZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsTUFBTSxPQUFPLGVBQWdCLFNBQVEsb0JBQW9CO0lBQ3ZEO1FBQ0UsS0FBSyxDQUNILElBQUksaUJBQWlCLENBQUM7WUFDcEIsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osUUFBUSxFQUFFLE1BQU07WUFDaEIsUUFBUSxFQUFFLE1BQU07U0FDakIsQ0FBQyxFQUNGLGdDQUFnQyxDQUNqQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsVUFBVSxDQUFDLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0U3FsUXVlcmllckl0IH0gZnJvbSAnLi4vcXVlcmllci9hYnN0cmFjdFNxbFF1ZXJpZXItdGVzdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTcGVjIH0gZnJvbSAnLi4vdGVzdC9pbmRleC5qcyc7XG5pbXBvcnQgeyBNeVNxbDJRdWVyaWVyUG9vbCB9IGZyb20gJy4vbXlzcWwyUXVlcmllclBvb2wuanMnO1xuXG5leHBvcnQgY2xhc3MgTXlTcWwyUXVlcmllckl0IGV4dGVuZHMgQWJzdHJhY3RTcWxRdWVyaWVySXQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIG5ldyBNeVNxbDJRdWVyaWVyUG9vbCh7XG4gICAgICAgIGhvc3Q6ICcwLjAuMC4wJyxcbiAgICAgICAgcG9ydDogMzMxNixcbiAgICAgICAgdXNlcjogJ3Rlc3QnLFxuICAgICAgICBwYXNzd29yZDogJ3Rlc3QnLFxuICAgICAgICBkYXRhYmFzZTogJ3Rlc3QnLFxuICAgICAgfSksXG4gICAgICAnSU5UIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZJyxcbiAgICApO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IE15U3FsMlF1ZXJpZXJJdCgpKTtcbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { type Pool, type PoolOptions } from 'mysql2/promise';
2
+ import { AbstractQuerierPool } from '../querier/index.js';
3
+ import type { ExtraOptions } from '../type/index.js';
4
+ import { MySql2Querier } from './mysql2Querier.js';
5
+ export declare class MySql2QuerierPool extends AbstractQuerierPool<MySql2Querier> {
6
+ readonly pool: Pool;
7
+ constructor(opts: PoolOptions, extra?: ExtraOptions);
8
+ getQuerier(): Promise<MySql2Querier>;
9
+ end(): Promise<void>;
10
+ }
@@ -0,0 +1,17 @@
1
+ import { createPool } from 'mysql2/promise';
2
+ import { AbstractQuerierPool } from '../querier/index.js';
3
+ import { MySql2Querier } from './mysql2Querier.js';
4
+ export class MySql2QuerierPool extends AbstractQuerierPool {
5
+ pool;
6
+ constructor(opts, extra) {
7
+ super('mysql', extra);
8
+ this.pool = createPool(opts);
9
+ }
10
+ async getQuerier() {
11
+ return new MySql2Querier(() => this.pool.getConnection(), this.extra);
12
+ }
13
+ async end() {
14
+ await this.pool.end();
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllclBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXlzcWwvbXlzcWwyUXVlcmllclBvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG1CQUFrQztJQUM5RCxJQUFJLENBQU87SUFFcEIsWUFBWSxJQUFpQixFQUFFLEtBQW9CO1FBQ2pELEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsT0FBTyxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUG9vbCwgdHlwZSBQb29sLCB0eXBlIFBvb2xPcHRpb25zIH0gZnJvbSAnbXlzcWwyL3Byb21pc2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RRdWVyaWVyUG9vbCB9IGZyb20gJy4uL3F1ZXJpZXIvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYU9wdGlvbnMgfSBmcm9tICcuLi90eXBlL2luZGV4LmpzJztcbmltcG9ydCB7IE15U3FsMlF1ZXJpZXIgfSBmcm9tICcuL215c3FsMlF1ZXJpZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgTXlTcWwyUXVlcmllclBvb2wgZXh0ZW5kcyBBYnN0cmFjdFF1ZXJpZXJQb29sPE15U3FsMlF1ZXJpZXI+IHtcbiAgcmVhZG9ubHkgcG9vbDogUG9vbDtcblxuICBjb25zdHJ1Y3RvcihvcHRzOiBQb29sT3B0aW9ucywgZXh0cmE/OiBFeHRyYU9wdGlvbnMpIHtcbiAgICBzdXBlcignbXlzcWwnLCBleHRyYSk7XG4gICAgdGhpcy5wb29sID0gY3JlYXRlUG9vbChvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGdldFF1ZXJpZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBNeVNxbDJRdWVyaWVyKCgpID0+IHRoaXMucG9vbC5nZXRDb25uZWN0aW9uKCksIHRoaXMuZXh0cmEpO1xuICB9XG5cbiAgYXN5bmMgZW5kKCkge1xuICAgIGF3YWl0IHRoaXMucG9vbC5lbmQoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import { AbstractQuerierPoolIt } from '../querier/abstractQuerierPool-test.js';
2
+ import type { MySql2Querier } from './mysql2Querier.js';
3
+ export declare class MySql2QuerierPoolIt extends AbstractQuerierPoolIt<MySql2Querier> {
4
+ constructor();
5
+ }
@@ -0,0 +1,16 @@
1
+ import { AbstractQuerierPoolIt } from '../querier/abstractQuerierPool-test.js';
2
+ import { createSpec } from '../test/index.js';
3
+ import { MySql2QuerierPool } from './mysql2QuerierPool.js';
4
+ export class MySql2QuerierPoolIt extends AbstractQuerierPoolIt {
5
+ constructor() {
6
+ super(new MySql2QuerierPool({
7
+ host: '0.0.0.0',
8
+ port: 3316,
9
+ user: 'test',
10
+ password: 'test',
11
+ database: 'test',
12
+ }));
13
+ }
14
+ }
15
+ createSpec(new MySql2QuerierPoolIt());
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwyUXVlcmllclBvb2wudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9teXNxbC9teXNxbDJRdWVyaWVyUG9vbC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEscUJBQW9DO0lBQzNFO1FBQ0UsS0FBSyxDQUNILElBQUksaUJBQWlCLENBQUM7WUFDcEIsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osUUFBUSxFQUFFLE1BQU07WUFDaEIsUUFBUSxFQUFFLE1BQU07U0FDakIsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxVQUFVLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdFF1ZXJpZXJQb29sSXQgfSBmcm9tICcuLi9xdWVyaWVyL2Fic3RyYWN0UXVlcmllclBvb2wtdGVzdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTcGVjIH0gZnJvbSAnLi4vdGVzdC9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IE15U3FsMlF1ZXJpZXIgfSBmcm9tICcuL215c3FsMlF1ZXJpZXIuanMnO1xuaW1wb3J0IHsgTXlTcWwyUXVlcmllclBvb2wgfSBmcm9tICcuL215c3FsMlF1ZXJpZXJQb29sLmpzJztcblxuZXhwb3J0IGNsYXNzIE15U3FsMlF1ZXJpZXJQb29sSXQgZXh0ZW5kcyBBYnN0cmFjdFF1ZXJpZXJQb29sSXQ8TXlTcWwyUXVlcmllcj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIG5ldyBNeVNxbDJRdWVyaWVyUG9vbCh7XG4gICAgICAgIGhvc3Q6ICcwLjAuMC4wJyxcbiAgICAgICAgcG9ydDogMzMxNixcbiAgICAgICAgdXNlcjogJ3Rlc3QnLFxuICAgICAgICBwYXNzd29yZDogJ3Rlc3QnLFxuICAgICAgICBkYXRhYmFzZTogJ3Rlc3QnLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuXG5jcmVhdGVTcGVjKG5ldyBNeVNxbDJRdWVyaWVyUG9vbEl0KCkpO1xuIl19
@@ -0,0 +1,5 @@
1
+ import { AbstractSqlDialect } from '../dialect/index.js';
2
+ export declare class MySqlDialect extends AbstractSqlDialect {
3
+ addValue(values: unknown[], value: unknown): string;
4
+ escape(value: unknown): string;
5
+ }
@@ -0,0 +1,15 @@
1
+ import SqlString from 'sqlstring';
2
+ import { AbstractSqlDialect } from '../dialect/index.js';
3
+ export class MySqlDialect extends AbstractSqlDialect {
4
+ addValue(values, value) {
5
+ if (value instanceof Date) {
6
+ values.push(value);
7
+ return '?';
8
+ }
9
+ return super.addValue(values, value);
10
+ }
11
+ escape(value) {
12
+ return SqlString.escape(value);
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWxEaWFsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL215c3FsL215c3FsRGlhbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsTUFBTSxPQUFPLFlBQWEsU0FBUSxrQkFBa0I7SUFDekMsUUFBUSxDQUFDLE1BQWlCLEVBQUUsS0FBYztRQUNqRCxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVRLE1BQU0sQ0FBQyxLQUFjO1FBQzVCLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3FsU3RyaW5nIGZyb20gJ3NxbHN0cmluZyc7XG5pbXBvcnQgeyBBYnN0cmFjdFNxbERpYWxlY3QgfSBmcm9tICcuLi9kaWFsZWN0L2luZGV4LmpzJztcblxuZXhwb3J0IGNsYXNzIE15U3FsRGlhbGVjdCBleHRlbmRzIEFic3RyYWN0U3FsRGlhbGVjdCB7XG4gIG92ZXJyaWRlIGFkZFZhbHVlKHZhbHVlczogdW5rbm93bltdLCB2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgICAgcmV0dXJuICc/JztcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmFkZFZhbHVlKHZhbHVlcywgdmFsdWUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZXNjYXBlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3FsU3RyaW5nLmVzY2FwZSh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import type { NamingStrategy } from '../type/index.js';
2
+ /**
3
+ * Default naming strategy that returns identifiers as-is.
4
+ */
5
+ export declare class DefaultNamingStrategy implements NamingStrategy {
6
+ tableName(className: string): string;
7
+ columnName(propertyName: string): string;
8
+ joinTableName(source: string, target: string, _propertyName?: string): string;
9
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Default naming strategy that returns identifiers as-is.
3
+ */
4
+ export class DefaultNamingStrategy {
5
+ tableName(className) {
6
+ return className;
7
+ }
8
+ columnName(propertyName) {
9
+ return propertyName;
10
+ }
11
+ joinTableName(source, target, _propertyName) {
12
+ return `${source}_${target}`;
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdE5hbWluZ1N0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hbWluZ1N0cmF0ZWd5L2RlZmF1bHROYW1pbmdTdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsU0FBUyxDQUFDLFNBQWlCO1FBQ3pCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxVQUFVLENBQUMsWUFBb0I7UUFDN0IsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLGFBQXNCO1FBQ2xFLE9BQU8sR0FBRyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOYW1pbmdTdHJhdGVneSB9IGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuXG4vKipcbiAqIERlZmF1bHQgbmFtaW5nIHN0cmF0ZWd5IHRoYXQgcmV0dXJucyBpZGVudGlmaWVycyBhcy1pcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERlZmF1bHROYW1pbmdTdHJhdGVneSBpbXBsZW1lbnRzIE5hbWluZ1N0cmF0ZWd5IHtcbiAgdGFibGVOYW1lKGNsYXNzTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgY29sdW1uTmFtZShwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHByb3BlcnR5TmFtZTtcbiAgfVxuXG4gIGpvaW5UYWJsZU5hbWUoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nLCBfcHJvcGVydHlOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7c291cmNlfV8ke3RhcmdldH1gO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './defaultNamingStrategy.js';
2
+ export * from './snakeCaseNamingStrategy.js';
@@ -0,0 +1,3 @@
1
+ export * from './defaultNamingStrategy.js';
2
+ export * from './snakeCaseNamingStrategy.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmFtaW5nU3RyYXRlZ3kvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0TmFtaW5nU3RyYXRlZ3kuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zbmFrZUNhc2VOYW1pbmdTdHJhdGVneS5qcyc7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import { DefaultNamingStrategy } from './defaultNamingStrategy.js';
2
+ /**
3
+ * Naming strategy that converts identifiers to snake_case.
4
+ */
5
+ export declare class SnakeCaseNamingStrategy extends DefaultNamingStrategy {
6
+ tableName(className: string): string;
7
+ columnName(propertyName: string): string;
8
+ }
@@ -0,0 +1,14 @@
1
+ import { snakeCase } from '../util/index.js';
2
+ import { DefaultNamingStrategy } from './defaultNamingStrategy.js';
3
+ /**
4
+ * Naming strategy that converts identifiers to snake_case.
5
+ */
6
+ export class SnakeCaseNamingStrategy extends DefaultNamingStrategy {
7
+ tableName(className) {
8
+ return snakeCase(className);
9
+ }
10
+ columnName(propertyName) {
11
+ return snakeCase(propertyName);
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25ha2VDYXNlTmFtaW5nU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmFtaW5nU3RyYXRlZ3kvc25ha2VDYXNlTmFtaW5nU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHFCQUFxQjtJQUN2RCxTQUFTLENBQUMsU0FBaUI7UUFDbEMsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVRLFVBQVUsQ0FBQyxZQUFvQjtRQUN0QyxPQUFPLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzbmFrZUNhc2UgfSBmcm9tICcuLi91dGlsL2luZGV4LmpzJztcbmltcG9ydCB7IERlZmF1bHROYW1pbmdTdHJhdGVneSB9IGZyb20gJy4vZGVmYXVsdE5hbWluZ1N0cmF0ZWd5LmpzJztcblxuLyoqXG4gKiBOYW1pbmcgc3RyYXRlZ3kgdGhhdCBjb252ZXJ0cyBpZGVudGlmaWVycyB0byBzbmFrZV9jYXNlLlxuICovXG5leHBvcnQgY2xhc3MgU25ha2VDYXNlTmFtaW5nU3RyYXRlZ3kgZXh0ZW5kcyBEZWZhdWx0TmFtaW5nU3RyYXRlZ3kge1xuICBvdmVycmlkZSB0YWJsZU5hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzbmFrZUNhc2UoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGNvbHVtbk5hbWUocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzbmFrZUNhc2UocHJvcGVydHlOYW1lKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { Querier, QuerierPool } from './type';
1
+ import type { Querier, QuerierPool } from './type/index.js';
2
2
  export declare function setQuerierPool<T extends QuerierPool = QuerierPool>(pool: T): void;
3
3
  export declare function getQuerierPool(): QuerierPool;
4
4
  export declare function getQuerier(): Promise<Querier>;