@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
package/type/entity.d.ts DELETED
@@ -1,76 +0,0 @@
1
- import { QueryRaw } from './query';
2
- import { Scalar, Type } from './utility';
3
- export declare const idKey: unique symbol;
4
- export declare type Key<E> = keyof E & string;
5
- export declare type FieldKey<E> = {
6
- readonly [K in keyof E]: E[K] extends Scalar ? K : never;
7
- }[Key<E>];
8
- export declare type RelationKey<E> = {
9
- readonly [K in keyof E]: E[K] extends Scalar ? never : K;
10
- }[Key<E>];
11
- export declare type FieldValue<E> = E[FieldKey<E>];
12
- export declare type IdKey<E> = E extends {
13
- [idKey]?: infer K;
14
- } ? K & FieldKey<E> : E extends {
15
- _id?: unknown;
16
- } ? '_id' & FieldKey<E> : E extends {
17
- id?: unknown;
18
- } ? 'id' & FieldKey<E> : FieldKey<E>;
19
- export declare type IdValue<E> = E[IdKey<E>];
20
- export declare type RelationValue<E> = E[RelationKey<E>];
21
- export declare type EntityOptions = {
22
- readonly name?: string;
23
- readonly softDelete?: boolean;
24
- };
25
- export declare type FieldOptions = {
26
- readonly name?: string;
27
- readonly isId?: true;
28
- readonly type?: any;
29
- readonly reference?: EntityGetter;
30
- readonly virtual?: QueryRaw;
31
- readonly onInsert?: OnFieldCallback;
32
- readonly onUpdate?: OnFieldCallback;
33
- readonly onDelete?: OnFieldCallback;
34
- };
35
- export declare type OnFieldCallback = Scalar | QueryRaw | (() => Scalar | QueryRaw);
36
- export declare type EntityGetter<E = any> = () => Type<E>;
37
- export declare type CascadeType = 'persist' | 'delete';
38
- export declare type RelationOptions<E = any> = {
39
- entity?: EntityGetter<E>;
40
- cardinality: RelationCardinality;
41
- readonly cascade?: boolean | CascadeType;
42
- mappedBy?: RelationMappedBy<E>;
43
- through?: EntityGetter<RelationValue<E>>;
44
- references?: RelationReferences;
45
- };
46
- declare type RelationOptionsOwner<E> = Pick<RelationOptions<E>, 'entity' | 'references' | 'cascade'>;
47
- declare type RelationOptionsInverseSide<E> = Required<Pick<RelationOptions<E>, 'entity' | 'mappedBy'>> & Pick<RelationOptions<E>, 'cascade'>;
48
- declare type RelationOptionsThroughOwner<E> = Required<Pick<RelationOptions<E>, 'entity'>> & Pick<RelationOptions<E>, 'through' | 'references' | 'cascade'>;
49
- export declare type RelationKeyMap<E> = {
50
- readonly [K in keyof E]: K;
51
- };
52
- export declare type RelationKeyMapper<E> = (keyMap: RelationKeyMap<E>) => Key<E>;
53
- export declare type RelationReferences = {
54
- readonly local: string;
55
- readonly foreign: string;
56
- }[];
57
- export declare type RelationMappedBy<E> = Key<E> | RelationKeyMapper<E>;
58
- export declare type RelationCardinality = '11' | 'm1' | '1m' | 'mm';
59
- export declare type RelationOneToOneOptions<E> = RelationOptionsOwner<E> | RelationOptionsInverseSide<E>;
60
- export declare type RelationOneToManyOptions<E> = RelationOptionsInverseSide<E> | RelationOptionsThroughOwner<E>;
61
- export declare type RelationManyToOneOptions<E> = RelationOptionsOwner<E> | RelationOptionsInverseSide<E>;
62
- export declare type RelationManyToManyOptions<E> = RelationOptionsThroughOwner<E> | RelationOptionsInverseSide<E>;
63
- export declare type EntityMeta<E> = {
64
- readonly entity: Type<E>;
65
- name?: string;
66
- id?: IdKey<E>;
67
- softDelete?: FieldKey<E>;
68
- fields: {
69
- [K in FieldKey<E>]?: FieldOptions;
70
- };
71
- relations: {
72
- [K in RelationKey<E>]?: RelationOptions;
73
- };
74
- processed?: boolean;
75
- };
76
- export {};
package/type/entity.js DELETED
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.idKey = void 0;
4
- exports.idKey = Symbol('idKey');
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGUvZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdhLFFBQUEsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5UmF3IH0gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgeyBTY2FsYXIsIFR5cGUgfSBmcm9tICcuL3V0aWxpdHknO1xuXG5leHBvcnQgY29uc3QgaWRLZXkgPSBTeW1ib2woJ2lkS2V5Jyk7XG5cbmV4cG9ydCB0eXBlIEtleTxFPiA9IGtleW9mIEUgJiBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIEZpZWxkS2V5PEU+ID0ge1xuICByZWFkb25seSBbSyBpbiBrZXlvZiBFXTogRVtLXSBleHRlbmRzIFNjYWxhciA/IEsgOiBuZXZlcjtcbn1bS2V5PEU+XTtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25LZXk8RT4gPSB7XG4gIHJlYWRvbmx5IFtLIGluIGtleW9mIEVdOiBFW0tdIGV4dGVuZHMgU2NhbGFyID8gbmV2ZXIgOiBLO1xufVtLZXk8RT5dO1xuXG5leHBvcnQgdHlwZSBGaWVsZFZhbHVlPEU+ID0gRVtGaWVsZEtleTxFPl07XG5cbmV4cG9ydCB0eXBlIElkS2V5PEU+ID0gRSBleHRlbmRzIHsgW2lkS2V5XT86IGluZmVyIEsgfVxuICA/IEsgJiBGaWVsZEtleTxFPlxuICA6IEUgZXh0ZW5kcyB7IF9pZD86IHVua25vd24gfVxuICA/ICdfaWQnICYgRmllbGRLZXk8RT5cbiAgOiBFIGV4dGVuZHMgeyBpZD86IHVua25vd24gfVxuICA/ICdpZCcgJiBGaWVsZEtleTxFPlxuICA6IEZpZWxkS2V5PEU+O1xuXG5leHBvcnQgdHlwZSBJZFZhbHVlPEU+ID0gRVtJZEtleTxFPl07XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uVmFsdWU8RT4gPSBFW1JlbGF0aW9uS2V5PEU+XTtcblxuZXhwb3J0IHR5cGUgRW50aXR5T3B0aW9ucyA9IHtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgc29mdERlbGV0ZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZE9wdGlvbnMgPSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzSWQ/OiB0cnVlO1xuICByZWFkb25seSB0eXBlPzogYW55O1xuICByZWFkb25seSByZWZlcmVuY2U/OiBFbnRpdHlHZXR0ZXI7XG4gIHJlYWRvbmx5IHZpcnR1YWw/OiBRdWVyeVJhdztcbiAgcmVhZG9ubHkgb25JbnNlcnQ/OiBPbkZpZWxkQ2FsbGJhY2s7XG4gIHJlYWRvbmx5IG9uVXBkYXRlPzogT25GaWVsZENhbGxiYWNrO1xuICByZWFkb25seSBvbkRlbGV0ZT86IE9uRmllbGRDYWxsYmFjaztcbn07XG5cbmV4cG9ydCB0eXBlIE9uRmllbGRDYWxsYmFjayA9IFNjYWxhciB8IFF1ZXJ5UmF3IHwgKCgpID0+IFNjYWxhciB8IFF1ZXJ5UmF3KTtcblxuZXhwb3J0IHR5cGUgRW50aXR5R2V0dGVyPEUgPSBhbnk+ID0gKCkgPT4gVHlwZTxFPjtcblxuZXhwb3J0IHR5cGUgQ2FzY2FkZVR5cGUgPSAncGVyc2lzdCcgfCAnZGVsZXRlJztcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25PcHRpb25zPEUgPSBhbnk+ID0ge1xuICBlbnRpdHk/OiBFbnRpdHlHZXR0ZXI8RT47XG4gIGNhcmRpbmFsaXR5OiBSZWxhdGlvbkNhcmRpbmFsaXR5O1xuICByZWFkb25seSBjYXNjYWRlPzogYm9vbGVhbiB8IENhc2NhZGVUeXBlO1xuICBtYXBwZWRCeT86IFJlbGF0aW9uTWFwcGVkQnk8RT47XG4gIHRocm91Z2g/OiBFbnRpdHlHZXR0ZXI8UmVsYXRpb25WYWx1ZTxFPj47XG4gIHJlZmVyZW5jZXM/OiBSZWxhdGlvblJlZmVyZW5jZXM7XG59O1xuXG50eXBlIFJlbGF0aW9uT3B0aW9uc093bmVyPEU+ID0gUGljazxSZWxhdGlvbk9wdGlvbnM8RT4sICdlbnRpdHknIHwgJ3JlZmVyZW5jZXMnIHwgJ2Nhc2NhZGUnPjtcbnR5cGUgUmVsYXRpb25PcHRpb25zSW52ZXJzZVNpZGU8RT4gPSBSZXF1aXJlZDxQaWNrPFJlbGF0aW9uT3B0aW9uczxFPiwgJ2VudGl0eScgfCAnbWFwcGVkQnknPj4gJiBQaWNrPFJlbGF0aW9uT3B0aW9uczxFPiwgJ2Nhc2NhZGUnPjtcbnR5cGUgUmVsYXRpb25PcHRpb25zVGhyb3VnaE93bmVyPEU+ID0gUmVxdWlyZWQ8UGljazxSZWxhdGlvbk9wdGlvbnM8RT4sICdlbnRpdHknPj4gJiBQaWNrPFJlbGF0aW9uT3B0aW9uczxFPiwgJ3Rocm91Z2gnIHwgJ3JlZmVyZW5jZXMnIHwgJ2Nhc2NhZGUnPjtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25LZXlNYXA8RT4gPSB7IHJlYWRvbmx5IFtLIGluIGtleW9mIEVdOiBLIH07XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uS2V5TWFwcGVyPEU+ID0gKGtleU1hcDogUmVsYXRpb25LZXlNYXA8RT4pID0+IEtleTxFPjtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25SZWZlcmVuY2VzID0geyByZWFkb25seSBsb2NhbDogc3RyaW5nOyByZWFkb25seSBmb3JlaWduOiBzdHJpbmcgfVtdO1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbk1hcHBlZEJ5PEU+ID0gS2V5PEU+IHwgUmVsYXRpb25LZXlNYXBwZXI8RT47XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uQ2FyZGluYWxpdHkgPSAnMTEnIHwgJ20xJyB8ICcxbScgfCAnbW0nO1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbk9uZVRvT25lT3B0aW9uczxFPiA9IFJlbGF0aW9uT3B0aW9uc093bmVyPEU+IHwgUmVsYXRpb25PcHRpb25zSW52ZXJzZVNpZGU8RT47XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uT25lVG9NYW55T3B0aW9uczxFPiA9IFJlbGF0aW9uT3B0aW9uc0ludmVyc2VTaWRlPEU+IHwgUmVsYXRpb25PcHRpb25zVGhyb3VnaE93bmVyPEU+O1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbk1hbnlUb09uZU9wdGlvbnM8RT4gPSBSZWxhdGlvbk9wdGlvbnNPd25lcjxFPiB8IFJlbGF0aW9uT3B0aW9uc0ludmVyc2VTaWRlPEU+O1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbk1hbnlUb01hbnlPcHRpb25zPEU+ID0gUmVsYXRpb25PcHRpb25zVGhyb3VnaE93bmVyPEU+IHwgUmVsYXRpb25PcHRpb25zSW52ZXJzZVNpZGU8RT47XG5cbmV4cG9ydCB0eXBlIEVudGl0eU1ldGE8RT4gPSB7XG4gIHJlYWRvbmx5IGVudGl0eTogVHlwZTxFPjtcbiAgbmFtZT86IHN0cmluZztcbiAgaWQ/OiBJZEtleTxFPjtcbiAgc29mdERlbGV0ZT86IEZpZWxkS2V5PEU+O1xuICBmaWVsZHM6IHtcbiAgICBbSyBpbiBGaWVsZEtleTxFPl0/OiBGaWVsZE9wdGlvbnM7XG4gIH07XG4gIHJlbGF0aW9uczoge1xuICAgIFtLIGluIFJlbGF0aW9uS2V5PEU+XT86IFJlbGF0aW9uT3B0aW9ucztcbiAgfTtcbiAgcHJvY2Vzc2VkPzogYm9vbGVhbjtcbn07XG4iXX0=
package/type/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export * from './utility';
2
- export * from './entity';
3
- export * from './query';
4
- export * from './universalQuerier';
5
- export * from './querier';
6
- export * from './querierPool';
7
- export * from './repository';
package/type/index.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./utility"), exports);
5
- tslib_1.__exportStar(require("./entity"), exports);
6
- tslib_1.__exportStar(require("./query"), exports);
7
- tslib_1.__exportStar(require("./universalQuerier"), exports);
8
- tslib_1.__exportStar(require("./querier"), exports);
9
- tslib_1.__exportStar(require("./querierPool"), exports);
10
- tslib_1.__exportStar(require("./repository"), exports);
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBMEI7QUFDMUIsbURBQXlCO0FBQ3pCLGtEQUF3QjtBQUN4Qiw2REFBbUM7QUFDbkMsb0RBQTBCO0FBQzFCLHdEQUE4QjtBQUM5Qix1REFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3V0aWxpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9lbnRpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9xdWVyeSc7XG5leHBvcnQgKiBmcm9tICcuL3VuaXZlcnNhbFF1ZXJpZXInO1xuZXhwb3J0ICogZnJvbSAnLi9xdWVyaWVyJztcbmV4cG9ydCAqIGZyb20gJy4vcXVlcmllclBvb2wnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvc2l0b3J5JztcbiJdfQ==
package/type/querier.d.ts DELETED
@@ -1,53 +0,0 @@
1
- import { Type } from './utility';
2
- import { Query, QueryCriteria, QueryOne, QueryOptions, QuerySearch, QueryUnique } from './query';
3
- import { Repository } from './repository';
4
- import { IdValue } from './entity';
5
- import { UniversalQuerier } from './universalQuerier';
6
- /**
7
- * logger function to debug queries.
8
- */
9
- export declare type QuerierLogger = (message: any, ...args: any[]) => any;
10
- /**
11
- * Isolation levels for transactions.
12
- */
13
- export declare type IsolationLevel = 'read uncommitted' | 'read committed' | 'repeteable read' | 'serializable';
14
- export interface Querier extends UniversalQuerier {
15
- count<E>(entity: Type<E>, qm?: QuerySearch<E>): Promise<number>;
16
- findOneById<E>(entity: Type<E>, id: IdValue<E>, qm?: QueryUnique<E>): Promise<E>;
17
- findOne<E>(entity: Type<E>, qm: QueryOne<E>): Promise<E>;
18
- findMany<E>(entity: Type<E>, qm: Query<E>): Promise<E[]>;
19
- findManyAndCount<E>(entity: Type<E>, qm: Query<E>): Promise<[E[], number]>;
20
- insertOne<E>(entity: Type<E>, payload: E): Promise<IdValue<E>>;
21
- insertMany<E>(entity: Type<E>, payload: E[]): Promise<IdValue<E>[]>;
22
- updateOneById<E>(entity: Type<E>, id: IdValue<E>, payload: E): Promise<number>;
23
- updateMany<E>(entity: Type<E>, qm: QueryCriteria<E>, payload: E): Promise<number>;
24
- saveOne<E>(entity: Type<E>, payload: E): Promise<IdValue<E>>;
25
- saveMany<E>(entity: Type<E>, payload: E[]): Promise<IdValue<E>[]>;
26
- deleteOneById<E>(entity: Type<E>, id: IdValue<E>, opts?: QueryOptions): Promise<number>;
27
- deleteMany<E>(entity: Type<E>, qm: QueryCriteria<E>, opts?: QueryOptions): Promise<number>;
28
- getRepository<E>(entity: Type<E>): Repository<E>;
29
- /**
30
- * whether this querier is in a transaction or not.
31
- */
32
- readonly hasOpenTransaction: boolean;
33
- /**
34
- * run the given callback inside a transaction in this querier.
35
- */
36
- transaction<T>(callback: (querier?: ThisType<Querier>) => Promise<T>): Promise<T>;
37
- /**
38
- * starts a new transaction in this querier.
39
- */
40
- beginTransaction(): Promise<void>;
41
- /**
42
- * commits the currently active transaction in this querier.
43
- */
44
- commitTransaction(): Promise<void>;
45
- /**
46
- * aborts the currently active transaction in this querier.
47
- */
48
- rollbackTransaction(): Promise<void>;
49
- /**
50
- * release the querier to the pool.
51
- */
52
- release(): Promise<void>;
53
- }
package/type/querier.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlL3F1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICcuL3V0aWxpdHknO1xuaW1wb3J0IHsgUXVlcnksIFF1ZXJ5Q3JpdGVyaWEsIFF1ZXJ5T25lLCBRdWVyeU9wdGlvbnMsIFF1ZXJ5U2VhcmNoLCBRdWVyeVVuaXF1ZSB9IGZyb20gJy4vcXVlcnknO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBJZFZhbHVlIH0gZnJvbSAnLi9lbnRpdHknO1xuaW1wb3J0IHsgVW5pdmVyc2FsUXVlcmllciB9IGZyb20gJy4vdW5pdmVyc2FsUXVlcmllcic7XG5cbi8qKlxuICogbG9nZ2VyIGZ1bmN0aW9uIHRvIGRlYnVnIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJpZXJMb2dnZXIgPSAobWVzc2FnZTogYW55LCAuLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuXG4vKipcbiAqIElzb2xhdGlvbiBsZXZlbHMgZm9yIHRyYW5zYWN0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgSXNvbGF0aW9uTGV2ZWwgPSAncmVhZCB1bmNvbW1pdHRlZCcgfCAncmVhZCBjb21taXR0ZWQnIHwgJ3JlcGV0ZWFibGUgcmVhZCcgfCAnc2VyaWFsaXphYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyaWVyIGV4dGVuZHMgVW5pdmVyc2FsUXVlcmllciB7XG4gIGNvdW50PEU+KGVudGl0eTogVHlwZTxFPiwgcW0/OiBRdWVyeVNlYXJjaDxFPik6IFByb21pc2U8bnVtYmVyPjtcblxuICBmaW5kT25lQnlJZDxFPihlbnRpdHk6IFR5cGU8RT4sIGlkOiBJZFZhbHVlPEU+LCBxbT86IFF1ZXJ5VW5pcXVlPEU+KTogUHJvbWlzZTxFPjtcblxuICBmaW5kT25lPEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5T25lPEU+KTogUHJvbWlzZTxFPjtcblxuICBmaW5kTWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeTxFPik6IFByb21pc2U8RVtdPjtcblxuICBmaW5kTWFueUFuZENvdW50PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5PEU+KTogUHJvbWlzZTxbRVtdLCBudW1iZXJdPjtcblxuICBpbnNlcnRPbmU8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFKTogUHJvbWlzZTxJZFZhbHVlPEU+PjtcblxuICBpbnNlcnRNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRVtdKTogUHJvbWlzZTxJZFZhbHVlPEU+W10+O1xuXG4gIHVwZGF0ZU9uZUJ5SWQ8RT4oZW50aXR5OiBUeXBlPEU+LCBpZDogSWRWYWx1ZTxFPiwgcGF5bG9hZDogRSk6IFByb21pc2U8bnVtYmVyPjtcblxuICB1cGRhdGVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgc2F2ZU9uZTxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPElkVmFsdWU8RT4+O1xuXG4gIHNhdmVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRVtdKTogUHJvbWlzZTxJZFZhbHVlPEU+W10+O1xuXG4gIGRlbGV0ZU9uZUJ5SWQ8RT4oZW50aXR5OiBUeXBlPEU+LCBpZDogSWRWYWx1ZTxFPiwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8bnVtYmVyPjtcblxuICBkZWxldGVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIG9wdHM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgZ2V0UmVwb3NpdG9yeTxFPihlbnRpdHk6IFR5cGU8RT4pOiBSZXBvc2l0b3J5PEU+O1xuXG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoaXMgcXVlcmllciBpcyBpbiBhIHRyYW5zYWN0aW9uIG9yIG5vdC5cbiAgICovXG4gIHJlYWRvbmx5IGhhc09wZW5UcmFuc2FjdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogcnVuIHRoZSBnaXZlbiBjYWxsYmFjayBpbnNpZGUgYSB0cmFuc2FjdGlvbiBpbiB0aGlzIHF1ZXJpZXIuXG4gICAqL1xuICB0cmFuc2FjdGlvbjxUPihjYWxsYmFjazogKHF1ZXJpZXI/OiBUaGlzVHlwZTxRdWVyaWVyPikgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD47XG5cbiAgLyoqXG4gICAqIHN0YXJ0cyBhIG5ldyB0cmFuc2FjdGlvbiBpbiB0aGlzIHF1ZXJpZXIuXG4gICAqL1xuICBiZWdpblRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIGNvbW1pdHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgdHJhbnNhY3Rpb24gaW4gdGhpcyBxdWVyaWVyLlxuICAgKi9cbiAgY29tbWl0VHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogYWJvcnRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRyYW5zYWN0aW9uIGluIHRoaXMgcXVlcmllci5cbiAgICovXG4gIHJvbGxiYWNrVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogcmVsZWFzZSB0aGUgcXVlcmllciB0byB0aGUgcG9vbC5cbiAgICovXG4gIHJlbGVhc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
@@ -1,18 +0,0 @@
1
- import { Querier, QuerierLogger } from './querier';
2
- /**
3
- * querier pool.
4
- */
5
- export declare type QuerierPool<Q extends Querier = Querier> = {
6
- /**
7
- * logger function to print debug messages.
8
- */
9
- logger?: QuerierLogger;
10
- /**
11
- * get a querier from the pool.
12
- */
13
- getQuerier: () => Promise<Q>;
14
- /**
15
- * end the pool.
16
- */
17
- end(): Promise<void>;
18
- };
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllclBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZS9xdWVyaWVyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcmllciwgUXVlcmllckxvZ2dlciB9IGZyb20gJy4vcXVlcmllcic7XG5cbi8qKlxuICogcXVlcmllciBwb29sLlxuICovXG5leHBvcnQgdHlwZSBRdWVyaWVyUG9vbDxRIGV4dGVuZHMgUXVlcmllciA9IFF1ZXJpZXI+ID0ge1xuICAvKipcbiAgICogbG9nZ2VyIGZ1bmN0aW9uIHRvIHByaW50IGRlYnVnIG1lc3NhZ2VzLlxuICAgKi9cbiAgbG9nZ2VyPzogUXVlcmllckxvZ2dlcjtcblxuICAvKipcbiAgICogZ2V0IGEgcXVlcmllciBmcm9tIHRoZSBwb29sLlxuICAgKi9cbiAgZ2V0UXVlcmllcjogKCkgPT4gUHJvbWlzZTxRPjtcblxuICAvKipcbiAgICogZW5kIHRoZSBwb29sLlxuICAgKi9cbiAgZW5kKCk6IFByb21pc2U8dm9pZD47XG59O1xuIl19
package/type/query.d.ts DELETED
@@ -1,394 +0,0 @@
1
- import { FieldKey, IdValue, Key, RelationKey } from './entity';
2
- import { BooleanLike, ExpandScalar, Scalar, Type, Unpacked } from './utility';
3
- export declare type QueryOptions = {
4
- /**
5
- * use or omit `softDelete` attribute.
6
- */
7
- readonly softDelete?: boolean;
8
- /**
9
- * prefix the query with this.
10
- */
11
- readonly prefix?: string;
12
- /**
13
- * automatically infer the prefix for the query.
14
- */
15
- readonly autoPrefix?: boolean;
16
- };
17
- export declare type QueryProjectOptions = {
18
- /**
19
- * prefix the query with this.
20
- */
21
- readonly prefix?: string;
22
- /**
23
- * automatically add the prefix for the alias.
24
- */
25
- readonly autoPrefixAlias?: boolean;
26
- };
27
- /**
28
- * query projection as an array.
29
- */
30
- export declare type QueryProjectArray<E> = readonly (Key<E> | QueryRaw)[];
31
- /**
32
- * query projection as a map.
33
- */
34
- export declare type QueryProjectMap<E> = QueryProjectFieldMap<E> | QueryProjectRelationMap<E>;
35
- /**
36
- * query projection.
37
- */
38
- export declare type QueryProject<E> = QueryProjectArray<E> | QueryProjectMap<E>;
39
- /**
40
- * query projection of fields as a map.
41
- */
42
- export declare type QueryProjectFieldMap<E> = {
43
- [K in FieldKey<E>]?: BooleanLike;
44
- } | {
45
- [K: string]: QueryRaw;
46
- };
47
- /**
48
- * query projection of relations as a map.
49
- */
50
- export declare type QueryProjectRelationMap<E> = {
51
- [K in RelationKey<E>]?: BooleanLike | readonly Key<Unpacked<E[K]>>[] | QueryProjectRelationOptions<E[K]>;
52
- };
53
- /**
54
- * options to project a relation.
55
- */
56
- export declare type QueryProjectRelationOptions<E> = (E extends any[] ? Query<Unpacked<E>> : QueryUnique<Unpacked<E>>) & {
57
- readonly $required?: boolean;
58
- };
59
- /**
60
- * options for full-text-search operator.
61
- */
62
- export declare type QueryTextSearchOptions<E> = {
63
- /**
64
- * text to search for.
65
- */
66
- readonly $value: string;
67
- /**
68
- * list of fields to search on.
69
- */
70
- readonly $fields?: readonly FieldKey<E>[];
71
- };
72
- /**
73
- * value for a logical filtering.
74
- */
75
- export declare type QueryFilterLogical<E> = readonly QueryFilter<E>[];
76
- /**
77
- * comparison by fields.
78
- */
79
- export declare type QueryFilterFieldMap<E> = {
80
- readonly [K in FieldKey<E>]?: QueryFilterFieldValue<E[K]>;
81
- };
82
- /**
83
- * complex operators.
84
- */
85
- export declare type QueryFilterMap<E> = QueryFilterFieldMap<E> & {
86
- /**
87
- * joins query clauses with a logical `AND`, returns records that match all the clauses.
88
- */
89
- readonly $and?: QueryFilterLogical<E>;
90
- /**
91
- * joins query clauses with a logical `OR`, returns records that match any of the clauses.
92
- */
93
- readonly $or?: QueryFilterLogical<E>;
94
- /**
95
- * joins query clauses with a logical `AND`, returns records that do not match all the clauses.
96
- */
97
- readonly $not?: QueryFilterLogical<E>;
98
- /**
99
- * joins query clauses with a logical `OR`, returns records that do not match any of the clauses.
100
- */
101
- readonly $nor?: QueryFilterLogical<E>;
102
- /**
103
- * whether the specified fields match against a full-text search of the given string.
104
- */
105
- readonly $text?: QueryTextSearchOptions<E>;
106
- /**
107
- * whether the record exists in the given sub-query.
108
- */
109
- readonly $exists?: QueryRaw;
110
- /**
111
- * whether the record does not exists in the given sub-query.
112
- */
113
- readonly $nexists?: QueryRaw;
114
- };
115
- export declare type QueryFilterFieldOperatorMap<T> = {
116
- /**
117
- * whether a value is equal to the given value.
118
- */
119
- readonly $eq?: ExpandScalar<T>;
120
- /**
121
- * whether a value is not equal to the given value.
122
- */
123
- readonly $ne?: ExpandScalar<T>;
124
- /**
125
- * negates the given comparison.
126
- */
127
- readonly $not?: QueryFilterFieldValue<T>;
128
- /**
129
- * whether a value is less than the given value.
130
- */
131
- readonly $lt?: ExpandScalar<T>;
132
- /**
133
- * whether a value is less than or equal to the given value.
134
- */
135
- readonly $lte?: ExpandScalar<T>;
136
- /**
137
- * whether a value is greater than the given value.
138
- */
139
- readonly $gt?: ExpandScalar<T>;
140
- /**
141
- * whether a value is greater than or equal to the given value.
142
- */
143
- readonly $gte?: ExpandScalar<T>;
144
- /**
145
- * whether a string begins with the given string (case sensitive).
146
- */
147
- readonly $startsWith?: string;
148
- /**
149
- * whether a string begins with the given string (case insensitive).
150
- */
151
- readonly $istartsWith?: string;
152
- /**
153
- * whether a string ends with the given string (case sensitive).
154
- */
155
- readonly $endsWith?: string;
156
- /**
157
- * whether a string ends with the given string (case insensitive).
158
- */
159
- readonly $iendsWith?: string;
160
- /**
161
- * whether a string is contained within the given string (case sensitive).
162
- */
163
- readonly $includes?: string;
164
- /**
165
- * whether a string is contained within the given string (case insensitive).
166
- */
167
- readonly $iincludes?: string;
168
- /**
169
- * whether a string fulfills the given pattern (case sensitive).
170
- */
171
- readonly $like?: string;
172
- /**
173
- * whether a string fulfills the given pattern (case insensitive).
174
- */
175
- readonly $ilike?: string;
176
- /**
177
- * whether a string matches the given regular expression.
178
- */
179
- readonly $regex?: string;
180
- /**
181
- * whether a value matches any of the given values.
182
- */
183
- readonly $in?: readonly ExpandScalar<T>[];
184
- /**
185
- * whether a value does not match any of the given values.
186
- */
187
- readonly $nin?: readonly ExpandScalar<T>[];
188
- };
189
- /**
190
- * Value for a field comparison.
191
- */
192
- export declare type QueryFilterFieldValue<T> = T | readonly T[] | QueryFilterFieldOperatorMap<T> | QueryRaw;
193
- /**
194
- * query filter.
195
- */
196
- export declare type QueryFilter<E> = IdValue<E> | readonly IdValue<E>[] | QueryRaw | QueryFilterMap<E>;
197
- /**
198
- * direction for the sort.
199
- */
200
- export declare type QuerySortDirection = -1 | 1 | 'asc' | 'desc';
201
- /**
202
- * sort by tuples
203
- */
204
- export declare type QuerySortTuples<E> = readonly [FieldKey<E>, QuerySortDirection][];
205
- /**
206
- * sort by objects.
207
- */
208
- export declare type QuerySortObjects<E> = readonly {
209
- readonly field: FieldKey<E>;
210
- readonly sort: QuerySortDirection;
211
- }[];
212
- /**
213
- * sort by fields.
214
- */
215
- export declare type QuerySortFieldMap<E> = {
216
- [K in FieldKey<E>]?: QuerySortDirection;
217
- };
218
- /**
219
- * sort by relations fields.
220
- */
221
- export declare type QuerySortRelationMap<E> = {
222
- [K in RelationKey<E>]?: QuerySortMap<Unpacked<E[K]>>;
223
- };
224
- /**
225
- * sort by map.
226
- */
227
- export declare type QuerySortMap<E> = QuerySortFieldMap<E> | QuerySortRelationMap<E>;
228
- /**
229
- * sort options.
230
- */
231
- export declare type QuerySort<E> = QuerySortMap<E> | QuerySortTuples<E> | QuerySortObjects<E>;
232
- /**
233
- * pager options.
234
- */
235
- export declare type QueryPager = {
236
- $skip?: number;
237
- $limit?: number;
238
- };
239
- /**
240
- * search options.
241
- */
242
- export declare type QuerySearch<E> = {
243
- /**
244
- * filtering options.
245
- */
246
- $filter?: QueryFilter<E>;
247
- /**
248
- * list of fields to group.
249
- */
250
- $group?: readonly FieldKey<E>[];
251
- /**
252
- * having options.
253
- */
254
- $having?: QueryFilter<E>;
255
- };
256
- /**
257
- * criteria options.
258
- */
259
- export declare type QueryCriteria<E> = QuerySearch<E> & {
260
- /**
261
- * sorting options.
262
- */
263
- $sort?: QuerySort<E>;
264
- } & QueryPager;
265
- /**
266
- * query options.
267
- */
268
- export declare type Query<E> = {
269
- /**
270
- * projection options.
271
- */
272
- $project?: QueryProject<E>;
273
- } & QueryCriteria<E>;
274
- /**
275
- * options to get a single record.
276
- */
277
- export declare type QueryOne<E> = Omit<Query<E>, '$limit'>;
278
- /**
279
- * options to get an unique record.
280
- */
281
- export declare type QueryUnique<E> = Pick<Query<E>, '$project' | '$filter'>;
282
- /**
283
- * stringified query.
284
- */
285
- export declare type QueryStringified = {
286
- readonly [K in keyof Query<any>]?: string;
287
- };
288
- /**
289
- * result of an update operation.
290
- */
291
- export declare type QueryUpdateResult = {
292
- /**
293
- * number of changes.
294
- */
295
- readonly changes?: number;
296
- /**
297
- * first inserted ID.
298
- */
299
- readonly firstId?: number;
300
- };
301
- /**
302
- * options for the `raw` function.
303
- */
304
- export declare type QueryRawFnOptions = {
305
- /**
306
- * the current dialect.
307
- */
308
- readonly dialect: QueryDialect;
309
- /**
310
- * the prefix.
311
- */
312
- readonly prefix?: string;
313
- /**
314
- * the escaped prefix.
315
- */
316
- readonly escapedPrefix?: string;
317
- };
318
- /**
319
- * a `raw` function
320
- */
321
- export declare type QueryRawFn = (opts?: QueryRawFnOptions) => string;
322
- export declare class QueryRaw {
323
- readonly value: Scalar | QueryRawFn;
324
- readonly alias?: string;
325
- constructor(value: Scalar | QueryRawFn, alias?: string);
326
- }
327
- /**
328
- * comparison options.
329
- */
330
- export declare type QueryComparisonOptions = QueryOptions & {
331
- /**
332
- * use precedence for the comparison or not.
333
- */
334
- readonly usePrecedence?: boolean;
335
- };
336
- /**
337
- * query filter options.
338
- */
339
- export declare type QueryFilterOptions = QueryComparisonOptions & {
340
- /**
341
- * clause to be used in the filter.
342
- */
343
- readonly clause?: 'WHERE' | 'HAVING' | false;
344
- };
345
- export interface QueryDialect {
346
- /**
347
- * counts the number of records matching the given search parameters.
348
- * @param entity the target entity
349
- * @param qm the criteria options
350
- * @param opts the query options
351
- */
352
- count<E>(entity: Type<E>, qm: QuerySearch<E>, opts?: QueryOptions): string;
353
- /**
354
- * obtains the records matching the given search parameters.
355
- * @param entity the target entity
356
- * @param qm the criteria options
357
- * @param opts the query options
358
- */
359
- find<E>(entity: Type<E>, qm: Query<E>, opts?: QueryOptions): string;
360
- /**
361
- * inser records.
362
- * @param entity the target entity
363
- * @param qm the criteria options
364
- * @param opts the query options
365
- */
366
- insert<E>(entity: Type<E>, payload: E | readonly E[], opts?: QueryOptions): string;
367
- /**
368
- * update records.
369
- * @param entity the target entity
370
- * @param qm the criteria options
371
- * @param payload
372
- * @param opts the query options
373
- */
374
- update<E>(entity: Type<E>, qm: QueryCriteria<E>, payload: E, opts?: QueryOptions): string;
375
- /**
376
- * delete records.
377
- * @param entity the target entity
378
- * @param qm the criteria options
379
- * @param opts the query options
380
- */
381
- delete<E>(entity: Type<E>, qm: QueryCriteria<E>, opts?: QueryOptions): string;
382
- /**
383
- * escape an identifier.
384
- * @param val the value to be escaped
385
- * @param forbidQualified don't escape dots
386
- * @param addDot use a dot as suffix
387
- */
388
- escapeId(val: string, forbidQualified?: boolean, addDot?: boolean): string;
389
- /**
390
- * escape a value.
391
- * @param val the value to escape
392
- */
393
- escape(val: any): Scalar;
394
- }
package/type/query.js DELETED
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QueryRaw = void 0;
4
- class QueryRaw {
5
- value;
6
- alias;
7
- constructor(value, alias) {
8
- this.value = value;
9
- this.alias = alias;
10
- }
11
- }
12
- exports.QueryRaw = QueryRaw;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZS9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEyVkEsTUFBYSxRQUFRO0lBQ0U7SUFBcUM7SUFBMUQsWUFBcUIsS0FBMEIsRUFBVyxLQUFjO1FBQW5ELFVBQUssR0FBTCxLQUFLLENBQXFCO1FBQVcsVUFBSyxHQUFMLEtBQUssQ0FBUztJQUFHLENBQUM7Q0FDN0U7QUFGRCw0QkFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkS2V5LCBJZFZhbHVlLCBLZXksIFJlbGF0aW9uS2V5IH0gZnJvbSAnLi9lbnRpdHknO1xuaW1wb3J0IHsgQm9vbGVhbkxpa2UsIEV4cGFuZFNjYWxhciwgU2NhbGFyLCBUeXBlLCBVbnBhY2tlZCB9IGZyb20gJy4vdXRpbGl0eSc7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIHVzZSBvciBvbWl0IGBzb2Z0RGVsZXRlYCBhdHRyaWJ1dGUuXG4gICAqL1xuICByZWFkb25seSBzb2Z0RGVsZXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIHByZWZpeCB0aGUgcXVlcnkgd2l0aCB0aGlzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogYXV0b21hdGljYWxseSBpbmZlciB0aGUgcHJlZml4IGZvciB0aGUgcXVlcnkuXG4gICAqL1xuICByZWFkb25seSBhdXRvUHJlZml4PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5UHJvamVjdE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBwcmVmaXggdGhlIHF1ZXJ5IHdpdGggdGhpcy5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBwcmVmaXggZm9yIHRoZSBhbGlhcy5cbiAgICovXG4gIHJlYWRvbmx5IGF1dG9QcmVmaXhBbGlhcz86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIHF1ZXJ5IHByb2plY3Rpb24gYXMgYW4gYXJyYXkuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UHJvamVjdEFycmF5PEU+ID0gcmVhZG9ubHkgKEtleTxFPiB8IFF1ZXJ5UmF3KVtdO1xuXG4vKipcbiAqIHF1ZXJ5IHByb2plY3Rpb24gYXMgYSBtYXAuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UHJvamVjdE1hcDxFPiA9IFF1ZXJ5UHJvamVjdEZpZWxkTWFwPEU+IHwgUXVlcnlQcm9qZWN0UmVsYXRpb25NYXA8RT47XG5cbi8qKlxuICogcXVlcnkgcHJvamVjdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlQcm9qZWN0PEU+ID0gUXVlcnlQcm9qZWN0QXJyYXk8RT4gfCBRdWVyeVByb2plY3RNYXA8RT47XG5cbi8qKlxuICogcXVlcnkgcHJvamVjdGlvbiBvZiBmaWVsZHMgYXMgYSBtYXAuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UHJvamVjdEZpZWxkTWFwPEU+ID1cbiAgfCB7XG4gICAgICBbSyBpbiBGaWVsZEtleTxFPl0/OiBCb29sZWFuTGlrZTtcbiAgICB9XG4gIHwgeyBbSzogc3RyaW5nXTogUXVlcnlSYXcgfTtcblxuLyoqXG4gKiBxdWVyeSBwcm9qZWN0aW9uIG9mIHJlbGF0aW9ucyBhcyBhIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlQcm9qZWN0UmVsYXRpb25NYXA8RT4gPSB7XG4gIFtLIGluIFJlbGF0aW9uS2V5PEU+XT86IEJvb2xlYW5MaWtlIHwgcmVhZG9ubHkgS2V5PFVucGFja2VkPEVbS10+PltdIHwgUXVlcnlQcm9qZWN0UmVsYXRpb25PcHRpb25zPEVbS10+O1xufTtcblxuLyoqXG4gKiBvcHRpb25zIHRvIHByb2plY3QgYSByZWxhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlQcm9qZWN0UmVsYXRpb25PcHRpb25zPEU+ID0gKEUgZXh0ZW5kcyBhbnlbXSA/IFF1ZXJ5PFVucGFja2VkPEU+PiA6IFF1ZXJ5VW5pcXVlPFVucGFja2VkPEU+PikgJiB7IHJlYWRvbmx5ICRyZXF1aXJlZD86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBvcHRpb25zIGZvciBmdWxsLXRleHQtc2VhcmNoIG9wZXJhdG9yLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVRleHRTZWFyY2hPcHRpb25zPEU+ID0ge1xuICAvKipcbiAgICogdGV4dCB0byBzZWFyY2ggZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgJHZhbHVlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBsaXN0IG9mIGZpZWxkcyB0byBzZWFyY2ggb24uXG4gICAqL1xuICByZWFkb25seSAkZmllbGRzPzogcmVhZG9ubHkgRmllbGRLZXk8RT5bXTtcbn07XG5cbi8qKlxuICogdmFsdWUgZm9yIGEgbG9naWNhbCBmaWx0ZXJpbmcuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyTG9naWNhbDxFPiA9IHJlYWRvbmx5IFF1ZXJ5RmlsdGVyPEU+W107XG5cbi8qKlxuICogY29tcGFyaXNvbiBieSBmaWVsZHMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyRmllbGRNYXA8RT4gPSB7IHJlYWRvbmx5IFtLIGluIEZpZWxkS2V5PEU+XT86IFF1ZXJ5RmlsdGVyRmllbGRWYWx1ZTxFW0tdPiB9O1xuXG4vKipcbiAqIGNvbXBsZXggb3BlcmF0b3JzLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeUZpbHRlck1hcDxFPiA9IFF1ZXJ5RmlsdGVyRmllbGRNYXA8RT4gJiB7XG4gIC8qKlxuICAgKiBqb2lucyBxdWVyeSBjbGF1c2VzIHdpdGggYSBsb2dpY2FsIGBBTkRgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBtYXRjaCBhbGwgdGhlIGNsYXVzZXMuXG4gICAqL1xuICByZWFkb25seSAkYW5kPzogUXVlcnlGaWx0ZXJMb2dpY2FsPEU+O1xuICAvKipcbiAgICogam9pbnMgcXVlcnkgY2xhdXNlcyB3aXRoIGEgbG9naWNhbCBgT1JgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBtYXRjaCBhbnkgb2YgdGhlIGNsYXVzZXMuXG4gICAqL1xuICByZWFkb25seSAkb3I/OiBRdWVyeUZpbHRlckxvZ2ljYWw8RT47XG4gIC8qKlxuICAgKiBqb2lucyBxdWVyeSBjbGF1c2VzIHdpdGggYSBsb2dpY2FsIGBBTkRgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBkbyBub3QgbWF0Y2ggYWxsIHRoZSBjbGF1c2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgJG5vdD86IFF1ZXJ5RmlsdGVyTG9naWNhbDxFPjtcbiAgLyoqXG4gICAqIGpvaW5zIHF1ZXJ5IGNsYXVzZXMgd2l0aCBhIGxvZ2ljYWwgYE9SYCwgcmV0dXJucyByZWNvcmRzIHRoYXQgZG8gbm90IG1hdGNoIGFueSBvZiB0aGUgY2xhdXNlcy5cbiAgICovXG4gIHJlYWRvbmx5ICRub3I/OiBRdWVyeUZpbHRlckxvZ2ljYWw8RT47XG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgZmllbGRzIG1hdGNoIGFnYWluc3QgYSBmdWxsLXRleHQgc2VhcmNoIG9mIHRoZSBnaXZlbiBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSAkdGV4dD86IFF1ZXJ5VGV4dFNlYXJjaE9wdGlvbnM8RT47XG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSByZWNvcmQgZXhpc3RzIGluIHRoZSBnaXZlbiBzdWItcXVlcnkuXG4gICAqL1xuICByZWFkb25seSAkZXhpc3RzPzogUXVlcnlSYXc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSByZWNvcmQgZG9lcyBub3QgZXhpc3RzIGluIHRoZSBnaXZlbiBzdWItcXVlcnkuXG4gICAqL1xuICByZWFkb25seSAkbmV4aXN0cz86IFF1ZXJ5UmF3O1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlGaWx0ZXJGaWVsZE9wZXJhdG9yTWFwPFQ+ID0ge1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5ICRlcT86IEV4cGFuZFNjYWxhcjxUPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgJG5lPzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogbmVnYXRlcyB0aGUgZ2l2ZW4gY29tcGFyaXNvbi5cbiAgICovXG4gIHJlYWRvbmx5ICRub3Q/OiBRdWVyeUZpbHRlckZpZWxkVmFsdWU8VD47XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5ICRsdD86IEV4cGFuZFNjYWxhcjxUPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgJGx0ZT86IEV4cGFuZFNjYWxhcjxUPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgJGd0PzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqL1xuICByZWFkb25seSAkZ3RlPzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBiZWdpbnMgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nIChjYXNlIHNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkc3RhcnRzV2l0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgYmVnaW5zIHdpdGggdGhlIGdpdmVuIHN0cmluZyAoY2FzZSBpbnNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkaXN0YXJ0c1dpdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nIChjYXNlIHNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkZW5kc1dpdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nIChjYXNlIGluc2Vuc2l0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5ICRpZW5kc1dpdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGdpdmVuIHN0cmluZyAoY2FzZSBzZW5zaXRpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgJGluY2x1ZGVzPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBpcyBjb250YWluZWQgd2l0aGluIHRoZSBnaXZlbiBzdHJpbmcgKGNhc2UgaW5zZW5zaXRpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgJGlpbmNsdWRlcz86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgZnVsZmlsbHMgdGhlIGdpdmVuIHBhdHRlcm4gKGNhc2Ugc2Vuc2l0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5ICRsaWtlPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBmdWxmaWxscyB0aGUgZ2l2ZW4gcGF0dGVybiAoY2FzZSBpbnNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkaWxpa2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIG1hdGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5ICRyZWdleD86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBtYXRjaGVzIGFueSBvZiB0aGUgZ2l2ZW4gdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgJGluPzogcmVhZG9ubHkgRXhwYW5kU2NhbGFyPFQ+W107XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgZG9lcyBub3QgbWF0Y2ggYW55IG9mIHRoZSBnaXZlbiB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSAkbmluPzogcmVhZG9ubHkgRXhwYW5kU2NhbGFyPFQ+W107XG59O1xuXG4vKipcbiAqIFZhbHVlIGZvciBhIGZpZWxkIGNvbXBhcmlzb24uXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyRmllbGRWYWx1ZTxUPiA9IFQgfCByZWFkb25seSBUW10gfCBRdWVyeUZpbHRlckZpZWxkT3BlcmF0b3JNYXA8VD4gfCBRdWVyeVJhdztcblxuLyoqXG4gKiBxdWVyeSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyPEU+ID0gSWRWYWx1ZTxFPiB8IHJlYWRvbmx5IElkVmFsdWU8RT5bXSB8IFF1ZXJ5UmF3IHwgUXVlcnlGaWx0ZXJNYXA8RT47XG5cbi8qKlxuICogZGlyZWN0aW9uIGZvciB0aGUgc29ydC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0RGlyZWN0aW9uID0gLTEgfCAxIHwgJ2FzYycgfCAnZGVzYyc7XG5cbi8qKlxuICogc29ydCBieSB0dXBsZXNcbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0VHVwbGVzPEU+ID0gcmVhZG9ubHkgW0ZpZWxkS2V5PEU+LCBRdWVyeVNvcnREaXJlY3Rpb25dW107XG5cbi8qKlxuICogc29ydCBieSBvYmplY3RzLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnRPYmplY3RzPEU+ID0gcmVhZG9ubHkgeyByZWFkb25seSBmaWVsZDogRmllbGRLZXk8RT47IHJlYWRvbmx5IHNvcnQ6IFF1ZXJ5U29ydERpcmVjdGlvbiB9W107XG5cbi8qKlxuICogc29ydCBieSBmaWVsZHMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U29ydEZpZWxkTWFwPEU+ID0ge1xuICBbSyBpbiBGaWVsZEtleTxFPl0/OiBRdWVyeVNvcnREaXJlY3Rpb247XG59O1xuXG4vKipcbiAqIHNvcnQgYnkgcmVsYXRpb25zIGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0UmVsYXRpb25NYXA8RT4gPSB7XG4gIFtLIGluIFJlbGF0aW9uS2V5PEU+XT86IFF1ZXJ5U29ydE1hcDxVbnBhY2tlZDxFW0tdPj47XG59O1xuXG4vKipcbiAqIHNvcnQgYnkgbWFwLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnRNYXA8RT4gPSBRdWVyeVNvcnRGaWVsZE1hcDxFPiB8IFF1ZXJ5U29ydFJlbGF0aW9uTWFwPEU+O1xuXG4vKipcbiAqIHNvcnQgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0PEU+ID0gUXVlcnlTb3J0TWFwPEU+IHwgUXVlcnlTb3J0VHVwbGVzPEU+IHwgUXVlcnlTb3J0T2JqZWN0czxFPjtcblxuLyoqXG4gKiBwYWdlciBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVBhZ2VyID0ge1xuICAkc2tpcD86IG51bWJlcjtcbiAgJGxpbWl0PzogbnVtYmVyO1xufTtcblxuLyoqXG4gKiBzZWFyY2ggb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTZWFyY2g8RT4gPSB7XG4gIC8qKlxuICAgKiBmaWx0ZXJpbmcgb3B0aW9ucy5cbiAgICovXG4gICRmaWx0ZXI/OiBRdWVyeUZpbHRlcjxFPjtcbiAgLyoqXG4gICAqIGxpc3Qgb2YgZmllbGRzIHRvIGdyb3VwLlxuICAgKi9cbiAgJGdyb3VwPzogcmVhZG9ubHkgRmllbGRLZXk8RT5bXTtcbiAgLyoqXG4gICAqIGhhdmluZyBvcHRpb25zLlxuICAgKi9cbiAgJGhhdmluZz86IFF1ZXJ5RmlsdGVyPEU+O1xufTtcblxuLyoqXG4gKiBjcml0ZXJpYSBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeUNyaXRlcmlhPEU+ID0gUXVlcnlTZWFyY2g8RT4gJiB7XG4gIC8qKlxuICAgKiBzb3J0aW5nIG9wdGlvbnMuXG4gICAqL1xuICAkc29ydD86IFF1ZXJ5U29ydDxFPjtcbn0gJiBRdWVyeVBhZ2VyO1xuXG4vKipcbiAqIHF1ZXJ5IG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5PEU+ID0ge1xuICAvKipcbiAgICogcHJvamVjdGlvbiBvcHRpb25zLlxuICAgKi9cbiAgJHByb2plY3Q/OiBRdWVyeVByb2plY3Q8RT47XG59ICYgUXVlcnlDcml0ZXJpYTxFPjtcblxuLyoqXG4gKiBvcHRpb25zIHRvIGdldCBhIHNpbmdsZSByZWNvcmQuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5T25lPEU+ID0gT21pdDxRdWVyeTxFPiwgJyRsaW1pdCc+O1xuXG4vKipcbiAqIG9wdGlvbnMgdG8gZ2V0IGFuIHVuaXF1ZSByZWNvcmQuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5VW5pcXVlPEU+ID0gUGljazxRdWVyeTxFPiwgJyRwcm9qZWN0JyB8ICckZmlsdGVyJz47XG5cbi8qKlxuICogc3RyaW5naWZpZWQgcXVlcnkuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U3RyaW5naWZpZWQgPSB7XG4gIHJlYWRvbmx5IFtLIGluIGtleW9mIFF1ZXJ5PGFueT5dPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiByZXN1bHQgb2YgYW4gdXBkYXRlIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlVcGRhdGVSZXN1bHQgPSB7XG4gIC8qKlxuICAgKiBudW1iZXIgb2YgY2hhbmdlcy5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBmaXJzdCBpbnNlcnRlZCBJRC5cbiAgICovXG4gIHJlYWRvbmx5IGZpcnN0SWQ/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIG9wdGlvbnMgZm9yIHRoZSBgcmF3YCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlSYXdGbk9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiB0aGUgY3VycmVudCBkaWFsZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGlhbGVjdDogUXVlcnlEaWFsZWN0O1xuICAvKipcbiAgICogdGhlIHByZWZpeC5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIHRoZSBlc2NhcGVkIHByZWZpeC5cbiAgICovXG4gIHJlYWRvbmx5IGVzY2FwZWRQcmVmaXg/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIGEgYHJhd2AgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlSYXdGbiA9IChvcHRzPzogUXVlcnlSYXdGbk9wdGlvbnMpID0+IHN0cmluZztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5UmF3IHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgdmFsdWU6IFNjYWxhciB8IFF1ZXJ5UmF3Rm4sIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nKSB7fVxufVxuXG4vKipcbiAqIGNvbXBhcmlzb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlDb21wYXJpc29uT3B0aW9ucyA9IFF1ZXJ5T3B0aW9ucyAmIHtcbiAgLyoqXG4gICAqIHVzZSBwcmVjZWRlbmNlIGZvciB0aGUgY29tcGFyaXNvbiBvciBub3QuXG4gICAqL1xuICByZWFkb25seSB1c2VQcmVjZWRlbmNlPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogcXVlcnkgZmlsdGVyIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyT3B0aW9ucyA9IFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMgJiB7XG4gIC8qKlxuICAgKiBjbGF1c2UgdG8gYmUgdXNlZCBpbiB0aGUgZmlsdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xhdXNlPzogJ1dIRVJFJyB8ICdIQVZJTkcnIHwgZmFsc2U7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RGlhbGVjdCB7XG4gIC8qKlxuICAgKiBjb3VudHMgdGhlIG51bWJlciBvZiByZWNvcmRzIG1hdGNoaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdHMgdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICovXG4gIGNvdW50PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5U2VhcmNoPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBvYnRhaW5zIHRoZSByZWNvcmRzIG1hdGNoaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdHMgdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICovXG4gIGZpbmQ8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnk8RT4sIG9wdHM/OiBRdWVyeU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGluc2VyIHJlY29yZHMuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRzIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBpbnNlcnQ8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFIHwgcmVhZG9ubHkgRVtdLCBvcHRzPzogUXVlcnlPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiB1cGRhdGUgcmVjb3Jkcy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICogQHBhcmFtIG9wdHMgdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICovXG4gIHVwZGF0ZTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeUNyaXRlcmlhPEU+LCBwYXlsb2FkOiBFLCBvcHRzPzogUXVlcnlPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBkZWxldGUgcmVjb3Jkcy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdHMgdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICovXG4gIGRlbGV0ZTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeUNyaXRlcmlhPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBlc2NhcGUgYW4gaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHZhbCB0aGUgdmFsdWUgdG8gYmUgZXNjYXBlZFxuICAgKiBAcGFyYW0gZm9yYmlkUXVhbGlmaWVkIGRvbid0IGVzY2FwZSBkb3RzXG4gICAqIEBwYXJhbSBhZGREb3QgdXNlIGEgZG90IGFzIHN1ZmZpeFxuICAgKi9cbiAgZXNjYXBlSWQodmFsOiBzdHJpbmcsIGZvcmJpZFF1YWxpZmllZD86IGJvb2xlYW4sIGFkZERvdD86IGJvb2xlYW4pOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGVzY2FwZSBhIHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsIHRoZSB2YWx1ZSB0byBlc2NhcGVcbiAgICovXG4gIGVzY2FwZSh2YWw6IGFueSk6IFNjYWxhcjtcbn1cbiJdfQ==
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlL3JlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElkVmFsdWUgfSBmcm9tICcuL2VudGl0eSc7XG5pbXBvcnQgeyBRdWVyaWVyIH0gZnJvbSAnLi9xdWVyaWVyJztcbmltcG9ydCB7IFF1ZXJ5LCBRdWVyeUNyaXRlcmlhLCBRdWVyeU9uZSwgUXVlcnlPcHRpb25zLCBRdWVyeVNlYXJjaCwgUXVlcnlVbmlxdWUgfSBmcm9tICcuL3F1ZXJ5JztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICcuL3V0aWxpdHknO1xuXG4vKipcbiAqIEEgYHJlcG9zaXRvcnlgIGFsbG93cyB0byBpbnRlcmFjdCB3aXRoIHRoZSBkYXRhc291cmNlIHRvIHBlcmZvcm0gcGVyc2lzdGVuY2Ugb3BlcmF0aW9ucyBvbiBhIHNwZWNpZmljIGVudGl0eS5cbiAqL1xuZXhwb3J0IHR5cGUgVW5pdmVyc2FsUmVwb3NpdG9yeTxFPiA9IHtcbiAgLyoqXG4gICAqIGNvdW50cyB0aGUgbnVtYmVyIG9mIHJlY29yZHMgbWF0Y2hpbmcgdGhlIGdpdmVuIHNlYXJjaCBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0gcW0gdGhlIHNlYXJjaCBvcHRpb25zXG4gICAqL1xuICBjb3VudChxbTogUXVlcnlTZWFyY2g8RT4pOiBQcm9taXNlPGFueT47XG5cbiAgLyoqXG4gICAqIG9idGFpbnMgdGhlIHJlY29yZCB3aXRoIHRoZSBnaXZlbiBwcmltYXJ5IGtleS5cbiAgICogQHBhcmFtIGlkIHRoZSBwcmltYXJ5IGtleSB2YWx1ZVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICovXG4gIGZpbmRPbmVCeUlkKGlkOiBJZFZhbHVlPEU+LCBxbT86IFF1ZXJ5VW5pcXVlPEU+KTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBvYnRhaW5zIHRoZSBmaXJzdCByZWNvcmQgbWF0Y2hpbmcgdGhlIGdpdmVuIHNlYXJjaCBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICovXG4gIGZpbmRPbmUocW06IFF1ZXJ5T25lPEU+KTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBvYnRhaW5zIHRoZSByZWNvcmRzIG1hdGNoaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqL1xuICBmaW5kTWFueShxbTogUXVlcnk8RT4pOiBQcm9taXNlPGFueT47XG5cbiAgLyoqXG4gICAqIG9idGFpbnMgdGhlIHJlY29yZHMgbWF0Y2hpbmcgdGhlIGdpdmVuIHNlYXJjaCBwYXJhbWV0ZXJzLFxuICAgKiBhbHNvIGNvdW50cyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgaWdub3JpbmcgcGFnaW5hdGlvbi5cbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqL1xuICBmaW5kTWFueUFuZENvdW50KHFtOiBRdWVyeTxFPik6IFByb21pc2U8YW55PjtcblxuICAvKipcbiAgICogaW5zZXJ0cyBhIHJlY29yZC5cbiAgICogQHBhcmFtIHBheWxvYWQgdGhlIGRhdGEgdG8gYmUgcGVyc2lzdGVkXG4gICAqL1xuICBpbnNlcnRPbmUocGF5bG9hZDogRSk6IFByb21pc2U8YW55PjtcblxuICAvKipcbiAgICogSW5zZXJ0cyBtYW55IHJlY29yZHMuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIGVudGl0eSB0byBwZXJzaXN0IG9uXG4gICAqIEBwYXJhbSBwYXlsb2FkIHRoZSBkYXRhIHRvIGJlIHBlcnNpc3RlZFxuICAgKi9cbiAgaW5zZXJ0TWFueT8ocGF5bG9hZDogRVtdKTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiB1cGRhdGVzIGEgcmVjb3JkIHBhcnRpYWxseS5cbiAgICogQHBhcmFtIGlkIHRoZSBwcmltYXJ5IGtleSBvZiB0aGUgcmVjb3JkIHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIHBheWxvYWQgdGhlIGRhdGEgdG8gYmUgcGVyc2lzdGVkXG4gICAqL1xuICB1cGRhdGVPbmVCeUlkKGlkOiBJZFZhbHVlPEU+LCBwYXlsb2FkOiBFKTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiB1cGRhdGVzIG1hbnkgcmVjb3JkcyBwYXJ0aWFsbHkuXG4gICAqIEBwYXJhbSBxbSB0aGUgY3JpdGVyaWEgdG8gbG9vayBmb3IgdGhlIHJlY29yZHNcbiAgICogQHBhcmFtIHBheWxvYWQgdGhlIGRhdGEgdG8gYmUgcGVyc2lzdGVkXG4gICAqL1xuICB1cGRhdGVNYW55PyhxbTogUXVlcnlDcml0ZXJpYTxFPiwgcGF5bG9hZDogRSk6IFByb21pc2U8YW55PjtcblxuICAvKipcbiAgICogSW5zZXJ0IG9yIHVwZGF0ZSBhIHJlY29yZC5cbiAgICogQHBhcmFtIHBheWxvYWQgdGhlIGRhdGEgdG8gYmUgcGVyc2lzdGVkXG4gICAqL1xuICBzYXZlT25lKHBheWxvYWQ6IEUpOiBQcm9taXNlPGFueT47XG5cbiAgLyoqXG4gICAqIGluc2VydCBvciB1cGRhdGUgcmVjb3Jkcy5cbiAgICogQHBhcmFtIHBheWxvYWQgdGhlIGRhdGEgdG8gYmUgcGVyc2lzdGVkXG4gICAqL1xuICBzYXZlTWFueT8ocGF5bG9hZDogRVtdKTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBkZWxldGUgb3IgU29mdERlbGV0ZSBhIHJlY29yZC5cbiAgICogQHBhcmFtIGlkIHRoZSBwcmltYXJ5IGtleSBvZiB0aGUgcmVjb3JkXG4gICAqL1xuICBkZWxldGVPbmVCeUlkKGlkOiBJZFZhbHVlPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBkZWxldGUgb3IgU29mdERlbGV0ZSByZWNvcmRzLlxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIHRvIGxvb2sgZm9yIHRoZSByZWNvcmRzXG4gICAqL1xuICBkZWxldGVNYW55KHFtOiBRdWVyeUNyaXRlcmlhPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xufTtcblxuLyoqXG4gKiBiYXNlIGNvbnRyYWN0IGZvciB0aGUgYmFja2VuZCByZXBvc2l0b3JpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3NpdG9yeTxFPiBleHRlbmRzIFVuaXZlcnNhbFJlcG9zaXRvcnk8RT4ge1xuICAvKipcbiAgICogdGhlIGBlbnRpdHlgIHR5cGUgdG8gd2hpY2ggdGhpcyBgcmVwb3NpdG9yeWAgaXMgbGlua2VkIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50aXR5OiBUeXBlPEU+O1xuXG4gIC8qKlxuICAgKiB0aGUgYHF1ZXJpZXJgIGluc3RhbmNlIHRvIHdoaWNoIHRoaXMgYHJlcG9zaXRvcnlgIGlzIGxpbmtlZCB0by5cbiAgICovXG4gIHJlYWRvbmx5IHF1ZXJpZXI6IFF1ZXJpZXI7XG5cbiAgY291bnQocW06IFF1ZXJ5Q3JpdGVyaWE8RT4pOiBQcm9taXNlPG51bWJlcj47XG5cbiAgZmluZE9uZUJ5SWQoaWQ6IElkVmFsdWU8RT4sIHFtPzogUXVlcnlVbmlxdWU8RT4pOiBQcm9taXNlPEU+O1xuXG4gIGZpbmRPbmUocW06IFF1ZXJ5T25lPEU+KTogUHJvbWlzZTxFPjtcblxuICBmaW5kTWFueShxbTogUXVlcnk8RT4pOiBQcm9taXNlPEVbXT47XG5cbiAgZmluZE1hbnlBbmRDb3VudChxbTogUXVlcnk8RT4pOiBQcm9taXNlPFtFW10sIG51bWJlcl0+O1xuXG4gIGluc2VydE9uZShwYXlsb2FkOiBFKTogUHJvbWlzZTxJZFZhbHVlPEU+PjtcblxuICBpbnNlcnRNYW55KHBheWxvYWQ6IEVbXSk6IFByb21pc2U8SWRWYWx1ZTxFPltdPjtcblxuICB1cGRhdGVPbmVCeUlkKGlkOiBJZFZhbHVlPEU+LCBwYXlsb2FkOiBFKTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIHVwZGF0ZU1hbnkocW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgc2F2ZU9uZShwYXlsb2FkOiBFKTogUHJvbWlzZTxJZFZhbHVlPEU+PjtcblxuICBzYXZlTWFueT8ocGF5bG9hZDogRVtdKTogUHJvbWlzZTxJZFZhbHVlPEU+W10+O1xuXG4gIGRlbGV0ZU9uZUJ5SWQoaWQ6IElkVmFsdWU8RT4sIG9wdHM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgZGVsZXRlTWFueShxbTogUXVlcnlDcml0ZXJpYTxFPiwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8bnVtYmVyPjtcbn1cbiJdfQ==
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdmVyc2FsUXVlcmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlL3VuaXZlcnNhbFF1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICcuL3V0aWxpdHknO1xuaW1wb3J0IHsgUXVlcnksIFF1ZXJ5Q3JpdGVyaWEsIFF1ZXJ5T25lLCBRdWVyeU9wdGlvbnMsIFF1ZXJ5U2VhcmNoLCBRdWVyeVVuaXF1ZSB9IGZyb20gJy4vcXVlcnknO1xuaW1wb3J0IHsgVW5pdmVyc2FsUmVwb3NpdG9yeSB9IGZyb20gJy4vcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBJZFZhbHVlIH0gZnJvbSAnLi9lbnRpdHknO1xuXG4vKipcbiAqIEEgYHF1ZXJpZXJgIGFsbG93cyB0byBpbnRlcmFjdCB3aXRoIHRoZSBkYXRhc291cmNlIHRvIHBlcmZvcm0gcGVyc2lzdGVuY2Ugb3BlcmF0aW9ucyBvbiBhbnkgZW50aXR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaXZlcnNhbFF1ZXJpZXIge1xuICAvKipcbiAgICogY291bnRzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyBtYXRjaGluZyB0aGUgZ2l2ZW4gc2VhcmNoIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIHFtIHRoZSBzZWFyY2ggb3B0aW9uc1xuICAgKi9cbiAgY291bnQ8RT4oZW50aXR5OiBUeXBlPEU+LCBxbT86IFF1ZXJ5U2VhcmNoPEU+KTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBvYnRhaW5zIHRoZSByZWNvcmQgd2l0aCB0aGUgZ2l2ZW4gcHJpbWFyeSBrZXkuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIGlkIHRoZSBwcmltYXJ5IGtleSB2YWx1ZVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICovXG4gIGZpbmRPbmVCeUlkPEU+KGVudGl0eTogVHlwZTxFPiwgaWQ6IElkVmFsdWU8RT4sIHFtPzogUXVlcnlVbmlxdWU8RT4pOiBQcm9taXNlPGFueT47XG5cbiAgLyoqXG4gICAqIG9idGFpbnMgdGhlIGZpcnN0IHJlY29yZCBtYXRjaGluZyB0aGUgZ2l2ZW4gc2VhcmNoIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqL1xuICBmaW5kT25lPEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5T25lPEU+KTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBvYnRhaW5zIHRoZSByZWNvcmRzIG1hdGNoaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICovXG4gIGZpbmRNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5PEU+KTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBvYnRhaW5zIHRoZSByZWNvcmRzIG1hdGNoaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycyxcbiAgICogYWxzbyBjb3VudHMgdGhlIG51bWJlciBvZiBtYXRjaGVzIGlnbm9yaW5nIHBhZ2luYXRpb24uXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqL1xuICBmaW5kTWFueUFuZENvdW50PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5PEU+KTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBpbnNlcnRzIGEgcmVjb3JkLlxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSBlbnRpdHkgdG8gcGVyc2lzdCBvblxuICAgKiBAcGFyYW0gcGF5bG9hZCB0aGUgZGF0YSB0byBiZSBwZXJzaXN0ZWRcbiAgICovXG4gIGluc2VydE9uZTxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPGFueT47XG5cbiAgLyoqXG4gICAqIEluc2VydHMgbWFueSByZWNvcmRzLlxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSBlbnRpdHkgdG8gcGVyc2lzdCBvblxuICAgKiBAcGFyYW0gcGF5bG9hZCB0aGUgZGF0YSB0byBiZSBwZXJzaXN0ZWRcbiAgICovXG4gIGluc2VydE1hbnk/PEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRVtdKTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiB1cGRhdGVzIGEgcmVjb3JkIHBhcnRpYWxseS5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgZW50aXR5IHRvIHBlcnNpc3Qgb25cbiAgICogQHBhcmFtIGlkIHRoZSBwcmltYXJ5IGtleSBvZiB0aGUgcmVjb3JkIHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIHBheWxvYWQgdGhlIGRhdGEgdG8gYmUgcGVyc2lzdGVkXG4gICAqL1xuICB1cGRhdGVPbmVCeUlkPEU+KGVudGl0eTogVHlwZTxFPiwgaWQ6IElkVmFsdWU8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPGFueT47XG5cbiAgLyoqXG4gICAqIHVwZGF0ZXMgbWFueSByZWNvcmRzIHBhcnRpYWxseS5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgZW50aXR5IHRvIHBlcnNpc3Qgb25cbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSB0byBsb29rIGZvciB0aGUgcmVjb3Jkc1xuICAgKiBAcGFyYW0gcGF5bG9hZCB0aGUgZGF0YSB0byBiZSBwZXJzaXN0ZWRcbiAgICovXG4gIHVwZGF0ZU1hbnk/PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPGFueT47XG5cbiAgLyoqXG4gICAqIGluc2VydCBvciB1cGRhdGUgYSByZWNvcmQuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIGVudGl0eSB0byBwZXJzaXN0IG9uXG4gICAqIEBwYXJhbSBwYXlsb2FkIHRoZSBkYXRhIHRvIGJlIHBlcnNpc3RlZFxuICAgKi9cbiAgc2F2ZU9uZTxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPGFueT47XG5cbiAgLyoqXG4gICAqIEluc2VydCBvciB1cGRhdGUgcmVjb3Jkcy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgZW50aXR5IHRvIHBlcnNpc3Qgb25cbiAgICogQHBhcmFtIHBheWxvYWQgdGhlIGRhdGEgdG8gYmUgcGVyc2lzdGVkXG4gICAqL1xuICBzYXZlTWFueT88RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFW10pOiBQcm9taXNlPGFueT47XG5cbiAgLyoqXG4gICAqIGRlbGV0ZSBvciBTb2Z0RGVsZXRlIGEgcmVjb3JkLlxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSBlbnRpdHkgdG8gcGVyc2lzdCBvblxuICAgKiBAcGFyYW0gaWQgdGhlIHByaW1hcnkga2V5IG9mIHRoZSByZWNvcmRcbiAgICovXG4gIGRlbGV0ZU9uZUJ5SWQ8RT4oZW50aXR5OiBUeXBlPEU+LCBpZDogSWRWYWx1ZTxFPiwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8YW55PjtcblxuICAvKipcbiAgICogZGVsZXRlIG9yIFNvZnREZWxldGUgcmVjb3Jkcy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgZW50aXR5IHRvIHBlcnNpc3Qgb25cbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSB0byBsb29rIGZvciB0aGUgcmVjb3Jkc1xuICAgKi9cbiAgZGVsZXRlTWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeUNyaXRlcmlhPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBnZXQgYSByZXBvc2l0b3J5IGZvciB0aGUgZ2l2ZW4gZW50aXR5LlxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSBlbnRpdHkgdG8gZ2V0IHRoZSByZXBvc2l0b3J5IGZvclxuICAgKi9cbiAgZ2V0UmVwb3NpdG9yeTxFPihlbnRpdHk6IFR5cGU8RT4pOiBVbml2ZXJzYWxSZXBvc2l0b3J5PEU+O1xufVxuIl19