@uql/core 1.0.11 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/CHANGELOG.md +243 -0
  2. package/LICENSE.md +2 -2
  3. package/dist/CHANGELOG.md +186 -0
  4. package/dist/README.md +413 -0
  5. package/dist/browser/http/bus.d.ts +3 -0
  6. package/dist/browser/http/bus.js +14 -0
  7. package/dist/browser/http/http.d.ts +6 -0
  8. package/dist/browser/http/http.js +45 -0
  9. package/dist/browser/http/index.d.ts +2 -0
  10. package/dist/browser/http/index.js +3 -0
  11. package/dist/browser/index.d.ts +4 -0
  12. package/dist/browser/index.js +5 -0
  13. package/dist/browser/options.d.ts +4 -0
  14. package/dist/browser/options.js +14 -0
  15. package/dist/browser/querier/genericClientRepository.d.ts +17 -0
  16. package/dist/browser/querier/genericClientRepository.js +39 -0
  17. package/dist/browser/querier/httpQuerier.d.ts +20 -0
  18. package/dist/browser/querier/httpQuerier.js +71 -0
  19. package/dist/browser/querier/index.d.ts +3 -0
  20. package/dist/browser/querier/index.js +4 -0
  21. package/dist/browser/querier/querier.util.d.ts +2 -0
  22. package/dist/browser/querier/querier.util.js +17 -0
  23. package/dist/browser/type/clientQuerier.d.ts +16 -0
  24. package/dist/browser/type/clientQuerier.js +2 -0
  25. package/dist/browser/type/clientQuerierPool.d.ts +4 -0
  26. package/dist/browser/type/clientQuerierPool.js +2 -0
  27. package/dist/browser/type/clientRepository.d.ts +13 -0
  28. package/dist/browser/type/clientRepository.js +2 -0
  29. package/dist/browser/type/index.d.ts +4 -0
  30. package/dist/browser/type/index.js +5 -0
  31. package/dist/browser/type/request.d.ts +28 -0
  32. package/dist/browser/type/request.js +2 -0
  33. package/dist/browser/uql-browser.min.js +2150 -0
  34. package/dist/browser/uql-browser.min.js.map +1 -0
  35. package/dist/dialect/abstractDialect.d.ts +16 -0
  36. package/dist/dialect/abstractDialect.js +28 -0
  37. package/dist/dialect/abstractSqlDialect.d.ts +47 -0
  38. package/dist/dialect/abstractSqlDialect.js +650 -0
  39. package/dist/dialect/index.d.ts +3 -0
  40. package/dist/dialect/index.js +4 -0
  41. package/dist/dialect/queryContext.d.ts +48 -0
  42. package/dist/dialect/queryContext.js +65 -0
  43. package/{entity → dist/entity}/decorator/definition.d.ts +3 -3
  44. package/dist/entity/decorator/definition.js +214 -0
  45. package/{entity → dist/entity}/decorator/entity.d.ts +1 -1
  46. package/dist/entity/decorator/entity.js +7 -0
  47. package/{entity → dist/entity}/decorator/field.d.ts +1 -1
  48. package/dist/entity/decorator/field.js +8 -0
  49. package/{entity → dist/entity}/decorator/id.d.ts +1 -1
  50. package/dist/entity/decorator/id.js +8 -0
  51. package/dist/entity/decorator/index.d.ts +5 -0
  52. package/dist/entity/decorator/index.js +6 -0
  53. package/{entity → dist/entity}/decorator/relation.d.ts +2 -2
  54. package/dist/entity/decorator/relation.js +20 -0
  55. package/dist/entity/index.d.ts +1 -0
  56. package/dist/entity/index.js +2 -0
  57. package/dist/express/index.d.ts +2 -0
  58. package/dist/express/index.js +3 -0
  59. package/dist/express/querierMiddleware.d.ts +26 -0
  60. package/dist/express/querierMiddleware.js +190 -0
  61. package/dist/express/query.util.d.ts +2 -0
  62. package/dist/express/query.util.js +19 -0
  63. package/dist/index.d.ts +9 -0
  64. package/dist/index.js +10 -0
  65. package/dist/maria/index.d.ts +3 -0
  66. package/dist/maria/index.js +4 -0
  67. package/dist/maria/mariaDialect.d.ts +8 -0
  68. package/dist/maria/mariaDialect.js +38 -0
  69. package/dist/maria/mariaQuerierPool.test.d.ts +5 -0
  70. package/dist/maria/mariaQuerierPool.test.js +19 -0
  71. package/dist/maria/mariadbQuerier.d.ts +17 -0
  72. package/dist/maria/mariadbQuerier.js +39 -0
  73. package/dist/maria/mariadbQuerier.test.d.ts +4 -0
  74. package/dist/maria/mariadbQuerier.test.js +19 -0
  75. package/dist/maria/mariadbQuerierPool.d.ts +10 -0
  76. package/dist/maria/mariadbQuerierPool.js +17 -0
  77. package/dist/migrate/cli.d.ts +2 -0
  78. package/dist/migrate/cli.js +254 -0
  79. package/dist/migrate/generator/index.d.ts +4 -0
  80. package/dist/migrate/generator/index.js +5 -0
  81. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +12 -0
  82. package/dist/migrate/generator/mongoSchemaGenerator.js +100 -0
  83. package/dist/migrate/generator/mysqlSchemaGenerator.d.ts +14 -0
  84. package/dist/migrate/generator/mysqlSchemaGenerator.js +81 -0
  85. package/dist/migrate/generator/postgresSchemaGenerator.d.ts +18 -0
  86. package/dist/migrate/generator/postgresSchemaGenerator.js +111 -0
  87. package/dist/migrate/generator/sqliteSchemaGenerator.d.ts +14 -0
  88. package/dist/migrate/generator/sqliteSchemaGenerator.js +68 -0
  89. package/dist/migrate/index.d.ts +12 -0
  90. package/dist/migrate/index.js +17 -0
  91. package/dist/migrate/introspection/index.d.ts +4 -0
  92. package/dist/migrate/introspection/index.js +5 -0
  93. package/dist/migrate/introspection/mongoIntrospector.d.ts +8 -0
  94. package/dist/migrate/introspection/mongoIntrospector.js +46 -0
  95. package/dist/migrate/introspection/mysqlIntrospector.d.ts +25 -0
  96. package/dist/migrate/introspection/mysqlIntrospector.js +220 -0
  97. package/dist/migrate/introspection/postgresIntrospector.d.ts +21 -0
  98. package/dist/migrate/introspection/postgresIntrospector.js +269 -0
  99. package/dist/migrate/introspection/sqliteIntrospector.d.ts +23 -0
  100. package/dist/migrate/introspection/sqliteIntrospector.js +212 -0
  101. package/dist/migrate/migrator-mongo.test.d.ts +1 -0
  102. package/dist/migrate/migrator-mongo.test.js +54 -0
  103. package/dist/migrate/migrator.d.ts +133 -0
  104. package/dist/migrate/migrator.js +600 -0
  105. package/dist/migrate/migrator.test.d.ts +1 -0
  106. package/dist/migrate/migrator.test.js +106 -0
  107. package/dist/migrate/schemaGenerator.d.ts +78 -0
  108. package/dist/migrate/schemaGenerator.js +363 -0
  109. package/dist/migrate/storage/databaseStorage.d.ts +24 -0
  110. package/dist/migrate/storage/databaseStorage.js +77 -0
  111. package/dist/migrate/storage/index.d.ts +2 -0
  112. package/dist/migrate/storage/index.js +3 -0
  113. package/dist/migrate/storage/jsonStorage.d.ts +15 -0
  114. package/dist/migrate/storage/jsonStorage.js +51 -0
  115. package/dist/migrate/type.d.ts +1 -0
  116. package/dist/migrate/type.js +2 -0
  117. package/dist/mongo/index.d.ts +3 -0
  118. package/dist/mongo/index.js +4 -0
  119. package/dist/mongo/mongoDialect.d.ts +34 -0
  120. package/dist/mongo/mongoDialect.js +163 -0
  121. package/dist/mongo/mongodbQuerier.d.ts +28 -0
  122. package/dist/mongo/mongodbQuerier.js +204 -0
  123. package/dist/mongo/mongodbQuerier.test.d.ts +1 -0
  124. package/dist/mongo/mongodbQuerier.test.js +36 -0
  125. package/dist/mongo/mongodbQuerierPool.d.ts +10 -0
  126. package/dist/mongo/mongodbQuerierPool.js +20 -0
  127. package/dist/mongo/mongodbQuerierPool.test.d.ts +1 -0
  128. package/dist/mongo/mongodbQuerierPool.test.js +21 -0
  129. package/dist/mysql/index.d.ts +3 -0
  130. package/dist/mysql/index.js +4 -0
  131. package/dist/mysql/mysql2Querier.d.ts +17 -0
  132. package/dist/mysql/mysql2Querier.js +43 -0
  133. package/dist/mysql/mysql2Querier.test.d.ts +4 -0
  134. package/dist/mysql/mysql2Querier.test.js +16 -0
  135. package/dist/mysql/mysql2QuerierPool.d.ts +10 -0
  136. package/dist/mysql/mysql2QuerierPool.js +17 -0
  137. package/dist/mysql/mysql2QuerierPool.test.d.ts +5 -0
  138. package/dist/mysql/mysql2QuerierPool.test.js +16 -0
  139. package/dist/mysql/mysqlDialect.d.ts +5 -0
  140. package/dist/mysql/mysqlDialect.js +15 -0
  141. package/dist/namingStrategy/defaultNamingStrategy.d.ts +9 -0
  142. package/dist/namingStrategy/defaultNamingStrategy.js +15 -0
  143. package/dist/namingStrategy/index.d.ts +2 -0
  144. package/dist/namingStrategy/index.js +3 -0
  145. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +8 -0
  146. package/dist/namingStrategy/snakeCaseNamingStrategy.js +14 -0
  147. package/{options.d.ts → dist/options.d.ts} +1 -1
  148. package/dist/options.js +14 -0
  149. package/dist/package.json +131 -0
  150. package/dist/postgres/index.d.ts +3 -0
  151. package/dist/postgres/index.js +4 -0
  152. package/dist/postgres/pgQuerier.d.ts +17 -0
  153. package/dist/postgres/pgQuerier.js +39 -0
  154. package/dist/postgres/pgQuerier.test.d.ts +4 -0
  155. package/dist/postgres/pgQuerier.test.js +20 -0
  156. package/dist/postgres/pgQuerierPool.d.ts +10 -0
  157. package/dist/postgres/pgQuerierPool.js +17 -0
  158. package/dist/postgres/pgQuerierPool.test.d.ts +5 -0
  159. package/dist/postgres/pgQuerierPool.test.js +23 -0
  160. package/dist/postgres/postgresDialect.d.ts +13 -0
  161. package/dist/postgres/postgresDialect.js +110 -0
  162. package/dist/querier/abstractQuerier-test.d.ts +45 -0
  163. package/dist/querier/abstractQuerier-test.js +461 -0
  164. package/dist/querier/abstractQuerier.d.ts +50 -0
  165. package/dist/querier/abstractQuerier.js +278 -0
  166. package/dist/querier/abstractQuerierPool-test.d.ts +9 -0
  167. package/dist/querier/abstractQuerierPool-test.js +18 -0
  168. package/dist/querier/abstractQuerierPool.d.ts +14 -0
  169. package/dist/querier/abstractQuerierPool.js +9 -0
  170. package/dist/querier/abstractSqlQuerier-test.d.ts +9 -0
  171. package/dist/querier/abstractSqlQuerier-test.js +16 -0
  172. package/dist/querier/abstractSqlQuerier.d.ts +28 -0
  173. package/dist/querier/abstractSqlQuerier.js +133 -0
  174. package/dist/querier/decorator/index.d.ts +3 -0
  175. package/dist/querier/decorator/index.js +4 -0
  176. package/dist/querier/decorator/injectQuerier.d.ts +3 -0
  177. package/dist/querier/decorator/injectQuerier.js +33 -0
  178. package/dist/querier/decorator/serialized.d.ts +6 -0
  179. package/dist/querier/decorator/serialized.js +14 -0
  180. package/{querier → dist/querier}/decorator/transactional.d.ts +1 -1
  181. package/dist/querier/decorator/transactional.js +48 -0
  182. package/dist/querier/index.d.ts +4 -0
  183. package/dist/querier/index.js +5 -0
  184. package/dist/repository/genericRepository.d.ts +20 -0
  185. package/dist/repository/genericRepository.js +51 -0
  186. package/dist/repository/index.d.ts +1 -0
  187. package/dist/repository/index.js +2 -0
  188. package/dist/sqlite/index.d.ts +3 -0
  189. package/dist/sqlite/index.js +4 -0
  190. package/dist/sqlite/sqliteDialect.d.ts +10 -0
  191. package/dist/sqlite/sqliteDialect.js +48 -0
  192. package/dist/sqlite/sqliteQuerier.d.ts +15 -0
  193. package/dist/sqlite/sqliteQuerier.js +33 -0
  194. package/dist/sqlite/sqliteQuerier.test.d.ts +5 -0
  195. package/dist/sqlite/sqliteQuerier.test.js +19 -0
  196. package/dist/sqlite/sqliteQuerierPool.d.ts +14 -0
  197. package/dist/sqlite/sqliteQuerierPool.js +34 -0
  198. package/dist/sqlite/sqliteQuerierPool.test.d.ts +5 -0
  199. package/dist/sqlite/sqliteQuerierPool.test.js +10 -0
  200. package/dist/test/entityMock.d.ts +164 -0
  201. package/dist/test/entityMock.js +554 -0
  202. package/dist/test/index.d.ts +3 -0
  203. package/dist/test/index.js +4 -0
  204. package/dist/test/it.util.d.ts +4 -0
  205. package/dist/test/it.util.js +55 -0
  206. package/dist/test/spec.util.d.ts +14 -0
  207. package/dist/test/spec.util.js +50 -0
  208. package/dist/type/entity.d.ts +169 -0
  209. package/dist/type/entity.js +5 -0
  210. package/dist/type/index.d.ts +9 -0
  211. package/dist/type/index.js +10 -0
  212. package/dist/type/migration.d.ts +213 -0
  213. package/dist/type/migration.js +2 -0
  214. package/dist/type/namingStrategy.d.ts +17 -0
  215. package/dist/type/namingStrategy.js +2 -0
  216. package/dist/type/querier.d.ts +96 -0
  217. package/dist/type/querier.js +11 -0
  218. package/dist/type/querierPool.d.ts +22 -0
  219. package/dist/type/querierPool.js +2 -0
  220. package/dist/type/query.d.ts +456 -0
  221. package/dist/type/query.js +9 -0
  222. package/{type → dist/type}/repository.d.ts +43 -36
  223. package/dist/type/repository.js +2 -0
  224. package/{type → dist/type}/universalQuerier.d.ts +50 -28
  225. package/dist/type/universalQuerier.js +2 -0
  226. package/dist/type/utility.d.ts +13 -0
  227. package/dist/type/utility.js +2 -0
  228. package/dist/util/dialect.util.d.ts +12 -0
  229. package/dist/util/dialect.util.js +93 -0
  230. package/dist/util/index.d.ts +5 -0
  231. package/dist/util/index.js +6 -0
  232. package/dist/util/object.util.d.ts +7 -0
  233. package/dist/util/object.util.js +19 -0
  234. package/dist/util/raw.d.ts +8 -0
  235. package/dist/util/raw.js +11 -0
  236. package/dist/util/sql.util.d.ts +13 -0
  237. package/dist/util/sql.util.js +78 -0
  238. package/{util → dist/util}/string.util.d.ts +1 -0
  239. package/dist/util/string.util.js +34 -0
  240. package/package.json +83 -15
  241. package/src/@types/index.d.ts +1 -0
  242. package/src/@types/jest.d.ts +6 -0
  243. package/src/browser/http/bus.spec.ts +22 -0
  244. package/src/browser/http/bus.ts +17 -0
  245. package/src/browser/http/http.spec.ts +70 -0
  246. package/src/browser/http/http.ts +55 -0
  247. package/src/browser/http/index.ts +2 -0
  248. package/src/browser/index.ts +4 -0
  249. package/src/browser/options.spec.ts +37 -0
  250. package/src/browser/options.ts +18 -0
  251. package/src/browser/querier/genericClientRepository.spec.ts +105 -0
  252. package/src/browser/querier/genericClientRepository.ts +49 -0
  253. package/src/browser/querier/httpQuerier.ts +82 -0
  254. package/src/browser/querier/index.ts +3 -0
  255. package/src/browser/querier/querier.util.spec.ts +35 -0
  256. package/src/browser/querier/querier.util.ts +18 -0
  257. package/src/browser/type/clientQuerier.ts +45 -0
  258. package/src/browser/type/clientQuerierPool.ts +5 -0
  259. package/src/browser/type/clientRepository.ts +22 -0
  260. package/src/browser/type/index.ts +4 -0
  261. package/src/browser/type/request.ts +25 -0
  262. package/src/dialect/abstractDialect.ts +28 -0
  263. package/src/dialect/abstractSqlDialect-spec.ts +1309 -0
  264. package/src/dialect/abstractSqlDialect.ts +805 -0
  265. package/src/dialect/index.ts +3 -0
  266. package/src/dialect/namingStrategy.spec.ts +52 -0
  267. package/src/dialect/queryContext.ts +69 -0
  268. package/src/entity/decorator/definition.spec.ts +736 -0
  269. package/src/entity/decorator/definition.ts +265 -0
  270. package/src/entity/decorator/entity.ts +8 -0
  271. package/src/entity/decorator/field.ts +9 -0
  272. package/src/entity/decorator/id.ts +9 -0
  273. package/src/entity/decorator/index.ts +5 -0
  274. package/src/entity/decorator/relation.spec.ts +41 -0
  275. package/src/entity/decorator/relation.ts +34 -0
  276. package/src/entity/index.ts +1 -0
  277. package/src/express/@types/express.d.ts +8 -0
  278. package/src/express/@types/index.d.ts +1 -0
  279. package/src/express/index.ts +2 -0
  280. package/src/express/querierMiddleware.ts +217 -0
  281. package/src/express/query.util.spec.ts +40 -0
  282. package/src/express/query.util.ts +21 -0
  283. package/src/index.ts +9 -0
  284. package/src/maria/index.ts +3 -0
  285. package/src/maria/mariaDialect.spec.ts +207 -0
  286. package/src/maria/mariaDialect.ts +42 -0
  287. package/src/maria/mariaQuerierPool.test.ts +23 -0
  288. package/src/maria/mariadbQuerier.test.ts +23 -0
  289. package/src/maria/mariadbQuerier.ts +45 -0
  290. package/src/maria/mariadbQuerierPool.ts +21 -0
  291. package/src/migrate/cli.ts +301 -0
  292. package/src/migrate/generator/index.ts +4 -0
  293. package/src/migrate/generator/mongoSchemaGenerator.spec.ts +112 -0
  294. package/src/migrate/generator/mongoSchemaGenerator.ts +115 -0
  295. package/src/migrate/generator/mysqlSchemaGenerator.spec.ts +34 -0
  296. package/src/migrate/generator/mysqlSchemaGenerator.ts +92 -0
  297. package/src/migrate/generator/postgresSchemaGenerator.spec.ts +44 -0
  298. package/src/migrate/generator/postgresSchemaGenerator.ts +127 -0
  299. package/src/migrate/generator/sqliteSchemaGenerator.spec.ts +33 -0
  300. package/src/migrate/generator/sqliteSchemaGenerator.ts +81 -0
  301. package/src/migrate/index.ts +41 -0
  302. package/src/migrate/introspection/index.ts +4 -0
  303. package/src/migrate/introspection/mongoIntrospector.spec.ts +75 -0
  304. package/src/migrate/introspection/mongoIntrospector.ts +47 -0
  305. package/src/migrate/introspection/mysqlIntrospector.spec.ts +113 -0
  306. package/src/migrate/introspection/mysqlIntrospector.ts +278 -0
  307. package/src/migrate/introspection/postgresIntrospector.spec.ts +112 -0
  308. package/src/migrate/introspection/postgresIntrospector.ts +329 -0
  309. package/src/migrate/introspection/sqliteIntrospector.spec.ts +112 -0
  310. package/src/migrate/introspection/sqliteIntrospector.ts +296 -0
  311. package/src/migrate/migrator-mongo.test.ts +54 -0
  312. package/src/migrate/migrator.spec.ts +255 -0
  313. package/src/migrate/migrator.test.ts +94 -0
  314. package/src/migrate/migrator.ts +719 -0
  315. package/src/migrate/namingStrategy.spec.ts +22 -0
  316. package/src/migrate/schemaGenerator-advanced.spec.ts +138 -0
  317. package/src/migrate/schemaGenerator.spec.ts +190 -0
  318. package/src/migrate/schemaGenerator.ts +478 -0
  319. package/src/migrate/storage/databaseStorage.spec.ts +69 -0
  320. package/src/migrate/storage/databaseStorage.ts +100 -0
  321. package/src/migrate/storage/index.ts +2 -0
  322. package/src/migrate/storage/jsonStorage.ts +58 -0
  323. package/src/migrate/type.ts +1 -0
  324. package/src/mongo/index.ts +3 -0
  325. package/src/mongo/mongoDialect.spec.ts +251 -0
  326. package/src/mongo/mongoDialect.ts +238 -0
  327. package/src/mongo/mongodbQuerier.test.ts +45 -0
  328. package/src/mongo/mongodbQuerier.ts +256 -0
  329. package/src/mongo/mongodbQuerierPool.test.ts +25 -0
  330. package/src/mongo/mongodbQuerierPool.ts +24 -0
  331. package/src/mysql/index.ts +3 -0
  332. package/src/mysql/mysql2Querier.test.ts +20 -0
  333. package/src/mysql/mysql2Querier.ts +49 -0
  334. package/src/mysql/mysql2QuerierPool.test.ts +20 -0
  335. package/src/mysql/mysql2QuerierPool.ts +21 -0
  336. package/src/mysql/mysqlDialect.spec.ts +20 -0
  337. package/src/mysql/mysqlDialect.ts +16 -0
  338. package/src/namingStrategy/defaultNamingStrategy.ts +18 -0
  339. package/src/namingStrategy/index.spec.ts +36 -0
  340. package/src/namingStrategy/index.ts +2 -0
  341. package/src/namingStrategy/snakeCaseNamingStrategy.ts +15 -0
  342. package/src/options.spec.ts +41 -0
  343. package/src/options.ts +18 -0
  344. package/src/postgres/index.ts +3 -0
  345. package/src/postgres/manual-types.d.ts +4 -0
  346. package/src/postgres/pgQuerier.test.ts +25 -0
  347. package/src/postgres/pgQuerier.ts +45 -0
  348. package/src/postgres/pgQuerierPool.test.ts +28 -0
  349. package/src/postgres/pgQuerierPool.ts +21 -0
  350. package/src/postgres/postgresDialect.spec.ts +428 -0
  351. package/src/postgres/postgresDialect.ts +144 -0
  352. package/src/querier/abstractQuerier-test.ts +584 -0
  353. package/src/querier/abstractQuerier.ts +353 -0
  354. package/src/querier/abstractQuerierPool-test.ts +20 -0
  355. package/src/querier/abstractQuerierPool.ts +18 -0
  356. package/src/querier/abstractSqlQuerier-spec.ts +979 -0
  357. package/src/querier/abstractSqlQuerier-test.ts +21 -0
  358. package/src/querier/abstractSqlQuerier.ts +138 -0
  359. package/src/querier/decorator/index.ts +3 -0
  360. package/src/querier/decorator/injectQuerier.spec.ts +74 -0
  361. package/src/querier/decorator/injectQuerier.ts +45 -0
  362. package/src/querier/decorator/serialized.spec.ts +98 -0
  363. package/src/querier/decorator/serialized.ts +13 -0
  364. package/src/querier/decorator/transactional.spec.ts +240 -0
  365. package/src/querier/decorator/transactional.ts +56 -0
  366. package/src/querier/index.ts +4 -0
  367. package/src/repository/genericRepository.spec.ts +111 -0
  368. package/src/repository/genericRepository.ts +74 -0
  369. package/src/repository/index.ts +1 -0
  370. package/src/sqlite/index.ts +3 -0
  371. package/src/sqlite/manual-types.d.ts +4 -0
  372. package/src/sqlite/sqliteDialect.spec.ts +155 -0
  373. package/src/sqlite/sqliteDialect.ts +76 -0
  374. package/src/sqlite/sqliteQuerier.spec.ts +36 -0
  375. package/src/sqlite/sqliteQuerier.test.ts +21 -0
  376. package/src/sqlite/sqliteQuerier.ts +37 -0
  377. package/src/sqlite/sqliteQuerierPool.test.ts +12 -0
  378. package/src/sqlite/sqliteQuerierPool.ts +38 -0
  379. package/src/test/entityMock.ts +375 -0
  380. package/src/test/index.ts +3 -0
  381. package/src/test/it.util.ts +69 -0
  382. package/src/test/spec.util.ts +57 -0
  383. package/src/type/entity.ts +218 -0
  384. package/src/type/index.ts +9 -0
  385. package/src/type/migration.ts +241 -0
  386. package/src/type/namingStrategy.ts +17 -0
  387. package/src/type/querier.ts +143 -0
  388. package/src/type/querierPool.ts +26 -0
  389. package/src/type/query.ts +506 -0
  390. package/src/type/repository.ts +142 -0
  391. package/src/type/universalQuerier.ts +133 -0
  392. package/src/type/utility.ts +21 -0
  393. package/src/util/dialect.util-extra.spec.ts +96 -0
  394. package/src/util/dialect.util.spec.ts +23 -0
  395. package/src/util/dialect.util.ts +134 -0
  396. package/src/util/index.ts +5 -0
  397. package/src/util/object.util.spec.ts +29 -0
  398. package/src/util/object.util.ts +27 -0
  399. package/src/util/raw.ts +11 -0
  400. package/src/util/sql.util-extra.spec.ts +17 -0
  401. package/src/util/sql.util.spec.ts +208 -0
  402. package/src/util/sql.util.ts +104 -0
  403. package/src/util/string.util.spec.ts +46 -0
  404. package/src/util/string.util.ts +35 -0
  405. package/tsconfig.build.json +5 -0
  406. package/tsconfig.json +8 -0
  407. package/README.md +0 -179
  408. package/dialect/abstractSqlDialect.d.ts +0 -30
  409. package/dialect/abstractSqlDialect.js +0 -365
  410. package/dialect/index.d.ts +0 -4
  411. package/dialect/index.js +0 -8
  412. package/dialect/mysqlDialect.d.ts +0 -6
  413. package/dialect/mysqlDialect.js +0 -21
  414. package/dialect/postgresDialect.d.ts +0 -8
  415. package/dialect/postgresDialect.js +0 -44
  416. package/dialect/sqliteDialect.d.ts +0 -4
  417. package/dialect/sqliteDialect.js +0 -11
  418. package/entity/decorator/definition.js +0 -223
  419. package/entity/decorator/entity.js +0 -11
  420. package/entity/decorator/field.js +0 -12
  421. package/entity/decorator/id.js +0 -12
  422. package/entity/decorator/index.d.ts +0 -5
  423. package/entity/decorator/index.js +0 -12
  424. package/entity/decorator/relation.js +0 -27
  425. package/entity/index.d.ts +0 -1
  426. package/entity/index.js +0 -5
  427. package/index.d.ts +0 -1
  428. package/index.js +0 -5
  429. package/options.js +0 -20
  430. package/querier/abstractQuerier.d.ts +0 -30
  431. package/querier/abstractQuerier.js +0 -230
  432. package/querier/abstractSqlQuerier.d.ts +0 -27
  433. package/querier/abstractSqlQuerier.js +0 -88
  434. package/querier/decorator/index.d.ts +0 -2
  435. package/querier/decorator/index.js +0 -6
  436. package/querier/decorator/injectQuerier.d.ts +0 -3
  437. package/querier/decorator/injectQuerier.js +0 -39
  438. package/querier/decorator/transactional.js +0 -52
  439. package/querier/index.d.ts +0 -3
  440. package/querier/index.js +0 -7
  441. package/repository/genericRepository.d.ts +0 -19
  442. package/repository/genericRepository.js +0 -52
  443. package/repository/index.d.ts +0 -1
  444. package/repository/index.js +0 -5
  445. package/type/entity.d.ts +0 -76
  446. package/type/entity.js +0 -5
  447. package/type/index.d.ts +0 -7
  448. package/type/index.js +0 -11
  449. package/type/querier.d.ts +0 -53
  450. package/type/querier.js +0 -3
  451. package/type/querierPool.d.ts +0 -18
  452. package/type/querierPool.js +0 -3
  453. package/type/query.d.ts +0 -394
  454. package/type/query.js +0 -13
  455. package/type/repository.js +0 -3
  456. package/type/universalQuerier.js +0 -3
  457. package/type/utility.d.ts +0 -12
  458. package/type/utility.js +0 -3
  459. package/util/dialect.util.d.ts +0 -17
  460. package/util/dialect.util.js +0 -114
  461. package/util/index.d.ts +0 -5
  462. package/util/index.js +0 -9
  463. package/util/object.util.d.ts +0 -3
  464. package/util/object.util.js +0 -22
  465. package/util/raw.d.ts +0 -2
  466. package/util/raw.js +0 -9
  467. package/util/sql.util.d.ts +0 -2
  468. package/util/sql.util.js +0 -55
  469. package/util/string.util.js +0 -20
@@ -0,0 +1,22 @@
1
+ import type { Dialect, ExtraOptions, Querier } from './querier.js';
2
+ /**
3
+ * querier pool.
4
+ */
5
+ export type QuerierPool<Q extends Querier = Querier> = {
6
+ /**
7
+ * the database dialect.
8
+ */
9
+ readonly dialect: Dialect;
10
+ /**
11
+ * extra options
12
+ */
13
+ readonly extra?: ExtraOptions;
14
+ /**
15
+ * get a querier from the pool.
16
+ */
17
+ getQuerier: () => Promise<Q>;
18
+ /**
19
+ * end the pool.
20
+ */
21
+ end(): Promise<void>;
22
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllclBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZS9xdWVyaWVyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaWFsZWN0LCBFeHRyYU9wdGlvbnMsIFF1ZXJpZXIgfSBmcm9tICcuL3F1ZXJpZXIuanMnO1xuXG4vKipcbiAqIHF1ZXJpZXIgcG9vbC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcmllclBvb2w8USBleHRlbmRzIFF1ZXJpZXIgPSBRdWVyaWVyPiA9IHtcbiAgLyoqXG4gICAqIHRoZSBkYXRhYmFzZSBkaWFsZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGlhbGVjdDogRGlhbGVjdDtcblxuICAvKipcbiAgICogZXh0cmEgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmE/OiBFeHRyYU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIGdldCBhIHF1ZXJpZXIgZnJvbSB0aGUgcG9vbC5cbiAgICovXG4gIGdldFF1ZXJpZXI6ICgpID0+IFByb21pc2U8UT47XG5cbiAgLyoqXG4gICAqIGVuZCB0aGUgcG9vbC5cbiAgICovXG4gIGVuZCgpOiBQcm9taXNlPHZvaWQ+O1xufTtcbiJdfQ==
@@ -0,0 +1,456 @@
1
+ import type { FieldKey, IdValue, Key, RelationKey } from './entity.js';
2
+ import type { BooleanLike, ExpandScalar, Scalar, Type, Unpacked } from './utility.js';
3
+ export type QueryOptions = {
4
+ /**
5
+ * use or omit `softDelete` attribute.
6
+ */
7
+ softDelete?: boolean;
8
+ /**
9
+ * prefix the query with this.
10
+ */
11
+ prefix?: string;
12
+ /**
13
+ * automatically infer the prefix for the query.
14
+ */
15
+ autoPrefix?: boolean;
16
+ };
17
+ export type QuerySelectOptions = {
18
+ /**
19
+ * prefix the query with this.
20
+ */
21
+ prefix?: string;
22
+ /**
23
+ * automatically add the prefix for the alias.
24
+ */
25
+ autoPrefixAlias?: boolean;
26
+ };
27
+ /**
28
+ * query selection as an array.
29
+ */
30
+ export type QuerySelectArray<E> = (Key<E> | QueryRaw)[];
31
+ /**
32
+ * query selection as a map.
33
+ */
34
+ export type QuerySelectMap<E> = QuerySelectFieldMap<E> | QuerySelectRelationMap<E>;
35
+ /**
36
+ * query selection.
37
+ */
38
+ export type QuerySelect<E> = QuerySelectArray<E> | QuerySelectMap<E>;
39
+ /**
40
+ * query selection of fields as a map.
41
+ */
42
+ export type QuerySelectFieldMap<E> = {
43
+ [K in FieldKey<E>]?: BooleanLike;
44
+ };
45
+ /**
46
+ * query conflict paths map.
47
+ */
48
+ export type QueryConflictPathsMap<E> = {
49
+ [K in FieldKey<E>]?: true;
50
+ };
51
+ /**
52
+ * query conflict paths.
53
+ */
54
+ export type QueryConflictPaths<E> = QueryConflictPathsMap<E>;
55
+ /**
56
+ * query selection of relations as a map.
57
+ */
58
+ export type QuerySelectRelationMap<E> = {
59
+ [K in RelationKey<E>]?: BooleanLike | Key<Unpacked<E[K]>>[] | QuerySelectRelationOptions<E[K]>;
60
+ };
61
+ /**
62
+ * options to select a relation.
63
+ */
64
+ export type QuerySelectRelationOptions<E> = (E extends unknown[] ? Query<Unpacked<E>> : QueryUnique<Unpacked<E>>) & {
65
+ $required?: boolean;
66
+ };
67
+ /**
68
+ * options for full-text-search operator.
69
+ */
70
+ export type QueryTextSearchOptions<E> = {
71
+ /**
72
+ * text to search for.
73
+ */
74
+ $value: string;
75
+ /**
76
+ * list of fields to search on.
77
+ */
78
+ $fields?: FieldKey<E>[];
79
+ };
80
+ /**
81
+ * comparison by fields.
82
+ */
83
+ export type QueryWhereFieldMap<E> = {
84
+ [K in FieldKey<E>]?: QueryWhereFieldValue<E[K]>;
85
+ };
86
+ /**
87
+ * complex operators.
88
+ */
89
+ export type QueryWhereMap<E> = QueryWhereFieldMap<E> & QueryWhereRootOperator<E>;
90
+ export type QueryWhereRootOperator<E> = {
91
+ /**
92
+ * joins query clauses with a logical `AND`, returns records that match all the clauses.
93
+ */
94
+ $and?: QueryWhereArray<E>;
95
+ /**
96
+ * joins query clauses with a logical `OR`, returns records that match any of the clauses.
97
+ */
98
+ $or?: QueryWhereArray<E>;
99
+ /**
100
+ * joins query clauses with a logical `AND`, returns records that do not match all the clauses.
101
+ */
102
+ $not?: QueryWhereArray<E>;
103
+ /**
104
+ * joins query clauses with a logical `OR`, returns records that do not match any of the clauses.
105
+ */
106
+ $nor?: QueryWhereArray<E>;
107
+ /**
108
+ * whether the specified fields match against a full-text search of the given string.
109
+ */
110
+ $text?: QueryTextSearchOptions<E>;
111
+ /**
112
+ * whether the record exists in the given sub-query.
113
+ */
114
+ $exists?: QueryRaw;
115
+ /**
116
+ * whether the record does not exists in the given sub-query.
117
+ */
118
+ $nexists?: QueryRaw;
119
+ };
120
+ export type QueryWhereFieldOperatorMap<T> = {
121
+ /**
122
+ * whether a value is equal to the given value.
123
+ */
124
+ $eq?: ExpandScalar<T>;
125
+ /**
126
+ * whether a value is not equal to the given value.
127
+ */
128
+ $ne?: ExpandScalar<T>;
129
+ /**
130
+ * negates the given comparison.
131
+ */
132
+ $not?: QueryWhereFieldValue<T>;
133
+ /**
134
+ * whether a value is less than the given value.
135
+ */
136
+ $lt?: ExpandScalar<T>;
137
+ /**
138
+ * whether a value is less than or equal to the given value.
139
+ */
140
+ $lte?: ExpandScalar<T>;
141
+ /**
142
+ * whether a value is greater than the given value.
143
+ */
144
+ $gt?: ExpandScalar<T>;
145
+ /**
146
+ * whether a value is greater than or equal to the given value.
147
+ */
148
+ $gte?: ExpandScalar<T>;
149
+ /**
150
+ * whether a string begins with the given string (case sensitive).
151
+ */
152
+ $startsWith?: string;
153
+ /**
154
+ * whether a string begins with the given string (case insensitive).
155
+ */
156
+ $istartsWith?: string;
157
+ /**
158
+ * whether a string ends with the given string (case sensitive).
159
+ */
160
+ $endsWith?: string;
161
+ /**
162
+ * whether a string ends with the given string (case insensitive).
163
+ */
164
+ $iendsWith?: string;
165
+ /**
166
+ * whether a string is contained within the given string (case sensitive).
167
+ */
168
+ $includes?: string;
169
+ /**
170
+ * whether a string is contained within the given string (case insensitive).
171
+ */
172
+ $iincludes?: string;
173
+ /**
174
+ * whether a string fulfills the given pattern (case sensitive).
175
+ */
176
+ $like?: string;
177
+ /**
178
+ * whether a string fulfills the given pattern (case insensitive).
179
+ */
180
+ $ilike?: string;
181
+ /**
182
+ * whether a string matches the given regular expression.
183
+ */
184
+ $regex?: string;
185
+ /**
186
+ * whether a value matches any of the given values.
187
+ */
188
+ $in?: ExpandScalar<T>[];
189
+ /**
190
+ * whether a value does not match any of the given values.
191
+ */
192
+ $nin?: ExpandScalar<T>[];
193
+ };
194
+ /**
195
+ * Value for a field comparison.
196
+ */
197
+ export type QueryWhereFieldValue<T> = T | T[] | QueryWhereFieldOperatorMap<T> | QueryRaw;
198
+ /**
199
+ * query single filter.
200
+ */
201
+ export type QueryWhereSingle<E> = IdValue<E> | IdValue<E>[] | QueryWhereMap<E> | QueryRaw;
202
+ /**
203
+ * query filter array.
204
+ */
205
+ export type QueryWhereArray<E> = QueryWhereSingle<E>[];
206
+ /**
207
+ * query filter.
208
+ */
209
+ export type QueryWhere<E> = QueryWhereSingle<E> | QueryWhereArray<E>;
210
+ /**
211
+ * direction for the sort.
212
+ */
213
+ export type QuerySortDirection = -1 | 1 | 'asc' | 'desc';
214
+ /**
215
+ * sort by tuples
216
+ */
217
+ export type QuerySortTuples<E> = [FieldKey<E>, QuerySortDirection][];
218
+ /**
219
+ * sort by objects.
220
+ */
221
+ export type QuerySortObjects<E> = {
222
+ field: FieldKey<E>;
223
+ sort: QuerySortDirection;
224
+ }[];
225
+ /**
226
+ * sort by fields.
227
+ */
228
+ export type QuerySortFieldMap<E> = {
229
+ [K in FieldKey<E>]?: QuerySortDirection;
230
+ };
231
+ /**
232
+ * sort by relations fields.
233
+ */
234
+ export type QuerySortRelationMap<E> = {
235
+ [K in RelationKey<E>]?: QuerySortMap<Unpacked<E[K]>>;
236
+ };
237
+ /**
238
+ * sort by map.
239
+ */
240
+ export type QuerySortMap<E> = QuerySortFieldMap<E> | QuerySortRelationMap<E>;
241
+ /**
242
+ * sort options.
243
+ */
244
+ export type QuerySort<E> = QuerySortMap<E> | QuerySortTuples<E> | QuerySortObjects<E>;
245
+ /**
246
+ * pager options.
247
+ */
248
+ export type QueryPager = {
249
+ /**
250
+ * Index from where start the search
251
+ */
252
+ $skip?: number;
253
+ /**
254
+ * Max number of records to retrieve
255
+ */
256
+ $limit?: number;
257
+ };
258
+ /**
259
+ * search options.
260
+ */
261
+ export type QuerySearch<E> = {
262
+ /**
263
+ * filtering options.
264
+ */
265
+ $where?: QueryWhere<E>;
266
+ /**
267
+ * sorting options.
268
+ */
269
+ $sort?: QuerySort<E>;
270
+ } & QueryPager;
271
+ /**
272
+ * criteria one options.
273
+ */
274
+ export type QuerySearchOne<E> = Omit<QuerySearch<E>, '$limit'>;
275
+ /**
276
+ * query options.
277
+ */
278
+ export type Query<E> = {
279
+ /**
280
+ * selection options.
281
+ */
282
+ $select?: QuerySelect<E>;
283
+ } & QuerySearch<E>;
284
+ /**
285
+ * options to get a single record.
286
+ */
287
+ export type QueryOne<E> = Omit<Query<E>, '$limit'>;
288
+ /**
289
+ * options to get an unique record.
290
+ */
291
+ export type QueryUnique<E> = Pick<QueryOne<E>, '$select' | '$where'>;
292
+ /**
293
+ * stringified query.
294
+ */
295
+ export type QueryStringified = {
296
+ [K in keyof Query<unknown>]?: string;
297
+ };
298
+ /**
299
+ * result of an update operation.
300
+ */
301
+ export type QueryUpdateResult = {
302
+ /**
303
+ * number of affected records.
304
+ */
305
+ changes?: number;
306
+ /**
307
+ * the inserted IDs.
308
+ */
309
+ ids?: number[] | string[];
310
+ /**
311
+ * first inserted ID.
312
+ */
313
+ firstId?: number | string;
314
+ };
315
+ /**
316
+ * options for the `raw` function.
317
+ */
318
+ export type QueryRawFnOptions = {
319
+ /**
320
+ * the current dialect.
321
+ */
322
+ dialect?: QueryDialect;
323
+ /**
324
+ * the prefix.
325
+ */
326
+ prefix?: string;
327
+ /**
328
+ * the escaped prefix.
329
+ */
330
+ escapedPrefix?: string;
331
+ /**
332
+ * the query context.
333
+ */
334
+ ctx?: QueryContext;
335
+ };
336
+ /**
337
+ * a `raw` function
338
+ */
339
+ export type QueryRawFn = (opts?: QueryRawFnOptions) => void | Scalar;
340
+ export declare class QueryRaw {
341
+ readonly value: Scalar | QueryRawFn;
342
+ readonly alias?: string;
343
+ constructor(value: Scalar | QueryRawFn, alias?: string);
344
+ }
345
+ /**
346
+ * comparison options.
347
+ */
348
+ export type QueryComparisonOptions = QueryOptions & {
349
+ /**
350
+ * use precedence for the comparison or not.
351
+ */
352
+ usePrecedence?: boolean;
353
+ };
354
+ /**
355
+ * query filter options.
356
+ */
357
+ export type QueryWhereOptions = QueryComparisonOptions & {
358
+ /**
359
+ * clause to be used in the filter.
360
+ */
361
+ clause?: 'WHERE' | false;
362
+ };
363
+ export interface QueryContext {
364
+ append(sql: string): this;
365
+ addValue(value: unknown): this;
366
+ pushValue(value: unknown): this;
367
+ readonly sql: string;
368
+ readonly values: unknown[];
369
+ }
370
+ export interface QueryDialect {
371
+ /**
372
+ * obtains the records matching the given search parameters.
373
+ * @param ctx the query context
374
+ * @param entity the target entity
375
+ * @param q the criteria options
376
+ * @param opts the query options
377
+ */
378
+ find<E>(ctx: QueryContext, entity: Type<E>, q: Query<E>, opts?: QueryOptions): void;
379
+ /**
380
+ * counts the number of records matching the given search parameters.
381
+ * @param ctx the query context
382
+ * @param entity the target entity
383
+ * @param q the criteria options
384
+ * @param opts the query options
385
+ */
386
+ count<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): void;
387
+ /**
388
+ * insert records.
389
+ * @param ctx the query context
390
+ * @param entity the target entity
391
+ * @param payload the payload
392
+ * @param opts the query options
393
+ */
394
+ insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void;
395
+ /**
396
+ * update records.
397
+ * @param ctx the query context
398
+ * @param entity the target entity
399
+ * @param q the criteria options
400
+ * @param payload
401
+ * @param opts the query options
402
+ */
403
+ update<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, payload: E, opts?: QueryOptions): void;
404
+ /**
405
+ * upsert records.
406
+ * @param ctx the query context
407
+ * @param entity the target entity
408
+ * @param conflictPaths the conflict paths
409
+ * @param payload
410
+ */
411
+ upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E): void;
412
+ /**
413
+ * delete records.
414
+ * @param ctx the query context
415
+ * @param entity the target entity
416
+ * @param q the criteria options
417
+ * @param opts the query options
418
+ */
419
+ delete<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): void;
420
+ /**
421
+ * escape an identifier.
422
+ * @param val the value to be escaped
423
+ * @param forbidQualified don't escape dots
424
+ * @param addDot use a dot as suffix
425
+ */
426
+ escapeId(val: string, forbidQualified?: boolean, addDot?: boolean): string;
427
+ /**
428
+ * escape a value.
429
+ * @param val the value to escape
430
+ */
431
+ escape(val: unknown): string;
432
+ /**
433
+ * add a value to the query.
434
+ * @param values the values array
435
+ * @param value the value to add
436
+ */
437
+ addValue(values: unknown[], value: unknown): string;
438
+ /**
439
+ * create a new query context.
440
+ */
441
+ createContext(): QueryContext;
442
+ }
443
+ /**
444
+ * Minimal dialect interface exposing escapeIdChar for SQL operations
445
+ */
446
+ export interface SqlQueryDialect extends QueryDialect {
447
+ /**
448
+ * the escape character for identifiers.
449
+ */
450
+ readonly escapeIdChar: '"' | '`';
451
+ /**
452
+ * Get the placeholder for a parameter at the given index (1-based).
453
+ * Default: '?' for MySQL/MariaDB/SQLite, '$n' for PostgreSQL.
454
+ */
455
+ placeholder(index: number): string;
456
+ }
@@ -0,0 +1,9 @@
1
+ export class QueryRaw {
2
+ value;
3
+ alias;
4
+ constructor(value, alias) {
5
+ this.value = value;
6
+ this.alias = alias;
7
+ }
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZS9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxWEEsTUFBTSxPQUFPLFFBQVE7SUFFUjtJQUNBO0lBRlgsWUFDVyxLQUEwQixFQUMxQixLQUFjO1FBRGQsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBUztJQUN0QixDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpZWxkS2V5LCBJZFZhbHVlLCBLZXksIFJlbGF0aW9uS2V5IH0gZnJvbSAnLi9lbnRpdHkuanMnO1xuaW1wb3J0IHR5cGUgeyBCb29sZWFuTGlrZSwgRXhwYW5kU2NhbGFyLCBTY2FsYXIsIFR5cGUsIFVucGFja2VkIH0gZnJvbSAnLi91dGlsaXR5LmpzJztcblxuZXhwb3J0IHR5cGUgUXVlcnlPcHRpb25zID0ge1xuICAvKipcbiAgICogdXNlIG9yIG9taXQgYHNvZnREZWxldGVgIGF0dHJpYnV0ZS5cbiAgICovXG4gIHNvZnREZWxldGU/OiBib29sZWFuO1xuICAvKipcbiAgICogcHJlZml4IHRoZSBxdWVyeSB3aXRoIHRoaXMuXG4gICAqL1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBhdXRvbWF0aWNhbGx5IGluZmVyIHRoZSBwcmVmaXggZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIGF1dG9QcmVmaXg/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlTZWxlY3RPcHRpb25zID0ge1xuICAvKipcbiAgICogcHJlZml4IHRoZSBxdWVyeSB3aXRoIHRoaXMuXG4gICAqL1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgcHJlZml4IGZvciB0aGUgYWxpYXMuXG4gICAqL1xuICBhdXRvUHJlZml4QWxpYXM/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBxdWVyeSBzZWxlY3Rpb24gYXMgYW4gYXJyYXkuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U2VsZWN0QXJyYXk8RT4gPSAoS2V5PEU+IHwgUXVlcnlSYXcpW107XG5cbi8qKlxuICogcXVlcnkgc2VsZWN0aW9uIGFzIGEgbWFwLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNlbGVjdE1hcDxFPiA9IFF1ZXJ5U2VsZWN0RmllbGRNYXA8RT4gfCBRdWVyeVNlbGVjdFJlbGF0aW9uTWFwPEU+O1xuXG4vKipcbiAqIHF1ZXJ5IHNlbGVjdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTZWxlY3Q8RT4gPSBRdWVyeVNlbGVjdEFycmF5PEU+IHwgUXVlcnlTZWxlY3RNYXA8RT47XG5cbi8qKlxuICogcXVlcnkgc2VsZWN0aW9uIG9mIGZpZWxkcyBhcyBhIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTZWxlY3RGaWVsZE1hcDxFPiA9IHtcbiAgW0sgaW4gRmllbGRLZXk8RT5dPzogQm9vbGVhbkxpa2U7XG59O1xuXG4vKipcbiAqIHF1ZXJ5IGNvbmZsaWN0IHBhdGhzIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlDb25mbGljdFBhdGhzTWFwPEU+ID0ge1xuICBbSyBpbiBGaWVsZEtleTxFPl0/OiB0cnVlO1xufTtcblxuLyoqXG4gKiBxdWVyeSBjb25mbGljdCBwYXRocy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlDb25mbGljdFBhdGhzPEU+ID0gUXVlcnlDb25mbGljdFBhdGhzTWFwPEU+O1xuXG4vKipcbiAqIHF1ZXJ5IHNlbGVjdGlvbiBvZiByZWxhdGlvbnMgYXMgYSBtYXAuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U2VsZWN0UmVsYXRpb25NYXA8RT4gPSB7XG4gIFtLIGluIFJlbGF0aW9uS2V5PEU+XT86IEJvb2xlYW5MaWtlIHwgS2V5PFVucGFja2VkPEVbS10+PltdIHwgUXVlcnlTZWxlY3RSZWxhdGlvbk9wdGlvbnM8RVtLXT47XG59O1xuXG4vKipcbiAqIG9wdGlvbnMgdG8gc2VsZWN0IGEgcmVsYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U2VsZWN0UmVsYXRpb25PcHRpb25zPEU+ID0gKEUgZXh0ZW5kcyB1bmtub3duW10gPyBRdWVyeTxVbnBhY2tlZDxFPj4gOiBRdWVyeVVuaXF1ZTxVbnBhY2tlZDxFPj4pICYge1xuICAkcmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBvcHRpb25zIGZvciBmdWxsLXRleHQtc2VhcmNoIG9wZXJhdG9yLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVRleHRTZWFyY2hPcHRpb25zPEU+ID0ge1xuICAvKipcbiAgICogdGV4dCB0byBzZWFyY2ggZm9yLlxuICAgKi9cbiAgJHZhbHVlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBsaXN0IG9mIGZpZWxkcyB0byBzZWFyY2ggb24uXG4gICAqL1xuICAkZmllbGRzPzogRmllbGRLZXk8RT5bXTtcbn07XG5cbi8qKlxuICogY29tcGFyaXNvbiBieSBmaWVsZHMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5V2hlcmVGaWVsZE1hcDxFPiA9IHsgW0sgaW4gRmllbGRLZXk8RT5dPzogUXVlcnlXaGVyZUZpZWxkVmFsdWU8RVtLXT4gfTtcblxuLyoqXG4gKiBjb21wbGV4IG9wZXJhdG9ycy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlXaGVyZU1hcDxFPiA9IFF1ZXJ5V2hlcmVGaWVsZE1hcDxFPiAmIFF1ZXJ5V2hlcmVSb290T3BlcmF0b3I8RT47XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5V2hlcmVSb290T3BlcmF0b3I8RT4gPSB7XG4gIC8qKlxuICAgKiBqb2lucyBxdWVyeSBjbGF1c2VzIHdpdGggYSBsb2dpY2FsIGBBTkRgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBtYXRjaCBhbGwgdGhlIGNsYXVzZXMuXG4gICAqL1xuICAkYW5kPzogUXVlcnlXaGVyZUFycmF5PEU+O1xuICAvKipcbiAgICogam9pbnMgcXVlcnkgY2xhdXNlcyB3aXRoIGEgbG9naWNhbCBgT1JgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBtYXRjaCBhbnkgb2YgdGhlIGNsYXVzZXMuXG4gICAqL1xuICAkb3I/OiBRdWVyeVdoZXJlQXJyYXk8RT47XG4gIC8qKlxuICAgKiBqb2lucyBxdWVyeSBjbGF1c2VzIHdpdGggYSBsb2dpY2FsIGBBTkRgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBkbyBub3QgbWF0Y2ggYWxsIHRoZSBjbGF1c2VzLlxuICAgKi9cbiAgJG5vdD86IFF1ZXJ5V2hlcmVBcnJheTxFPjtcbiAgLyoqXG4gICAqIGpvaW5zIHF1ZXJ5IGNsYXVzZXMgd2l0aCBhIGxvZ2ljYWwgYE9SYCwgcmV0dXJucyByZWNvcmRzIHRoYXQgZG8gbm90IG1hdGNoIGFueSBvZiB0aGUgY2xhdXNlcy5cbiAgICovXG4gICRub3I/OiBRdWVyeVdoZXJlQXJyYXk8RT47XG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgZmllbGRzIG1hdGNoIGFnYWluc3QgYSBmdWxsLXRleHQgc2VhcmNoIG9mIHRoZSBnaXZlbiBzdHJpbmcuXG4gICAqL1xuICAkdGV4dD86IFF1ZXJ5VGV4dFNlYXJjaE9wdGlvbnM8RT47XG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSByZWNvcmQgZXhpc3RzIGluIHRoZSBnaXZlbiBzdWItcXVlcnkuXG4gICAqL1xuICAkZXhpc3RzPzogUXVlcnlSYXc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSByZWNvcmQgZG9lcyBub3QgZXhpc3RzIGluIHRoZSBnaXZlbiBzdWItcXVlcnkuXG4gICAqL1xuICAkbmV4aXN0cz86IFF1ZXJ5UmF3O1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlXaGVyZUZpZWxkT3BlcmF0b3JNYXA8VD4gPSB7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgJGVxPzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqL1xuICAkbmU/OiBFeHBhbmRTY2FsYXI8VD47XG4gIC8qKlxuICAgKiBuZWdhdGVzIHRoZSBnaXZlbiBjb21wYXJpc29uLlxuICAgKi9cbiAgJG5vdD86IFF1ZXJ5V2hlcmVGaWVsZFZhbHVlPFQ+O1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqL1xuICAkbHQ/OiBFeHBhbmRTY2FsYXI8VD47XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICovXG4gICRsdGU/OiBFeHBhbmRTY2FsYXI8VD47XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICovXG4gICRndD86IEV4cGFuZFNjYWxhcjxUPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgJGd0ZT86IEV4cGFuZFNjYWxhcjxUPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgYmVnaW5zIHdpdGggdGhlIGdpdmVuIHN0cmluZyAoY2FzZSBzZW5zaXRpdmUpLlxuICAgKi9cbiAgJHN0YXJ0c1dpdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGJlZ2lucyB3aXRoIHRoZSBnaXZlbiBzdHJpbmcgKGNhc2UgaW5zZW5zaXRpdmUpLlxuICAgKi9cbiAgJGlzdGFydHNXaXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVuIHN0cmluZyAoY2FzZSBzZW5zaXRpdmUpLlxuICAgKi9cbiAgJGVuZHNXaXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVuIHN0cmluZyAoY2FzZSBpbnNlbnNpdGl2ZSkuXG4gICAqL1xuICAkaWVuZHNXaXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBpcyBjb250YWluZWQgd2l0aGluIHRoZSBnaXZlbiBzdHJpbmcgKGNhc2Ugc2Vuc2l0aXZlKS5cbiAgICovXG4gICRpbmNsdWRlcz86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgZ2l2ZW4gc3RyaW5nIChjYXNlIGluc2Vuc2l0aXZlKS5cbiAgICovXG4gICRpaW5jbHVkZXM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGZ1bGZpbGxzIHRoZSBnaXZlbiBwYXR0ZXJuIChjYXNlIHNlbnNpdGl2ZSkuXG4gICAqL1xuICAkbGlrZT86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgZnVsZmlsbHMgdGhlIGdpdmVuIHBhdHRlcm4gKGNhc2UgaW5zZW5zaXRpdmUpLlxuICAgKi9cbiAgJGlsaWtlPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24uXG4gICAqL1xuICAkcmVnZXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgbWF0Y2hlcyBhbnkgb2YgdGhlIGdpdmVuIHZhbHVlcy5cbiAgICovXG4gICRpbj86IEV4cGFuZFNjYWxhcjxUPltdO1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgZ2l2ZW4gdmFsdWVzLlxuICAgKi9cbiAgJG5pbj86IEV4cGFuZFNjYWxhcjxUPltdO1xufTtcblxuLyoqXG4gKiBWYWx1ZSBmb3IgYSBmaWVsZCBjb21wYXJpc29uLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVdoZXJlRmllbGRWYWx1ZTxUPiA9IFQgfCBUW10gfCBRdWVyeVdoZXJlRmllbGRPcGVyYXRvck1hcDxUPiB8IFF1ZXJ5UmF3O1xuXG4vKipcbiAqIHF1ZXJ5IHNpbmdsZSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5V2hlcmVTaW5nbGU8RT4gPSBJZFZhbHVlPEU+IHwgSWRWYWx1ZTxFPltdIHwgUXVlcnlXaGVyZU1hcDxFPiB8IFF1ZXJ5UmF3O1xuXG4vKipcbiAqIHF1ZXJ5IGZpbHRlciBhcnJheS5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlXaGVyZUFycmF5PEU+ID0gUXVlcnlXaGVyZVNpbmdsZTxFPltdO1xuXG4vKipcbiAqIHF1ZXJ5IGZpbHRlci5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlXaGVyZTxFPiA9IFF1ZXJ5V2hlcmVTaW5nbGU8RT4gfCBRdWVyeVdoZXJlQXJyYXk8RT47XG5cbi8qKlxuICogZGlyZWN0aW9uIGZvciB0aGUgc29ydC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0RGlyZWN0aW9uID0gLTEgfCAxIHwgJ2FzYycgfCAnZGVzYyc7XG5cbi8qKlxuICogc29ydCBieSB0dXBsZXNcbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0VHVwbGVzPEU+ID0gW0ZpZWxkS2V5PEU+LCBRdWVyeVNvcnREaXJlY3Rpb25dW107XG5cbi8qKlxuICogc29ydCBieSBvYmplY3RzLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnRPYmplY3RzPEU+ID0geyBmaWVsZDogRmllbGRLZXk8RT47IHNvcnQ6IFF1ZXJ5U29ydERpcmVjdGlvbiB9W107XG5cbi8qKlxuICogc29ydCBieSBmaWVsZHMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U29ydEZpZWxkTWFwPEU+ID0ge1xuICBbSyBpbiBGaWVsZEtleTxFPl0/OiBRdWVyeVNvcnREaXJlY3Rpb247XG59O1xuXG4vKipcbiAqIHNvcnQgYnkgcmVsYXRpb25zIGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0UmVsYXRpb25NYXA8RT4gPSB7XG4gIFtLIGluIFJlbGF0aW9uS2V5PEU+XT86IFF1ZXJ5U29ydE1hcDxVbnBhY2tlZDxFW0tdPj47XG59O1xuXG4vKipcbiAqIHNvcnQgYnkgbWFwLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnRNYXA8RT4gPSBRdWVyeVNvcnRGaWVsZE1hcDxFPiB8IFF1ZXJ5U29ydFJlbGF0aW9uTWFwPEU+O1xuXG4vKipcbiAqIHNvcnQgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0PEU+ID0gUXVlcnlTb3J0TWFwPEU+IHwgUXVlcnlTb3J0VHVwbGVzPEU+IHwgUXVlcnlTb3J0T2JqZWN0czxFPjtcblxuLyoqXG4gKiBwYWdlciBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVBhZ2VyID0ge1xuICAvKipcbiAgICogSW5kZXggZnJvbSB3aGVyZSBzdGFydCB0aGUgc2VhcmNoXG4gICAqL1xuICAkc2tpcD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4IG51bWJlciBvZiByZWNvcmRzIHRvIHJldHJpZXZlXG4gICAqL1xuICAkbGltaXQ/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIHNlYXJjaCBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNlYXJjaDxFPiA9IHtcbiAgLyoqXG4gICAqIGZpbHRlcmluZyBvcHRpb25zLlxuICAgKi9cbiAgJHdoZXJlPzogUXVlcnlXaGVyZTxFPjtcblxuICAvKipcbiAgICogc29ydGluZyBvcHRpb25zLlxuICAgKi9cbiAgJHNvcnQ/OiBRdWVyeVNvcnQ8RT47XG59ICYgUXVlcnlQYWdlcjtcblxuLyoqXG4gKiBjcml0ZXJpYSBvbmUgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTZWFyY2hPbmU8RT4gPSBPbWl0PFF1ZXJ5U2VhcmNoPEU+LCAnJGxpbWl0Jz47XG5cbi8qKlxuICogcXVlcnkgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnk8RT4gPSB7XG4gIC8qKlxuICAgKiBzZWxlY3Rpb24gb3B0aW9ucy5cbiAgICovXG4gICRzZWxlY3Q/OiBRdWVyeVNlbGVjdDxFPjtcbn0gJiBRdWVyeVNlYXJjaDxFPjtcblxuLyoqXG4gKiBvcHRpb25zIHRvIGdldCBhIHNpbmdsZSByZWNvcmQuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5T25lPEU+ID0gT21pdDxRdWVyeTxFPiwgJyRsaW1pdCc+O1xuXG4vKipcbiAqIG9wdGlvbnMgdG8gZ2V0IGFuIHVuaXF1ZSByZWNvcmQuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5VW5pcXVlPEU+ID0gUGljazxRdWVyeU9uZTxFPiwgJyRzZWxlY3QnIHwgJyR3aGVyZSc+O1xuXG4vKipcbiAqIHN0cmluZ2lmaWVkIHF1ZXJ5LlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVN0cmluZ2lmaWVkID0ge1xuICBbSyBpbiBrZXlvZiBRdWVyeTx1bmtub3duPl0/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIHJlc3VsdCBvZiBhbiB1cGRhdGUgb3BlcmF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVVwZGF0ZVJlc3VsdCA9IHtcbiAgLyoqXG4gICAqIG51bWJlciBvZiBhZmZlY3RlZCByZWNvcmRzLlxuICAgKi9cbiAgY2hhbmdlcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIHRoZSBpbnNlcnRlZCBJRHMuXG4gICAqL1xuICBpZHM/OiBudW1iZXJbXSB8IHN0cmluZ1tdO1xuICAvKipcbiAgICogZmlyc3QgaW5zZXJ0ZWQgSUQuXG4gICAqL1xuICBmaXJzdElkPzogbnVtYmVyIHwgc3RyaW5nO1xufTtcblxuLyoqXG4gKiBvcHRpb25zIGZvciB0aGUgYHJhd2AgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UmF3Rm5PcHRpb25zID0ge1xuICAvKipcbiAgICogdGhlIGN1cnJlbnQgZGlhbGVjdC5cbiAgICovXG4gIGRpYWxlY3Q/OiBRdWVyeURpYWxlY3Q7XG4gIC8qKlxuICAgKiB0aGUgcHJlZml4LlxuICAgKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogdGhlIGVzY2FwZWQgcHJlZml4LlxuICAgKi9cbiAgZXNjYXBlZFByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIHRoZSBxdWVyeSBjb250ZXh0LlxuICAgKi9cbiAgY3R4PzogUXVlcnlDb250ZXh0O1xufTtcblxuLyoqXG4gKiBhIGByYXdgIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UmF3Rm4gPSAob3B0cz86IFF1ZXJ5UmF3Rm5PcHRpb25zKSA9PiB2b2lkIHwgU2NhbGFyO1xuXG5leHBvcnQgY2xhc3MgUXVlcnlSYXcge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSB2YWx1ZTogU2NhbGFyIHwgUXVlcnlSYXdGbixcbiAgICByZWFkb25seSBhbGlhcz86IHN0cmluZyxcbiAgKSB7fVxufVxuXG4vKipcbiAqIGNvbXBhcmlzb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlDb21wYXJpc29uT3B0aW9ucyA9IFF1ZXJ5T3B0aW9ucyAmIHtcbiAgLyoqXG4gICAqIHVzZSBwcmVjZWRlbmNlIGZvciB0aGUgY29tcGFyaXNvbiBvciBub3QuXG4gICAqL1xuICB1c2VQcmVjZWRlbmNlPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogcXVlcnkgZmlsdGVyIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5V2hlcmVPcHRpb25zID0gUXVlcnlDb21wYXJpc29uT3B0aW9ucyAmIHtcbiAgLyoqXG4gICAqIGNsYXVzZSB0byBiZSB1c2VkIGluIHRoZSBmaWx0ZXIuXG4gICAqL1xuICBjbGF1c2U/OiAnV0hFUkUnIHwgZmFsc2U7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Q29udGV4dCB7XG4gIGFwcGVuZChzcWw6IHN0cmluZyk6IHRoaXM7XG4gIGFkZFZhbHVlKHZhbHVlOiB1bmtub3duKTogdGhpcztcbiAgcHVzaFZhbHVlKHZhbHVlOiB1bmtub3duKTogdGhpcztcbiAgcmVhZG9ubHkgc3FsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlczogdW5rbm93bltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RGlhbGVjdCB7XG4gIC8qKlxuICAgKiBvYnRhaW5zIHRoZSByZWNvcmRzIG1hdGNoaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIGN0eCB0aGUgcXVlcnkgY29udGV4dFxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSB0YXJnZXQgZW50aXR5XG4gICAqIEBwYXJhbSBxIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRzIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBmaW5kPEU+KGN0eDogUXVlcnlDb250ZXh0LCBlbnRpdHk6IFR5cGU8RT4sIHE6IFF1ZXJ5PEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogdm9pZDtcblxuICAvKipcbiAgICogY291bnRzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyBtYXRjaGluZyB0aGUgZ2l2ZW4gc2VhcmNoIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSBjdHggdGhlIHF1ZXJ5IGNvbnRleHRcbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcSB0aGUgY3JpdGVyaWEgb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0cyB0aGUgcXVlcnkgb3B0aW9uc1xuICAgKi9cbiAgY291bnQ8RT4oY3R4OiBRdWVyeUNvbnRleHQsIGVudGl0eTogVHlwZTxFPiwgcTogUXVlcnlTZWFyY2g8RT4sIG9wdHM/OiBRdWVyeU9wdGlvbnMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBpbnNlcnQgcmVjb3Jkcy5cbiAgICogQHBhcmFtIGN0eCB0aGUgcXVlcnkgY29udGV4dFxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSB0YXJnZXQgZW50aXR5XG4gICAqIEBwYXJhbSBwYXlsb2FkIHRoZSBwYXlsb2FkXG4gICAqIEBwYXJhbSBvcHRzIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBpbnNlcnQ8RT4oY3R4OiBRdWVyeUNvbnRleHQsIGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRSB8IEVbXSwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSByZWNvcmRzLlxuICAgKiBAcGFyYW0gY3R4IHRoZSBxdWVyeSBjb250ZXh0XG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIHEgdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICogQHBhcmFtIG9wdHMgdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICovXG4gIHVwZGF0ZTxFPihjdHg6IFF1ZXJ5Q29udGV4dCwgZW50aXR5OiBUeXBlPEU+LCBxOiBRdWVyeVNlYXJjaDxFPiwgcGF5bG9hZDogRSwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIHVwc2VydCByZWNvcmRzLlxuICAgKiBAcGFyYW0gY3R4IHRoZSBxdWVyeSBjb250ZXh0XG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIGNvbmZsaWN0UGF0aHMgdGhlIGNvbmZsaWN0IHBhdGhzXG4gICAqIEBwYXJhbSBwYXlsb2FkXG4gICAqL1xuICB1cHNlcnQ8RT4oY3R4OiBRdWVyeUNvbnRleHQsIGVudGl0eTogVHlwZTxFPiwgY29uZmxpY3RQYXRoczogUXVlcnlDb25mbGljdFBhdGhzPEU+LCBwYXlsb2FkOiBFKTogdm9pZDtcblxuICAvKipcbiAgICogZGVsZXRlIHJlY29yZHMuXG4gICAqIEBwYXJhbSBjdHggdGhlIHF1ZXJ5IGNvbnRleHRcbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcSB0aGUgY3JpdGVyaWEgb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0cyB0aGUgcXVlcnkgb3B0aW9uc1xuICAgKi9cbiAgZGVsZXRlPEU+KGN0eDogUXVlcnlDb250ZXh0LCBlbnRpdHk6IFR5cGU8RT4sIHE6IFF1ZXJ5U2VhcmNoPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogdm9pZDtcblxuICAvKipcbiAgICogZXNjYXBlIGFuIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSB2YWwgdGhlIHZhbHVlIHRvIGJlIGVzY2FwZWRcbiAgICogQHBhcmFtIGZvcmJpZFF1YWxpZmllZCBkb24ndCBlc2NhcGUgZG90c1xuICAgKiBAcGFyYW0gYWRkRG90IHVzZSBhIGRvdCBhcyBzdWZmaXhcbiAgICovXG4gIGVzY2FwZUlkKHZhbDogc3RyaW5nLCBmb3JiaWRRdWFsaWZpZWQ/OiBib29sZWFuLCBhZGREb3Q/OiBib29sZWFuKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBlc2NhcGUgYSB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbCB0aGUgdmFsdWUgdG8gZXNjYXBlXG4gICAqL1xuICBlc2NhcGUodmFsOiB1bmtub3duKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBhZGQgYSB2YWx1ZSB0byB0aGUgcXVlcnkuXG4gICAqIEBwYXJhbSB2YWx1ZXMgdGhlIHZhbHVlcyBhcnJheVxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGFkZFxuICAgKi9cbiAgYWRkVmFsdWUodmFsdWVzOiB1bmtub3duW10sIHZhbHVlOiB1bmtub3duKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBjcmVhdGUgYSBuZXcgcXVlcnkgY29udGV4dC5cbiAgICovXG4gIGNyZWF0ZUNvbnRleHQoKTogUXVlcnlDb250ZXh0O1xufVxuXG4vKipcbiAqIE1pbmltYWwgZGlhbGVjdCBpbnRlcmZhY2UgZXhwb3NpbmcgZXNjYXBlSWRDaGFyIGZvciBTUUwgb3BlcmF0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNxbFF1ZXJ5RGlhbGVjdCBleHRlbmRzIFF1ZXJ5RGlhbGVjdCB7XG4gIC8qKlxuICAgKiB0aGUgZXNjYXBlIGNoYXJhY3RlciBmb3IgaWRlbnRpZmllcnMuXG4gICAqL1xuICByZWFkb25seSBlc2NhcGVJZENoYXI6ICdcIicgfCAnYCc7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGxhY2Vob2xkZXIgZm9yIGEgcGFyYW1ldGVyIGF0IHRoZSBnaXZlbiBpbmRleCAoMS1iYXNlZCkuXG4gICAqIERlZmF1bHQ6ICc/JyBmb3IgTXlTUUwvTWFyaWFEQi9TUUxpdGUsICckbicgZm9yIFBvc3RncmVTUUwuXG4gICAqL1xuICBwbGFjZWhvbGRlcihpbmRleDogbnVtYmVyKTogc3RyaW5nO1xufVxuIl19
@@ -1,105 +1,112 @@
1
- import { IdValue } from './entity';
2
- import { Querier } from './querier';
3
- import { Query, QueryCriteria, QueryOne, QueryOptions, QuerySearch, QueryUnique } from './query';
4
- import { Type } from './utility';
1
+ import type { IdValue } from './entity.js';
2
+ import type { Query, QueryConflictPaths, QueryOne, QueryOptions, QuerySearch, QueryUpdateResult } from './query.js';
3
+ import type { UniversalQuerier } from './universalQuerier.js';
4
+ import type { Type } from './utility.js';
5
5
  /**
6
6
  * A `repository` allows to interact with the datasource to perform persistence operations on a specific entity.
7
7
  */
8
- export declare type UniversalRepository<E> = {
8
+ export type UniversalRepository<E> = {
9
9
  /**
10
- * counts the number of records matching the given search parameters.
11
- * @param qm the search options
10
+ * the `entity` class to which this `repository` is linked to.
11
+ */
12
+ readonly entity: Type<E>;
13
+ /**
14
+ * the `querier` instance to which this `repository` is linked to.
12
15
  */
13
- count(qm: QuerySearch<E>): Promise<any>;
16
+ readonly querier: UniversalQuerier;
14
17
  /**
15
18
  * obtains the record with the given primary key.
16
19
  * @param id the primary key value
17
- * @param qm the criteria options
20
+ * @param q the criteria options
18
21
  */
19
- findOneById(id: IdValue<E>, qm?: QueryUnique<E>): Promise<any>;
22
+ findOneById(id: IdValue<E>, q?: QueryOne<E>): Promise<unknown>;
20
23
  /**
21
24
  * obtains the first record matching the given search parameters.
22
- * @param qm the criteria options
25
+ * @param q the criteria options
23
26
  */
24
- findOne(qm: QueryOne<E>): Promise<any>;
27
+ findOne(q: QueryOne<E>): Promise<unknown>;
25
28
  /**
26
29
  * obtains the records matching the given search parameters.
27
- * @param qm the criteria options
30
+ * @param q the criteria options
28
31
  */
29
- findMany(qm: Query<E>): Promise<any>;
32
+ findMany(q: Query<E>): Promise<unknown>;
30
33
  /**
31
34
  * obtains the records matching the given search parameters,
32
35
  * also counts the number of matches ignoring pagination.
33
- * @param qm the criteria options
36
+ * @param q the criteria options
37
+ */
38
+ findManyAndCount(q: Query<E>): Promise<unknown>;
39
+ /**
40
+ * counts the number of records matching the given search parameters.
41
+ * @param q the search options
34
42
  */
35
- findManyAndCount(qm: Query<E>): Promise<any>;
43
+ count(q: QuerySearch<E>): Promise<unknown>;
36
44
  /**
37
45
  * inserts a record.
38
46
  * @param payload the data to be persisted
39
47
  */
40
- insertOne(payload: E): Promise<any>;
48
+ insertOne(payload: E): Promise<unknown>;
41
49
  /**
42
50
  * Inserts many records.
43
51
  * @param entity the entity to persist on
44
52
  * @param payload the data to be persisted
45
53
  */
46
- insertMany?(payload: E[]): Promise<any>;
54
+ insertMany?(payload: E[]): Promise<unknown>;
47
55
  /**
48
56
  * updates a record partially.
49
57
  * @param id the primary key of the record to be updated
50
58
  * @param payload the data to be persisted
51
59
  */
52
- updateOneById(id: IdValue<E>, payload: E): Promise<any>;
60
+ updateOneById(id: IdValue<E>, payload: E): Promise<unknown>;
53
61
  /**
54
62
  * updates many records partially.
55
63
  * @param qm the criteria to look for the records
56
64
  * @param payload the data to be persisted
57
65
  */
58
- updateMany?(qm: QueryCriteria<E>, payload: E): Promise<any>;
66
+ updateMany?(qm: QuerySearch<E>, payload: E): Promise<unknown>;
67
+ /**
68
+ * Insert or update a record given a search criteria.
69
+ * @param conflictPaths the keys to use for the unique search.
70
+ * @param payload the data to insert or update.
71
+ */
72
+ upsertOne?(conflictPaths: QueryConflictPaths<E>, payload: E): Promise<unknown>;
59
73
  /**
60
74
  * Insert or update a record.
61
75
  * @param payload the data to be persisted
62
76
  */
63
- saveOne(payload: E): Promise<any>;
77
+ saveOne(payload: E): Promise<unknown>;
64
78
  /**
65
79
  * insert or update records.
66
80
  * @param payload the data to be persisted
67
81
  */
68
- saveMany?(payload: E[]): Promise<any>;
82
+ saveMany?(payload: E[]): Promise<unknown>;
69
83
  /**
70
84
  * delete or SoftDelete a record.
71
85
  * @param id the primary key of the record
72
86
  */
73
- deleteOneById(id: IdValue<E>, opts?: QueryOptions): Promise<any>;
87
+ deleteOneById(id: IdValue<E>, opts?: QueryOptions): Promise<unknown>;
74
88
  /**
75
89
  * delete or SoftDelete records.
76
90
  * @param qm the criteria to look for the records
77
91
  */
78
- deleteMany(qm: QueryCriteria<E>, opts?: QueryOptions): Promise<any>;
92
+ deleteMany(qm: QuerySearch<E>, opts?: QueryOptions): Promise<unknown>;
79
93
  };
80
94
  /**
81
95
  * base contract for the backend repositories.
82
96
  */
83
97
  export interface Repository<E> extends UniversalRepository<E> {
84
- /**
85
- * the `entity` type to which this `repository` is linked to.
86
- */
87
- readonly entity: Type<E>;
88
- /**
89
- * the `querier` instance to which this `repository` is linked to.
90
- */
91
- readonly querier: Querier;
92
- count(qm: QueryCriteria<E>): Promise<number>;
93
- findOneById(id: IdValue<E>, qm?: QueryUnique<E>): Promise<E>;
98
+ findOneById(id: IdValue<E>, q?: QueryOne<E>): Promise<E>;
94
99
  findOne(qm: QueryOne<E>): Promise<E>;
95
100
  findMany(qm: Query<E>): Promise<E[]>;
96
101
  findManyAndCount(qm: Query<E>): Promise<[E[], number]>;
102
+ count(q?: QuerySearch<E>): Promise<number>;
97
103
  insertOne(payload: E): Promise<IdValue<E>>;
98
104
  insertMany(payload: E[]): Promise<IdValue<E>[]>;
99
105
  updateOneById(id: IdValue<E>, payload: E): Promise<number>;
100
- updateMany(qm: QueryCriteria<E>, payload: E): Promise<number>;
106
+ updateMany(qm: QuerySearch<E>, payload: E): Promise<number>;
107
+ upsertOne(conflictPaths: QueryConflictPaths<E>, payload: E): Promise<QueryUpdateResult>;
101
108
  saveOne(payload: E): Promise<IdValue<E>>;
102
109
  saveMany?(payload: E[]): Promise<IdValue<E>[]>;
103
110
  deleteOneById(id: IdValue<E>, opts?: QueryOptions): Promise<number>;
104
- deleteMany(qm: QueryCriteria<E>, opts?: QueryOptions): Promise<number>;
111
+ deleteMany(qm: QuerySearch<E>, opts?: QueryOptions): Promise<number>;
105
112
  }