@aerokit/sdk 12.44.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 (399) hide show
  1. package/LICENSE +277 -0
  2. package/README.md +170 -0
  3. package/dist/cjs/bpm/deployer.js +57 -0
  4. package/dist/cjs/bpm/index.js +35 -0
  5. package/dist/cjs/bpm/process.js +636 -0
  6. package/dist/cjs/bpm/tasks.js +973 -0
  7. package/dist/cjs/bpm/values.js +82 -0
  8. package/dist/cjs/cache/cache.js +64 -0
  9. package/dist/cjs/cache/index.js +26 -0
  10. package/dist/cjs/cms/cmis.js +689 -0
  11. package/dist/cjs/cms/index.js +26 -0
  12. package/dist/cjs/component/decorators.js +126 -0
  13. package/dist/cjs/component/index.js +36 -0
  14. package/dist/cjs/core/configurations.js +110 -0
  15. package/dist/cjs/core/context.js +47 -0
  16. package/dist/cjs/core/env.js +45 -0
  17. package/dist/cjs/core/globals.js +54 -0
  18. package/dist/cjs/core/index.js +35 -0
  19. package/dist/cjs/db/dao.js +795 -0
  20. package/dist/cjs/db/database.js +904 -0
  21. package/dist/cjs/db/decorators.js +167 -0
  22. package/dist/cjs/db/index.js +72 -0
  23. package/dist/cjs/db/insert.js +51 -0
  24. package/dist/cjs/db/orm.js +245 -0
  25. package/dist/cjs/db/ormstatements.js +243 -0
  26. package/dist/cjs/db/procedure.js +112 -0
  27. package/dist/cjs/db/query.js +57 -0
  28. package/dist/cjs/db/repository.js +148 -0
  29. package/dist/cjs/db/sequence.js +59 -0
  30. package/dist/cjs/db/sql.js +516 -0
  31. package/dist/cjs/db/store.js +172 -0
  32. package/dist/cjs/db/translator.js +100 -0
  33. package/dist/cjs/db/update.js +43 -0
  34. package/dist/cjs/etcd/client.js +174 -0
  35. package/dist/cjs/etcd/index.js +26 -0
  36. package/dist/cjs/extensions/decorators.js +40 -0
  37. package/dist/cjs/extensions/extensions.js +108 -0
  38. package/dist/cjs/extensions/index.js +39 -0
  39. package/dist/cjs/git/client.js +277 -0
  40. package/dist/cjs/git/index.js +26 -0
  41. package/dist/cjs/http/client-async.js +224 -0
  42. package/dist/cjs/http/client.js +145 -0
  43. package/dist/cjs/http/decorators.js +76 -0
  44. package/dist/cjs/http/errors/ForbiddenError.js +41 -0
  45. package/dist/cjs/http/errors/ValidationError.js +41 -0
  46. package/dist/cjs/http/errors.js +26 -0
  47. package/dist/cjs/http/index.js +59 -0
  48. package/dist/cjs/http/request.js +281 -0
  49. package/dist/cjs/http/response.js +452 -0
  50. package/dist/cjs/http/rs/resource-common.js +32 -0
  51. package/dist/cjs/http/rs/resource-http-controller.js +306 -0
  52. package/dist/cjs/http/rs/resource-mappings.js +130 -0
  53. package/dist/cjs/http/rs/resource-method.js +218 -0
  54. package/dist/cjs/http/rs/resource.js +232 -0
  55. package/dist/cjs/http/rs.js +31 -0
  56. package/dist/cjs/http/session.js +124 -0
  57. package/dist/cjs/http/upload.js +144 -0
  58. package/dist/cjs/http/utils.js +106 -0
  59. package/dist/cjs/index.js +1 -0
  60. package/dist/cjs/indexing/index.js +29 -0
  61. package/dist/cjs/indexing/searcher.js +70 -0
  62. package/dist/cjs/indexing/writer.js +45 -0
  63. package/dist/cjs/integrations/index.js +26 -0
  64. package/dist/cjs/integrations/integrations.js +55 -0
  65. package/dist/cjs/io/bytes.js +101 -0
  66. package/dist/cjs/io/files.js +344 -0
  67. package/dist/cjs/io/image.js +43 -0
  68. package/dist/cjs/io/index.js +38 -0
  69. package/dist/cjs/io/streams.js +243 -0
  70. package/dist/cjs/io/zip.js +251 -0
  71. package/dist/cjs/job/decorators.js +40 -0
  72. package/dist/cjs/job/index.js +39 -0
  73. package/dist/cjs/job/scheduler.js +347 -0
  74. package/dist/cjs/junit/index.js +18 -0
  75. package/dist/cjs/junit/junit.js +67 -0
  76. package/dist/cjs/kafka/consumer.js +70 -0
  77. package/dist/cjs/kafka/index.js +29 -0
  78. package/dist/cjs/kafka/producer.js +70 -0
  79. package/dist/cjs/log/index.js +26 -0
  80. package/dist/cjs/log/logging.js +174 -0
  81. package/dist/cjs/mail/client.js +153 -0
  82. package/dist/cjs/mail/index.js +26 -0
  83. package/dist/cjs/messaging/consumer.js +83 -0
  84. package/dist/cjs/messaging/decorators.js +40 -0
  85. package/dist/cjs/messaging/index.js +42 -0
  86. package/dist/cjs/messaging/producer.js +81 -0
  87. package/dist/cjs/mongodb/client.js +627 -0
  88. package/dist/cjs/mongodb/dao.js +390 -0
  89. package/dist/cjs/mongodb/index.js +36 -0
  90. package/dist/cjs/net/decorators.js +40 -0
  91. package/dist/cjs/net/index.js +42 -0
  92. package/dist/cjs/net/soap.js +228 -0
  93. package/dist/cjs/net/websockets.js +151 -0
  94. package/dist/cjs/net/wrappers/onClose.js +2 -0
  95. package/dist/cjs/net/wrappers/onError.js +2 -0
  96. package/dist/cjs/net/wrappers/onMessage.js +2 -0
  97. package/dist/cjs/net/wrappers/onOpen.js +2 -0
  98. package/dist/cjs/pdf/index.js +26 -0
  99. package/dist/cjs/pdf/pdf.js +160 -0
  100. package/dist/cjs/platform/command.js +47 -0
  101. package/dist/cjs/platform/engines.js +70 -0
  102. package/dist/cjs/platform/index.js +47 -0
  103. package/dist/cjs/platform/lifecycle.js +49 -0
  104. package/dist/cjs/platform/os.js +51 -0
  105. package/dist/cjs/platform/problems.js +127 -0
  106. package/dist/cjs/platform/registry.js +319 -0
  107. package/dist/cjs/platform/repository.js +498 -0
  108. package/dist/cjs/platform/workspace.js +574 -0
  109. package/dist/cjs/qldb/index.js +26 -0
  110. package/dist/cjs/qldb/qldb.js +24 -0
  111. package/dist/cjs/rabbitmq/consumer.js +50 -0
  112. package/dist/cjs/rabbitmq/index.js +29 -0
  113. package/dist/cjs/rabbitmq/producer.js +38 -0
  114. package/dist/cjs/redis/client.js +190 -0
  115. package/dist/cjs/redis/index.js +26 -0
  116. package/dist/cjs/security/decorators.js +48 -0
  117. package/dist/cjs/security/index.js +40 -0
  118. package/dist/cjs/security/oauth.js +75 -0
  119. package/dist/cjs/security/user.js +88 -0
  120. package/dist/cjs/template/engines.js +139 -0
  121. package/dist/cjs/template/index.js +26 -0
  122. package/dist/cjs/utils/alphanumeric.js +107 -0
  123. package/dist/cjs/utils/base64.js +104 -0
  124. package/dist/cjs/utils/converter.js +78 -0
  125. package/dist/cjs/utils/digest.js +167 -0
  126. package/dist/cjs/utils/escape.js +160 -0
  127. package/dist/cjs/utils/hex.js +104 -0
  128. package/dist/cjs/utils/index.js +68 -0
  129. package/dist/cjs/utils/jsonpath.js +489 -0
  130. package/dist/cjs/utils/qrcode.js +41 -0
  131. package/dist/cjs/utils/url.js +82 -0
  132. package/dist/cjs/utils/utf8.js +61 -0
  133. package/dist/cjs/utils/uuid.js +48 -0
  134. package/dist/cjs/utils/xml.js +57 -0
  135. package/dist/dts/bpm/deployer.d.ts +29 -0
  136. package/dist/dts/bpm/index.d.ts +8 -0
  137. package/dist/dts/bpm/process.d.ts +433 -0
  138. package/dist/dts/bpm/tasks.d.ts +2022 -0
  139. package/dist/dts/bpm/values.d.ts +38 -0
  140. package/dist/dts/cache/cache.d.ts +30 -0
  141. package/dist/dts/cache/index.d.ts +2 -0
  142. package/dist/dts/cms/cmis.d.ts +413 -0
  143. package/dist/dts/cms/index.d.ts +2 -0
  144. package/dist/dts/component/decorators.d.ts +52 -0
  145. package/dist/dts/component/index.d.ts +2 -0
  146. package/dist/dts/core/configurations.d.ts +65 -0
  147. package/dist/dts/core/context.d.ts +19 -0
  148. package/dist/dts/core/env.d.ts +23 -0
  149. package/dist/dts/core/globals.d.ts +30 -0
  150. package/dist/dts/core/index.d.ts +8 -0
  151. package/dist/dts/db/dao.d.ts +8 -0
  152. package/dist/dts/db/database.d.ts +507 -0
  153. package/dist/dts/db/decorators.d.ts +89 -0
  154. package/dist/dts/db/index.d.ts +25 -0
  155. package/dist/dts/db/insert.d.ts +32 -0
  156. package/dist/dts/db/orm.d.ts +44 -0
  157. package/dist/dts/db/ormstatements.d.ts +4 -0
  158. package/dist/dts/db/procedure.d.ts +25 -0
  159. package/dist/dts/db/query.d.ts +48 -0
  160. package/dist/dts/db/repository.d.ts +64 -0
  161. package/dist/dts/db/sequence.d.ts +34 -0
  162. package/dist/dts/db/sql.d.ts +267 -0
  163. package/dist/dts/db/store.d.ts +138 -0
  164. package/dist/dts/db/translator.d.ts +26 -0
  165. package/dist/dts/db/update.d.ts +21 -0
  166. package/dist/dts/etcd/client.d.ts +92 -0
  167. package/dist/dts/etcd/index.d.ts +2 -0
  168. package/dist/dts/extensions/decorators.d.ts +11 -0
  169. package/dist/dts/extensions/extensions.d.ts +41 -0
  170. package/dist/dts/extensions/index.d.ts +4 -0
  171. package/dist/dts/git/client.d.ts +478 -0
  172. package/dist/dts/git/index.d.ts +2 -0
  173. package/dist/dts/http/client-async.d.ts +158 -0
  174. package/dist/dts/http/client.d.ts +180 -0
  175. package/dist/dts/http/decorators.d.ts +11 -0
  176. package/dist/dts/http/errors/ForbiddenError.d.ts +20 -0
  177. package/dist/dts/http/errors/ValidationError.d.ts +20 -0
  178. package/dist/dts/http/errors.d.ts +2 -0
  179. package/dist/dts/http/index.d.ts +16 -0
  180. package/dist/dts/http/request.d.ts +158 -0
  181. package/dist/dts/http/response.d.ts +281 -0
  182. package/dist/dts/http/rs/resource-common.d.ts +11 -0
  183. package/dist/dts/http/rs/resource-http-controller.d.ts +43 -0
  184. package/dist/dts/http/rs/resource-mappings.d.ts +70 -0
  185. package/dist/dts/http/rs/resource-method.d.ts +206 -0
  186. package/dist/dts/http/rs/resource.d.ts +126 -0
  187. package/dist/dts/http/rs.d.ts +4 -0
  188. package/dist/dts/http/session.d.ts +81 -0
  189. package/dist/dts/http/upload.d.ts +100 -0
  190. package/dist/dts/http/utils.d.ts +54 -0
  191. package/dist/dts/index.d.ts +0 -0
  192. package/dist/dts/indexing/index.d.ts +4 -0
  193. package/dist/dts/indexing/searcher.d.ts +47 -0
  194. package/dist/dts/indexing/writer.d.ts +22 -0
  195. package/dist/dts/integrations/index.d.ts +2 -0
  196. package/dist/dts/integrations/integrations.d.ts +118 -0
  197. package/dist/dts/io/bytes.d.ts +56 -0
  198. package/dist/dts/io/files.d.ts +261 -0
  199. package/dist/dts/io/image.d.ts +22 -0
  200. package/dist/dts/io/index.d.ts +10 -0
  201. package/dist/dts/io/streams.d.ts +172 -0
  202. package/dist/dts/io/zip.d.ts +178 -0
  203. package/dist/dts/job/decorators.d.ts +11 -0
  204. package/dist/dts/job/index.d.ts +4 -0
  205. package/dist/dts/job/scheduler.d.ts +250 -0
  206. package/dist/dts/junit/index.d.ts +1 -0
  207. package/dist/dts/junit/junit.d.ts +50 -0
  208. package/dist/dts/kafka/consumer.d.ts +48 -0
  209. package/dist/dts/kafka/index.d.ts +4 -0
  210. package/dist/dts/kafka/producer.d.ts +50 -0
  211. package/dist/dts/log/index.d.ts +2 -0
  212. package/dist/dts/log/logging.d.ts +102 -0
  213. package/dist/dts/mail/client.d.ts +90 -0
  214. package/dist/dts/mail/index.d.ts +2 -0
  215. package/dist/dts/messaging/consumer.d.ts +61 -0
  216. package/dist/dts/messaging/decorators.d.ts +11 -0
  217. package/dist/dts/messaging/index.d.ts +6 -0
  218. package/dist/dts/messaging/producer.d.ts +59 -0
  219. package/dist/dts/mongodb/client.d.ts +367 -0
  220. package/dist/dts/mongodb/dao.d.ts +24 -0
  221. package/dist/dts/mongodb/index.d.ts +2 -0
  222. package/dist/dts/net/decorators.d.ts +11 -0
  223. package/dist/dts/net/index.d.ts +6 -0
  224. package/dist/dts/net/soap.d.ts +115 -0
  225. package/dist/dts/net/websockets.d.ts +100 -0
  226. package/dist/dts/net/wrappers/onClose.d.ts +0 -0
  227. package/dist/dts/net/wrappers/onError.d.ts +0 -0
  228. package/dist/dts/net/wrappers/onMessage.d.ts +0 -0
  229. package/dist/dts/net/wrappers/onOpen.d.ts +0 -0
  230. package/dist/dts/pdf/index.d.ts +2 -0
  231. package/dist/dts/pdf/pdf.d.ts +72 -0
  232. package/dist/dts/platform/command.d.ts +41 -0
  233. package/dist/dts/platform/engines.d.ts +35 -0
  234. package/dist/dts/platform/index.d.ts +16 -0
  235. package/dist/dts/platform/lifecycle.d.ts +22 -0
  236. package/dist/dts/platform/os.d.ts +23 -0
  237. package/dist/dts/platform/problems.d.ts +114 -0
  238. package/dist/dts/platform/registry.d.ts +227 -0
  239. package/dist/dts/platform/repository.d.ts +354 -0
  240. package/dist/dts/platform/workspace.d.ts +421 -0
  241. package/dist/dts/qldb/index.d.ts +2 -0
  242. package/dist/dts/qldb/qldb.d.ts +1 -0
  243. package/dist/dts/rabbitmq/consumer.d.ts +25 -0
  244. package/dist/dts/rabbitmq/index.d.ts +4 -0
  245. package/dist/dts/rabbitmq/producer.d.ts +15 -0
  246. package/dist/dts/redis/client.d.ts +134 -0
  247. package/dist/dts/redis/index.d.ts +2 -0
  248. package/dist/dts/security/decorators.d.ts +4 -0
  249. package/dist/dts/security/index.d.ts +5 -0
  250. package/dist/dts/security/oauth.d.ts +39 -0
  251. package/dist/dts/security/user.d.ts +51 -0
  252. package/dist/dts/template/engines.d.ts +98 -0
  253. package/dist/dts/template/index.d.ts +2 -0
  254. package/dist/dts/utils/alphanumeric.d.ts +39 -0
  255. package/dist/dts/utils/base64.d.ts +48 -0
  256. package/dist/dts/utils/converter.d.ts +44 -0
  257. package/dist/dts/utils/digest.d.ts +50 -0
  258. package/dist/dts/utils/escape.d.ts +110 -0
  259. package/dist/dts/utils/hex.d.ts +48 -0
  260. package/dist/dts/utils/index.d.ts +23 -0
  261. package/dist/dts/utils/jsonpath.d.ts +22 -0
  262. package/dist/dts/utils/qrcode.d.ts +16 -0
  263. package/dist/dts/utils/url.d.ts +50 -0
  264. package/dist/dts/utils/utf8.d.ts +33 -0
  265. package/dist/dts/utils/uuid.d.ts +21 -0
  266. package/dist/dts/utils/xml.d.ts +22 -0
  267. package/dist/esm/bpm/deployer.mjs +38 -0
  268. package/dist/esm/bpm/index.mjs +15 -0
  269. package/dist/esm/bpm/process.mjs +617 -0
  270. package/dist/esm/bpm/tasks.mjs +954 -0
  271. package/dist/esm/bpm/values.mjs +63 -0
  272. package/dist/esm/cache/cache.mjs +45 -0
  273. package/dist/esm/cache/index.mjs +6 -0
  274. package/dist/esm/cms/cmis.mjs +660 -0
  275. package/dist/esm/cms/index.mjs +6 -0
  276. package/dist/esm/component/decorators.mjs +107 -0
  277. package/dist/esm/component/index.mjs +6 -0
  278. package/dist/esm/core/configurations.mjs +91 -0
  279. package/dist/esm/core/context.mjs +28 -0
  280. package/dist/esm/core/env.mjs +26 -0
  281. package/dist/esm/core/globals.mjs +35 -0
  282. package/dist/esm/core/index.mjs +15 -0
  283. package/dist/esm/db/dao.mjs +775 -0
  284. package/dist/esm/db/database.mjs +885 -0
  285. package/dist/esm/db/decorators.mjs +148 -0
  286. package/dist/esm/db/index.mjs +42 -0
  287. package/dist/esm/db/insert.mjs +32 -0
  288. package/dist/esm/db/orm.mjs +225 -0
  289. package/dist/esm/db/ormstatements.mjs +223 -0
  290. package/dist/esm/db/procedure.mjs +93 -0
  291. package/dist/esm/db/query.mjs +38 -0
  292. package/dist/esm/db/repository.mjs +129 -0
  293. package/dist/esm/db/sequence.mjs +40 -0
  294. package/dist/esm/db/sql.mjs +497 -0
  295. package/dist/esm/db/store.mjs +153 -0
  296. package/dist/esm/db/translator.mjs +81 -0
  297. package/dist/esm/db/update.mjs +24 -0
  298. package/dist/esm/etcd/client.mjs +155 -0
  299. package/dist/esm/etcd/index.mjs +6 -0
  300. package/dist/esm/extensions/decorators.mjs +21 -0
  301. package/dist/esm/extensions/extensions.mjs +89 -0
  302. package/dist/esm/extensions/index.mjs +9 -0
  303. package/dist/esm/git/client.mjs +258 -0
  304. package/dist/esm/git/index.mjs +6 -0
  305. package/dist/esm/http/client-async.mjs +205 -0
  306. package/dist/esm/http/client.mjs +126 -0
  307. package/dist/esm/http/decorators.mjs +47 -0
  308. package/dist/esm/http/errors/ForbiddenError.mjs +22 -0
  309. package/dist/esm/http/errors/ValidationError.mjs +22 -0
  310. package/dist/esm/http/errors.mjs +7 -0
  311. package/dist/esm/http/index.mjs +29 -0
  312. package/dist/esm/http/request.mjs +262 -0
  313. package/dist/esm/http/response.mjs +433 -0
  314. package/dist/esm/http/rs/resource-common.mjs +13 -0
  315. package/dist/esm/http/rs/resource-http-controller.mjs +287 -0
  316. package/dist/esm/http/rs/resource-mappings.mjs +111 -0
  317. package/dist/esm/http/rs/resource-method.mjs +199 -0
  318. package/dist/esm/http/rs/resource.mjs +213 -0
  319. package/dist/esm/http/rs.mjs +12 -0
  320. package/dist/esm/http/session.mjs +105 -0
  321. package/dist/esm/http/upload.mjs +125 -0
  322. package/dist/esm/http/utils.mjs +87 -0
  323. package/dist/esm/index.mjs +1 -0
  324. package/dist/esm/indexing/index.mjs +9 -0
  325. package/dist/esm/indexing/searcher.mjs +51 -0
  326. package/dist/esm/indexing/writer.mjs +26 -0
  327. package/dist/esm/integrations/index.mjs +6 -0
  328. package/dist/esm/integrations/integrations.mjs +36 -0
  329. package/dist/esm/io/bytes.mjs +82 -0
  330. package/dist/esm/io/files.mjs +325 -0
  331. package/dist/esm/io/image.mjs +24 -0
  332. package/dist/esm/io/index.mjs +18 -0
  333. package/dist/esm/io/streams.mjs +224 -0
  334. package/dist/esm/io/zip.mjs +232 -0
  335. package/dist/esm/job/decorators.mjs +21 -0
  336. package/dist/esm/job/index.mjs +9 -0
  337. package/dist/esm/job/scheduler.mjs +328 -0
  338. package/dist/esm/junit/index.mjs +2 -0
  339. package/dist/esm/junit/junit.mjs +48 -0
  340. package/dist/esm/kafka/consumer.mjs +51 -0
  341. package/dist/esm/kafka/index.mjs +9 -0
  342. package/dist/esm/kafka/producer.mjs +51 -0
  343. package/dist/esm/log/index.mjs +6 -0
  344. package/dist/esm/log/logging.mjs +155 -0
  345. package/dist/esm/mail/client.mjs +134 -0
  346. package/dist/esm/mail/index.mjs +6 -0
  347. package/dist/esm/messaging/consumer.mjs +64 -0
  348. package/dist/esm/messaging/decorators.mjs +21 -0
  349. package/dist/esm/messaging/index.mjs +12 -0
  350. package/dist/esm/messaging/producer.mjs +62 -0
  351. package/dist/esm/mongodb/client.mjs +608 -0
  352. package/dist/esm/mongodb/dao.mjs +360 -0
  353. package/dist/esm/mongodb/index.mjs +7 -0
  354. package/dist/esm/net/decorators.mjs +21 -0
  355. package/dist/esm/net/index.mjs +12 -0
  356. package/dist/esm/net/soap.mjs +209 -0
  357. package/dist/esm/net/websockets.mjs +132 -0
  358. package/dist/esm/net/wrappers/onClose.mjs +2 -0
  359. package/dist/esm/net/wrappers/onError.mjs +2 -0
  360. package/dist/esm/net/wrappers/onMessage.mjs +2 -0
  361. package/dist/esm/net/wrappers/onOpen.mjs +2 -0
  362. package/dist/esm/pdf/index.mjs +6 -0
  363. package/dist/esm/pdf/pdf.mjs +141 -0
  364. package/dist/esm/platform/command.mjs +28 -0
  365. package/dist/esm/platform/engines.mjs +51 -0
  366. package/dist/esm/platform/index.mjs +27 -0
  367. package/dist/esm/platform/lifecycle.mjs +30 -0
  368. package/dist/esm/platform/os.mjs +32 -0
  369. package/dist/esm/platform/problems.mjs +108 -0
  370. package/dist/esm/platform/registry.mjs +300 -0
  371. package/dist/esm/platform/repository.mjs +479 -0
  372. package/dist/esm/platform/workspace.mjs +555 -0
  373. package/dist/esm/qldb/index.mjs +6 -0
  374. package/dist/esm/qldb/qldb.mjs +5 -0
  375. package/dist/esm/rabbitmq/consumer.mjs +31 -0
  376. package/dist/esm/rabbitmq/index.mjs +9 -0
  377. package/dist/esm/rabbitmq/producer.mjs +19 -0
  378. package/dist/esm/redis/client.mjs +171 -0
  379. package/dist/esm/redis/index.mjs +6 -0
  380. package/dist/esm/security/decorators.mjs +29 -0
  381. package/dist/esm/security/index.mjs +10 -0
  382. package/dist/esm/security/oauth.mjs +56 -0
  383. package/dist/esm/security/user.mjs +69 -0
  384. package/dist/esm/template/engines.mjs +120 -0
  385. package/dist/esm/template/index.mjs +6 -0
  386. package/dist/esm/utils/alphanumeric.mjs +88 -0
  387. package/dist/esm/utils/base64.mjs +85 -0
  388. package/dist/esm/utils/converter.mjs +59 -0
  389. package/dist/esm/utils/digest.mjs +148 -0
  390. package/dist/esm/utils/escape.mjs +141 -0
  391. package/dist/esm/utils/hex.mjs +85 -0
  392. package/dist/esm/utils/index.mjs +38 -0
  393. package/dist/esm/utils/jsonpath.mjs +470 -0
  394. package/dist/esm/utils/qrcode.mjs +22 -0
  395. package/dist/esm/utils/url.mjs +63 -0
  396. package/dist/esm/utils/utf8.mjs +42 -0
  397. package/dist/esm/utils/uuid.mjs +29 -0
  398. package/dist/esm/utils/xml.mjs +38 -0
  399. package/package.json +58 -0
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ormstatements_exports = {};
20
+ __export(ormstatements_exports, {
21
+ ORMStatements: () => ORMStatements,
22
+ create: () => create
23
+ });
24
+ module.exports = __toCommonJS(ormstatements_exports);
25
+ var import_log = require("@aerokit/sdk/log");
26
+ var import_sql = require("./sql");
27
+ function ORMStatements(orm, dialect) {
28
+ this.$log = import_log.Logging.getLogger("db.dao.ormstatements");
29
+ this.orm = orm;
30
+ this.orm.tableName = this.orm.table;
31
+ this.orm.properties.forEach(function(property) {
32
+ property.columnName = property.column;
33
+ });
34
+ this.dialect = dialect || import_sql.SQLBuilder.getDialect();
35
+ }
36
+ ;
37
+ ORMStatements.prototype.constructor = ORMStatements;
38
+ ORMStatements.prototype.createTable = function() {
39
+ const builder = this.dialect.create().table(this.orm.table);
40
+ this.orm.properties.forEach(function(property) {
41
+ const column = this.orm.toColumn(property);
42
+ if (property.type.toUpperCase() === "VARCHAR") {
43
+ if (property.length === void 0)
44
+ property.length = 255;
45
+ builder.columnVarchar(column.name, property.length, column.primaryKey === "true", column.nullable === "true", property.unique);
46
+ } else if (property.type.toUpperCase() === "CHAR") {
47
+ if (property.length === void 0)
48
+ property.length = 1;
49
+ property.length = parseInt(property.length, 10);
50
+ builder.columnChar(column.name, property.length, column.primaryKey === "true", column.nullable === "true", property.unique);
51
+ } else {
52
+ builder.column(column.name, column.type, column.primaryKey === "true", column.nullable === "true", property.unique);
53
+ }
54
+ }.bind(this));
55
+ return builder;
56
+ };
57
+ ORMStatements.prototype.dropTable = function() {
58
+ return this.dialect.drop().table(this.orm.table);
59
+ };
60
+ ORMStatements.prototype.insert = function() {
61
+ const builder = this.dialect.insert().into(this.orm.table);
62
+ this.orm.properties.forEach(function(property) {
63
+ builder.column(property.column).value("?", property);
64
+ });
65
+ return builder;
66
+ };
67
+ ORMStatements.prototype.update = function(entity) {
68
+ if (!entity)
69
+ throw Error("Illegal argument: entity[" + entity + "]");
70
+ const builder = this.dialect.update().table(this.orm.table);
71
+ this.orm.properties.filter(function(property) {
72
+ return Object.keys(entity).indexOf(property.name) > -1 && (!property.allowedOps || property.allowedOps.indexOf("update") > -1);
73
+ }).forEach(function(property) {
74
+ if (!property.id)
75
+ builder.set(property.column, "?", property);
76
+ });
77
+ const pkProperty = this.orm.getPrimaryKey();
78
+ builder.where(pkProperty.column + "=?", [pkProperty]);
79
+ return builder;
80
+ };
81
+ ORMStatements.prototype["delete"] = ORMStatements.prototype.remove = function() {
82
+ const builder = this.dialect.delete().from(this.orm.table);
83
+ if (arguments[0] !== void 0) {
84
+ let filterFieldNames = arguments[0];
85
+ if (filterFieldNames.constructor !== Array)
86
+ filterFieldNames = [filterFieldNames];
87
+ for (let i = 0; i < filterFieldNames.length; i++) {
88
+ const property = this.orm.getProperty(filterFieldNames[i]);
89
+ if (!property)
90
+ throw Error("Unknown property name: " + filterFieldNames[i] + " in $filter");
91
+ builder.where(property.column + "=?", [property]);
92
+ }
93
+ }
94
+ return builder;
95
+ };
96
+ ORMStatements.prototype.find = function(params) {
97
+ let builder = this.dialect.select();
98
+ if (params !== void 0 && params.select !== void 0) {
99
+ const selectedFields = params.select.constructor === Array ? params.select : [params.select];
100
+ for (let i = 0; i < selectedFields.length; i++) {
101
+ const property = this.orm.getProperty(selectedFields[i]);
102
+ if (!property)
103
+ throw Error("Unknown field name [" + selectedFields[i] + "] in $select");
104
+ builder = builder.column(property.column);
105
+ }
106
+ }
107
+ builder = builder.from(this.orm.table).where(this.orm.getPrimaryKey().column + "=?", [this.orm.getPrimaryKey()]);
108
+ return builder;
109
+ };
110
+ ORMStatements.prototype.count = function(settings) {
111
+ const builder = this.dialect.select().column("COUNT(*)").from(this.orm.table);
112
+ addFilter(this.orm, builder, settings);
113
+ return builder;
114
+ };
115
+ ORMStatements.prototype.list = function(settings) {
116
+ let i;
117
+ settings = settings || {};
118
+ const sort = settings.$sort || settings.sort;
119
+ const order = settings.$order || settings.order;
120
+ const selectedFields = settings.$select || settings.select;
121
+ const builder = this.dialect.select().from(this.orm.table);
122
+ if (selectedFields) {
123
+ for (i = 0; i < selectedFields.length; i++) {
124
+ const property = this.orm.getProperty(selectedFields[i]);
125
+ if (!property)
126
+ throw Error("Unknown field name [" + selectedFields[i] + "] in $select");
127
+ builder.column(property.column);
128
+ }
129
+ }
130
+ addFilter(this.orm, builder, settings);
131
+ const propertyDefinitions = this.orm.properties.filter(function(property) {
132
+ for (var settingName in settings) {
133
+ if (settingName === property.name)
134
+ return true;
135
+ }
136
+ return false;
137
+ });
138
+ if (propertyDefinitions.length > 0) {
139
+ for (i = 0; i < propertyDefinitions.length; i++) {
140
+ const def = propertyDefinitions[i];
141
+ if (settings?.$filter && settings.$filter?.indexOf(def.name) > -1) {
142
+ builder.where(def.column + " LIKE ?", [def]);
143
+ } else {
144
+ const val = settings[def.name];
145
+ if (val === null || val === void 0) {
146
+ builder.where(def.column + " IS NULL", [def]);
147
+ } else {
148
+ if (val.indexOf && val.indexOf(">") > -1) {
149
+ builder.where(def.column + " > ?", [def]);
150
+ } else if (val.indexOf && val.indexOf("<") > -1) {
151
+ builder.where(def.column + " < ?", [def]);
152
+ } else {
153
+ builder.where(def.column + "=?", [def]);
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
159
+ if (sort !== void 0) {
160
+ var _sort = sort.split(",");
161
+ for (i = 0; i < _sort.length; i++) {
162
+ let _order = true;
163
+ if (order !== void 0) {
164
+ if (["asc", "desc"].indexOf(String(order).toLowerCase()) > -1) {
165
+ _order = order.toLowerCase() === "desc" ? false : true;
166
+ }
167
+ }
168
+ if (this.orm.getProperty(_sort[i])) {
169
+ builder.order(this.orm.getProperty(_sort[i]).column, _order);
170
+ } else {
171
+ console.error("Column: " + _sort[i] + " not present in " + JSON.stringify(this.orm));
172
+ }
173
+ }
174
+ }
175
+ addLimit(builder, settings);
176
+ addOffset(builder, settings);
177
+ return builder;
178
+ };
179
+ function addFilter(orm, builder, settings) {
180
+ if (settings?.$filter) {
181
+ const equalsPropertiesKeys = Object.keys(settings.$filter.equals ?? []);
182
+ const notEqualsPropertiesKeys = Object.keys(settings.$filter.notEquals ?? []);
183
+ const containsPropertiesKeys = Object.keys(settings.$filter.contains ?? []);
184
+ const greaterThanPropertiesKeys = Object.keys(settings.$filter.greaterThan ?? []);
185
+ const lessThanPropertiesKeys = Object.keys(settings.$filter.lessThan ?? []);
186
+ const greaterThanOrEqualPropertiesKeys = Object.keys(settings.$filter.greaterThanOrEqual ?? []);
187
+ const lessThanOrEqualPropertiesKeys = Object.keys(settings.$filter.lessThanOrEqual ?? []);
188
+ const equalsProperties = orm.properties.filter((e) => equalsPropertiesKeys.includes(e.name));
189
+ const notEqualsProperties = orm.properties.filter((e) => notEqualsPropertiesKeys.includes(e.name));
190
+ const containsProperties = orm.properties.filter((e) => containsPropertiesKeys.includes(e.name));
191
+ const greaterThanProperties = orm.properties.filter((e) => greaterThanPropertiesKeys.includes(e.name));
192
+ const lessThanProperties = orm.properties.filter((e) => lessThanPropertiesKeys.includes(e.name));
193
+ const greaterThanOrEqualProperties = orm.properties.filter((e) => greaterThanOrEqualPropertiesKeys.includes(e.name));
194
+ const lessThanOrEqualProperties = orm.properties.filter((e) => lessThanOrEqualPropertiesKeys.includes(e.name));
195
+ equalsProperties.forEach((e) => {
196
+ const value = settings.$filter.equals[e.name];
197
+ if (value === null || value === void 0) {
198
+ builder.where(e.column + " IS NULL", [e]);
199
+ } else if (Array.isArray(value)) {
200
+ builder.where(`${e.column} IN (${value.map((v) => "?").join(", ")})`, [e]);
201
+ } else {
202
+ builder.where(`${e.column} = ?`, [e]);
203
+ }
204
+ });
205
+ notEqualsProperties.forEach((e) => {
206
+ const value = settings.$filter.notEquals[e.name];
207
+ if (value === null || value === void 0) {
208
+ builder.where(e.column + " IS NOT NULL", [e]);
209
+ } else if (Array.isArray(value)) {
210
+ builder.where(`${e.column} NOT IN (${value.map((v) => "?").join(", ")})`, [e]);
211
+ } else {
212
+ builder.where(`${e.column} != ?`, [e]);
213
+ }
214
+ });
215
+ containsProperties.forEach((e) => builder.where(`${e.column} LIKE ?`, [e]));
216
+ greaterThanProperties.forEach((e) => builder.where(`${e.column} > ?`, [e]));
217
+ lessThanProperties.forEach((e) => builder.where(`${e.column} < ?`, [e]));
218
+ greaterThanOrEqualProperties.forEach((e) => builder.where(`${e.column} >= ?`, [e]));
219
+ lessThanOrEqualProperties.forEach((e) => builder.where(`${e.column} <= ?`, [e]));
220
+ }
221
+ }
222
+ function addLimit(builder, settings) {
223
+ const limit = settings.$limit ?? settings.limit;
224
+ if (limit !== void 0) {
225
+ builder.limit(parseInt(limit, 10));
226
+ }
227
+ }
228
+ function addOffset(builder, settings) {
229
+ const offset = settings.$offset ?? settings.offset;
230
+ if (offset !== void 0) {
231
+ builder.offset(parseInt(offset, 10));
232
+ }
233
+ }
234
+ function create(orm, connection) {
235
+ let dialect;
236
+ if (connection) {
237
+ dialect = import_sql.SQLBuilder.getDialect(connection);
238
+ }
239
+ const stmnts = new ORMStatements(orm, dialect);
240
+ return stmnts;
241
+ }
242
+ ;
243
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL29ybXN0YXRlbWVudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9sb2dcIjtcbmltcG9ydCB7IENyZWF0ZVRhYmxlQnVpbGRlciwgRGVsZXRlQnVpbGRlciwgRHJvcFRhYmxlQnVpbGRlciwgSW5zZXJ0QnVpbGRlciwgU2VsZWN0QnVpbGRlciwgU1FMQnVpbGRlciwgVXBkYXRlQnVpbGRlciB9IGZyb20gXCIuL3NxbFwiO1xuaW1wb3J0IHsgQ29ubmVjdGlvbiB9IGZyb20gXCIuL2RhdGFiYXNlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBPUk1TdGF0ZW1lbnRzKG9ybSwgZGlhbGVjdDogU1FMQnVpbGRlcikge1xuXHR0aGlzLiRsb2cgPSBMb2dnaW5nLmdldExvZ2dlcignZGIuZGFvLm9ybXN0YXRlbWVudHMnKTtcblx0dGhpcy5vcm0gPSBvcm07XG5cdHRoaXMub3JtLnRhYmxlTmFtZSA9IHRoaXMub3JtLnRhYmxlO1xuXHR0aGlzLm9ybS5wcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0cHJvcGVydHkuY29sdW1uTmFtZSA9IHByb3BlcnR5LmNvbHVtbjtcblx0fSk7XG5cdHRoaXMuZGlhbGVjdCA9IGRpYWxlY3QgfHwgU1FMQnVpbGRlci5nZXREaWFsZWN0KCk7XG59O1xuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBPUk1TdGF0ZW1lbnRzO1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5jcmVhdGVUYWJsZSA9IGZ1bmN0aW9uICgpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LmNyZWF0ZSgpLnRhYmxlKHRoaXMub3JtLnRhYmxlKTtcblxuXHR0aGlzLm9ybS5wcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0Y29uc3QgY29sdW1uID0gdGhpcy5vcm0udG9Db2x1bW4ocHJvcGVydHkpO1xuXHRcdGlmIChwcm9wZXJ0eS50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdWQVJDSEFSJykge1xuXHRcdFx0aWYgKHByb3BlcnR5Lmxlbmd0aCA9PT0gdW5kZWZpbmVkKVxuXHRcdFx0XHRwcm9wZXJ0eS5sZW5ndGggPSAyNTU7XG5cdFx0XHRidWlsZGVyLmNvbHVtblZhcmNoYXIoY29sdW1uLm5hbWUsIHByb3BlcnR5Lmxlbmd0aCwgY29sdW1uLnByaW1hcnlLZXkgPT09ICd0cnVlJywgY29sdW1uLm51bGxhYmxlID09PSAndHJ1ZScsIHByb3BlcnR5LnVuaXF1ZSk7XG5cdFx0fSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdDSEFSJykge1xuXHRcdFx0aWYgKHByb3BlcnR5Lmxlbmd0aCA9PT0gdW5kZWZpbmVkKVxuXHRcdFx0XHRwcm9wZXJ0eS5sZW5ndGggPSAxO1xuXHRcdFx0cHJvcGVydHkubGVuZ3RoID0gcGFyc2VJbnQocHJvcGVydHkubGVuZ3RoLCAxMCk7XG5cdFx0XHRidWlsZGVyLmNvbHVtbkNoYXIoY29sdW1uLm5hbWUsIHByb3BlcnR5Lmxlbmd0aCwgY29sdW1uLnByaW1hcnlLZXkgPT09ICd0cnVlJywgY29sdW1uLm51bGxhYmxlID09PSAndHJ1ZScsIHByb3BlcnR5LnVuaXF1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGJ1aWxkZXIuY29sdW1uKGNvbHVtbi5uYW1lLCBjb2x1bW4udHlwZSwgY29sdW1uLnByaW1hcnlLZXkgPT09ICd0cnVlJywgY29sdW1uLm51bGxhYmxlID09PSAndHJ1ZScsIHByb3BlcnR5LnVuaXF1ZSk7XG5cdFx0fVxuXHR9LmJpbmQodGhpcykpO1xuXG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuZHJvcFRhYmxlID0gZnVuY3Rpb24gKCk6IERyb3BUYWJsZUJ1aWxkZXIge1xuXHRyZXR1cm4gdGhpcy5kaWFsZWN0LmRyb3AoKS50YWJsZSh0aGlzLm9ybS50YWJsZSk7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAoKTogSW5zZXJ0QnVpbGRlciB7XG5cdGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmRpYWxlY3QuaW5zZXJ0KCkuaW50byh0aGlzLm9ybS50YWJsZSk7XG5cdHRoaXMub3JtLnByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRidWlsZGVyLmNvbHVtbihwcm9wZXJ0eS5jb2x1bW4pLnZhbHVlKCc/JywgcHJvcGVydHkpO1xuXHR9KTtcblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZW50aXR5KTogVXBkYXRlQnVpbGRlciB7XG5cdGlmICghZW50aXR5KVxuXHRcdHRocm93IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBlbnRpdHlbJyArIGVudGl0eSArICddJyk7XG5cblx0Y29uc3QgYnVpbGRlciA9IHRoaXMuZGlhbGVjdC51cGRhdGUoKS50YWJsZSh0aGlzLm9ybS50YWJsZSk7XG5cdHRoaXMub3JtLnByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyhlbnRpdHkpLmluZGV4T2YocHJvcGVydHkubmFtZSkgPiAtMSAmJiAoIXByb3BlcnR5LmFsbG93ZWRPcHMgfHwgcHJvcGVydHkuYWxsb3dlZE9wcy5pbmRleE9mKCd1cGRhdGUnKSA+IC0xKTtcblx0fSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRpZiAoIXByb3BlcnR5LmlkKVxuXHRcdFx0YnVpbGRlci5zZXQocHJvcGVydHkuY29sdW1uLCAnPycsIHByb3BlcnR5KTtcblx0fSk7XG5cdGNvbnN0IHBrUHJvcGVydHkgPSB0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCk7XG5cdGJ1aWxkZXIud2hlcmUocGtQcm9wZXJ0eS5jb2x1bW4gKyAnPT8nLCBbcGtQcm9wZXJ0eV0pO1xuXHRyZXR1cm4gYnVpbGRlcjtcbn07XG5cbk9STVN0YXRlbWVudHMucHJvdG90eXBlW1wiZGVsZXRlXCJdID0gT1JNU3RhdGVtZW50cy5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKCk6IERlbGV0ZUJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LmRlbGV0ZSgpLmZyb20odGhpcy5vcm0udGFibGUpO1xuXHRpZiAoYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQpIHtcblx0XHRsZXQgZmlsdGVyRmllbGROYW1lcyA9IGFyZ3VtZW50c1swXTtcblx0XHRpZiAoZmlsdGVyRmllbGROYW1lcy5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpXG5cdFx0XHRmaWx0ZXJGaWVsZE5hbWVzID0gW2ZpbHRlckZpZWxkTmFtZXNdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyRmllbGROYW1lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLm9ybS5nZXRQcm9wZXJ0eShmaWx0ZXJGaWVsZE5hbWVzW2ldKTtcblx0XHRcdGlmICghcHJvcGVydHkpXG5cdFx0XHRcdHRocm93IEVycm9yKCdVbmtub3duIHByb3BlcnR5IG5hbWU6ICcgKyBmaWx0ZXJGaWVsZE5hbWVzW2ldICsgXCIgaW4gJGZpbHRlclwiKTtcblx0XHRcdGJ1aWxkZXIud2hlcmUocHJvcGVydHkuY29sdW1uICsgXCI9P1wiLCBbcHJvcGVydHldKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHBhcmFtcyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRsZXQgYnVpbGRlciA9IHRoaXMuZGlhbGVjdC5zZWxlY3QoKTtcblx0aWYgKHBhcmFtcyAhPT0gdW5kZWZpbmVkICYmIHBhcmFtcy5zZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IHNlbGVjdGVkRmllbGRzID0gcGFyYW1zLnNlbGVjdC5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgPyBwYXJhbXMuc2VsZWN0IDogW3BhcmFtcy5zZWxlY3RdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5vcm0uZ2V0UHJvcGVydHkoc2VsZWN0ZWRGaWVsZHNbaV0pO1xuXHRcdFx0aWYgKCFwcm9wZXJ0eSlcblx0XHRcdFx0dGhyb3cgRXJyb3IoJ1Vua25vd24gZmllbGQgbmFtZSBbJyArIHNlbGVjdGVkRmllbGRzW2ldICsgJ10gaW4gJHNlbGVjdCcpO1xuXHRcdFx0YnVpbGRlciA9IGJ1aWxkZXIuY29sdW1uKHByb3BlcnR5LmNvbHVtbik7XG5cdFx0fVxuXHR9XG5cdGJ1aWxkZXIgPSBidWlsZGVyLmZyb20odGhpcy5vcm0udGFibGUpXG5cdFx0LndoZXJlKHRoaXMub3JtLmdldFByaW1hcnlLZXkoKS5jb2x1bW4gKyBcIj0/XCIsIFt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCldKTtcblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uIChzZXR0aW5ncyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LnNlbGVjdCgpLmNvbHVtbignQ09VTlQoKiknKS5mcm9tKHRoaXMub3JtLnRhYmxlKTtcblx0YWRkRmlsdGVyKHRoaXMub3JtLCBidWlsZGVyLCBzZXR0aW5ncyk7XG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUubGlzdCA9IGZ1bmN0aW9uIChzZXR0aW5ncyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRsZXQgaTtcblx0c2V0dGluZ3MgPSBzZXR0aW5ncyB8fCB7fTtcblx0Y29uc3Qgc29ydCA9IHNldHRpbmdzLiRzb3J0IHx8IHNldHRpbmdzLnNvcnQ7XG5cdGNvbnN0IG9yZGVyID0gc2V0dGluZ3MuJG9yZGVyIHx8IHNldHRpbmdzLm9yZGVyO1xuXHRjb25zdCBzZWxlY3RlZEZpZWxkcyA9IHNldHRpbmdzLiRzZWxlY3QgfHwgc2V0dGluZ3Muc2VsZWN0O1xuXG5cdGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmRpYWxlY3Quc2VsZWN0KCkuZnJvbSh0aGlzLm9ybS50YWJsZSk7XG5cblx0Ly9hZGQgc2VsZWN0ZWQgZmllbGRzIGlmIGFueVxuXHRpZiAoc2VsZWN0ZWRGaWVsZHMpIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5vcm0uZ2V0UHJvcGVydHkoc2VsZWN0ZWRGaWVsZHNbaV0pO1xuXHRcdFx0aWYgKCFwcm9wZXJ0eSlcblx0XHRcdFx0dGhyb3cgRXJyb3IoJ1Vua25vd24gZmllbGQgbmFtZSBbJyArIHNlbGVjdGVkRmllbGRzW2ldICsgJ10gaW4gJHNlbGVjdCcpO1xuXHRcdFx0YnVpbGRlci5jb2x1bW4ocHJvcGVydHkuY29sdW1uKTtcblx0XHR9XG5cdH1cblxuXHQvL2FkZCB3aGVyZSBjbGF1c2UgZm9yIGFueSBmaWVsZHNcblx0YWRkRmlsdGVyKHRoaXMub3JtLCBidWlsZGVyLCBzZXR0aW5ncyk7XG5cblx0Ly8gVE9ETzogVGhlIGZvbGxvd2luZyBjb2RlIG1pZ2h0IG5vdCBiZSBuZWVkZWQgYW55bW9yZVxuXHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb25zID0gdGhpcy5vcm0ucHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0Zm9yICh2YXIgc2V0dGluZ05hbWUgaW4gc2V0dGluZ3MpIHtcblx0XHRcdGlmIChzZXR0aW5nTmFtZSA9PT0gcHJvcGVydHkubmFtZSlcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSk7XG5cdGlmIChwcm9wZXJ0eURlZmluaXRpb25zLmxlbmd0aCA+IDApIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgcHJvcGVydHlEZWZpbml0aW9ucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgZGVmID0gcHJvcGVydHlEZWZpbml0aW9uc1tpXTtcblx0XHRcdGlmIChzZXR0aW5ncz8uJGZpbHRlciAmJiBzZXR0aW5ncy4kZmlsdGVyPy5pbmRleE9mKGRlZi5uYW1lKSA+IC0xKSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoZGVmLmNvbHVtbiArICcgTElLRSA/JywgW2RlZl0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmFsID0gc2V0dGluZ3NbZGVmLm5hbWVdO1xuXHRcdFx0XHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0YnVpbGRlci53aGVyZShkZWYuY29sdW1uICsgJyBJUyBOVUxMJywgW2RlZl0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmICh2YWwuaW5kZXhPZiAmJiB2YWwuaW5kZXhPZignPicpID4gLTEpIHtcblx0XHRcdFx0XHRcdGJ1aWxkZXIud2hlcmUoZGVmLmNvbHVtbiArICcgPiA/JywgW2RlZl0pO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodmFsLmluZGV4T2YgJiYgdmFsLmluZGV4T2YoJzwnKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRidWlsZGVyLndoZXJlKGRlZi5jb2x1bW4gKyAnIDwgPycsIFtkZWZdKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YnVpbGRlci53aGVyZShkZWYuY29sdW1uICsgJz0/JywgW2RlZl0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChzb3J0ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YXIgX3NvcnQgPSBzb3J0LnNwbGl0KCcsJyk7XG5cdFx0Zm9yIChpID0gMDsgaSA8IF9zb3J0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgX29yZGVyID0gdHJ1ZTsvL0FTQ1xuXHRcdFx0Ly9UT0RPOiBjaGFuZ2UgdG8gYmUgYWJsZSB0byBvcmRlciBwZXIgc29ydCBwcm9wZXJ0eVxuXHRcdFx0aWYgKG9yZGVyICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aWYgKFsnYXNjJywgJ2Rlc2MnXS5pbmRleE9mKFN0cmluZyhvcmRlcikudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuXHRcdFx0XHRcdF9vcmRlciA9IG9yZGVyLnRvTG93ZXJDYXNlKCkgPT09ICdkZXNjJyA/IGZhbHNlIDogdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMub3JtLmdldFByb3BlcnR5KF9zb3J0W2ldKSkge1xuXHRcdFx0XHRidWlsZGVyLm9yZGVyKHRoaXMub3JtLmdldFByb3BlcnR5KF9zb3J0W2ldKS5jb2x1bW4sIF9vcmRlcik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdDb2x1bW46ICcgKyBfc29ydFtpXSArICcgbm90IHByZXNlbnQgaW4gJyArIEpTT04uc3RyaW5naWZ5KHRoaXMub3JtKSk7XG5cdFx0XHR9XG5cblx0XHR9XG5cdH1cblx0YWRkTGltaXQoYnVpbGRlciwgc2V0dGluZ3MpO1xuXHRhZGRPZmZzZXQoYnVpbGRlciwgc2V0dGluZ3MpO1xuXHRyZXR1cm4gYnVpbGRlcjtcbn07XG5cbmZ1bmN0aW9uIGFkZEZpbHRlcihvcm0sIGJ1aWxkZXIsIHNldHRpbmdzKSB7XG5cdC8vYWRkIHdoZXJlIGNsYXVzZSBmb3IgYW55IGZpZWxkc1xuXHRpZiAoc2V0dGluZ3M/LiRmaWx0ZXIpIHtcblx0XHRjb25zdCBlcXVhbHNQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuZXF1YWxzID8/IFtdKTtcblx0XHRjb25zdCBub3RFcXVhbHNQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIubm90RXF1YWxzID8/IFtdKTtcblx0XHRjb25zdCBjb250YWluc1Byb3BlcnRpZXNLZXlzID0gT2JqZWN0LmtleXMoc2V0dGluZ3MuJGZpbHRlci5jb250YWlucyA/PyBbXSk7XG5cdFx0Y29uc3QgZ3JlYXRlclRoYW5Qcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuZ3JlYXRlclRoYW4gPz8gW10pO1xuXHRcdGNvbnN0IGxlc3NUaGFuUHJvcGVydGllc0tleXMgPSBPYmplY3Qua2V5cyhzZXR0aW5ncy4kZmlsdGVyLmxlc3NUaGFuID8/IFtdKTtcblx0XHRjb25zdCBncmVhdGVyVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuZ3JlYXRlclRoYW5PckVxdWFsID8/IFtdKTtcblx0XHRjb25zdCBsZXNzVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIubGVzc1RoYW5PckVxdWFsID8/IFtdKTtcblxuXHRcdGNvbnN0IGVxdWFsc1Byb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBlcXVhbHNQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblx0XHRjb25zdCBub3RFcXVhbHNQcm9wZXJ0aWVzID0gb3JtLnByb3BlcnRpZXMuZmlsdGVyKGUgPT4gbm90RXF1YWxzUHJvcGVydGllc0tleXMuaW5jbHVkZXMoZS5uYW1lKSk7XG5cdFx0Y29uc3QgY29udGFpbnNQcm9wZXJ0aWVzID0gb3JtLnByb3BlcnRpZXMuZmlsdGVyKGUgPT4gY29udGFpbnNQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblx0XHRjb25zdCBncmVhdGVyVGhhblByb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBncmVhdGVyVGhhblByb3BlcnRpZXNLZXlzLmluY2x1ZGVzKGUubmFtZSkpO1xuXHRcdGNvbnN0IGxlc3NUaGFuUHJvcGVydGllcyA9IG9ybS5wcm9wZXJ0aWVzLmZpbHRlcihlID0+IGxlc3NUaGFuUHJvcGVydGllc0tleXMuaW5jbHVkZXMoZS5uYW1lKSk7XG5cdFx0Y29uc3QgZ3JlYXRlclRoYW5PckVxdWFsUHJvcGVydGllcyA9IG9ybS5wcm9wZXJ0aWVzLmZpbHRlcihlID0+IGdyZWF0ZXJUaGFuT3JFcXVhbFByb3BlcnRpZXNLZXlzLmluY2x1ZGVzKGUubmFtZSkpO1xuXHRcdGNvbnN0IGxlc3NUaGFuT3JFcXVhbFByb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBsZXNzVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblxuXHRcdGVxdWFsc1Byb3BlcnRpZXMuZm9yRWFjaChlID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gc2V0dGluZ3MuJGZpbHRlci5lcXVhbHNbZS5uYW1lXTtcblx0XHRcdGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoZS5jb2x1bW4gKyAnIElTIE5VTEwnLCBbZV0pO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSBJTiAoJHt2YWx1ZS5tYXAodiA9PiAnPycpLmpvaW4oJywgJyl9KWAsIFtlXSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ID0gP2AsIFtlXSlcblx0XHRcdH1cblx0XHR9KTtcblx0XHRub3RFcXVhbHNQcm9wZXJ0aWVzLmZvckVhY2goZSA9PiB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IHNldHRpbmdzLiRmaWx0ZXIubm90RXF1YWxzW2UubmFtZV07XG5cdFx0XHRpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGUuY29sdW1uICsgJyBJUyBOT1QgTlVMTCcsIFtlXSk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59IE5PVCBJTiAoJHt2YWx1ZS5tYXAodiA9PiAnPycpLmpvaW4oJywgJyl9KWAsIFtlXSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ICE9ID9gLCBbZV0pXG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Y29udGFpbnNQcm9wZXJ0aWVzLmZvckVhY2goZSA9PiBidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSBMSUtFID9gLCBbZV0pKTtcblx0XHRncmVhdGVyVGhhblByb3BlcnRpZXMuZm9yRWFjaChlID0+IGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ID4gP2AsIFtlXSkpO1xuXHRcdGxlc3NUaGFuUHJvcGVydGllcy5mb3JFYWNoKGUgPT4gYnVpbGRlci53aGVyZShgJHtlLmNvbHVtbn0gPCA/YCwgW2VdKSk7XG5cdFx0Z3JlYXRlclRoYW5PckVxdWFsUHJvcGVydGllcy5mb3JFYWNoKGUgPT4gYnVpbGRlci53aGVyZShgJHtlLmNvbHVtbn0gPj0gP2AsIFtlXSkpO1xuXHRcdGxlc3NUaGFuT3JFcXVhbFByb3BlcnRpZXMuZm9yRWFjaChlID0+IGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59IDw9ID9gLCBbZV0pKTtcblx0fVxufVxuXG5mdW5jdGlvbiBhZGRMaW1pdChidWlsZGVyLCBzZXR0aW5ncykge1xuXHRjb25zdCBsaW1pdCA9IHNldHRpbmdzLiRsaW1pdCA/PyBzZXR0aW5ncy5saW1pdDtcblx0aWYgKGxpbWl0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRidWlsZGVyLmxpbWl0KHBhcnNlSW50KGxpbWl0LCAxMCkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGFkZE9mZnNldChidWlsZGVyLCBzZXR0aW5ncykge1xuXHRjb25zdCBvZmZzZXQgPSBzZXR0aW5ncy4kb2Zmc2V0ID8/IHNldHRpbmdzLm9mZnNldDtcblx0aWYgKG9mZnNldCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0YnVpbGRlci5vZmZzZXQocGFyc2VJbnQob2Zmc2V0LCAxMCkpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUob3JtLCBjb25uZWN0aW9uPzogQ29ubmVjdGlvbikge1xuXHRsZXQgZGlhbGVjdDtcblx0aWYgKGNvbm5lY3Rpb24pIHtcblx0XHRkaWFsZWN0ID0gU1FMQnVpbGRlci5nZXREaWFsZWN0KGNvbm5lY3Rpb24pO1xuXHR9XG5cblx0Y29uc3Qgc3RtbnRzID0gbmV3IE9STVN0YXRlbWVudHMob3JtLCBkaWFsZWN0KTtcblx0cmV0dXJuIHN0bW50cztcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQSxpQkFBd0I7QUFDeEIsaUJBQTZIO0FBR3RILFNBQVMsY0FBYyxLQUFLLFNBQXFCO0FBQ3ZELE9BQUssT0FBTyxtQkFBUSxVQUFVLHNCQUFzQjtBQUNwRCxPQUFLLE1BQU07QUFDWCxPQUFLLElBQUksWUFBWSxLQUFLLElBQUk7QUFDOUIsT0FBSyxJQUFJLFdBQVcsUUFBUSxTQUFVLFVBQVU7QUFDL0MsYUFBUyxhQUFhLFNBQVM7QUFBQSxFQUNoQyxDQUFDO0FBQ0QsT0FBSyxVQUFVLFdBQVcsc0JBQVcsV0FBVztBQUNqRDtBQUFDO0FBQ0QsY0FBYyxVQUFVLGNBQWM7QUFFdEMsY0FBYyxVQUFVLGNBQWMsV0FBZ0M7QUFDckUsUUFBTSxVQUFVLEtBQUssUUFBUSxPQUFPLEVBQUUsTUFBTSxLQUFLLElBQUksS0FBSztBQUUxRCxPQUFLLElBQUksV0FBVyxRQUFRLFNBQVUsVUFBVTtBQUMvQyxVQUFNLFNBQVMsS0FBSyxJQUFJLFNBQVMsUUFBUTtBQUN6QyxRQUFJLFNBQVMsS0FBSyxZQUFZLE1BQU0sV0FBVztBQUM5QyxVQUFJLFNBQVMsV0FBVztBQUN2QixpQkFBUyxTQUFTO0FB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
@@ -0,0 +1,112 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var procedure_exports = {};
19
+ __export(procedure_exports, {
20
+ Procedure: () => Procedure
21
+ });
22
+ module.exports = __toCommonJS(procedure_exports);
23
+ var import_update = require("./update");
24
+ var import_database = require("./database");
25
+ class Procedure {
26
+ /**
27
+ * Executes a DDL/DML statement to create or modify a stored procedure without results.
28
+ * * @param {string} sql The SQL statement (e.g., CREATE PROCEDURE).
29
+ * @param {string} [datasourceName] Optional name of the data source to use.
30
+ */
31
+ static create(sql, datasourceName) {
32
+ import_update.Update.execute(sql, [], datasourceName);
33
+ }
34
+ /**
35
+ * Executes a stored procedure call and returns the result set(s).
36
+ * * @param {string} sql The callable statement (e.g., {CALL my_procedure(?, ?)}).
37
+ * @param {(string | number | ProcedureParameter)[]} [parameters=[]] An array of parameters. Primitives (string/number) are automatically typed. Use ProcedureParameter for explicit types.
38
+ * @param {string} [datasourceName] Optional name of the data source to use.
39
+ * @returns {any[]} An array of JSON objects representing the result set(s).
40
+ */
41
+ static execute(sql, parameters = [], datasourceName) {
42
+ const result = [];
43
+ let connection = null;
44
+ let callableStatement = null;
45
+ let resultSet = null;
46
+ try {
47
+ let hasMoreResults = false;
48
+ connection = import_database.Database.getConnection(datasourceName);
49
+ callableStatement = connection.prepareCall(sql);
50
+ const mappedParameters = parameters.map((parameter) => {
51
+ if (parameter && typeof parameter === "object" && "type" in parameter && "value" in parameter) {
52
+ return parameter;
53
+ }
54
+ let type;
55
+ let value;
56
+ if (typeof parameter === "string") {
57
+ type = "string";
58
+ value = parameter;
59
+ } else if (typeof parameter === "number") {
60
+ type = parameter % 1 === 0 ? "int" : "double";
61
+ value = parameter;
62
+ } else {
63
+ throw new Error(`Procedure Call - Unsupported parameter type [${typeof parameter}]`);
64
+ }
65
+ return { value, type };
66
+ });
67
+ for (let i = 0; i < mappedParameters.length; i++) {
68
+ switch (mappedParameters[i].type) {
69
+ case "string":
70
+ callableStatement.setString(i + 1, mappedParameters[i].value);
71
+ break;
72
+ case "int":
73
+ case "integer":
74
+ case "number":
75
+ callableStatement.setInt(i + 1, mappedParameters[i].value);
76
+ break;
77
+ case "float":
78
+ callableStatement.setFloat(i + 1, mappedParameters[i].value);
79
+ break;
80
+ case "double":
81
+ callableStatement.setDouble(i + 1, mappedParameters[i].value);
82
+ break;
83
+ }
84
+ }
85
+ resultSet = callableStatement.executeQuery();
86
+ do {
87
+ result.push(JSON.parse(resultSet.toJson()));
88
+ hasMoreResults = callableStatement.getMoreResults();
89
+ if (hasMoreResults) {
90
+ resultSet.close();
91
+ resultSet = callableStatement.getResultSet();
92
+ }
93
+ } while (hasMoreResults);
94
+ callableStatement.close();
95
+ } finally {
96
+ if (resultSet != null) {
97
+ resultSet.close();
98
+ }
99
+ if (callableStatement != null) {
100
+ callableStatement.close();
101
+ }
102
+ if (connection != null) {
103
+ connection.close();
104
+ }
105
+ }
106
+ return result;
107
+ }
108
+ }
109
+ if (typeof module !== "undefined") {
110
+ module.exports = Procedure;
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3Byb2NlZHVyZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBBUEkgUHJvY2VkdXJlXG4gKlxuICovXG5pbXBvcnQgeyBVcGRhdGUgfSBmcm9tIFwiLi91cGRhdGVcIjtcbmltcG9ydCB7IERhdGFiYXNlIH0gZnJvbSBcIi4vZGF0YWJhc2VcIjtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFByb2NlZHVyZVBhcmFtZXRlclxuICogQGRlc2NyaXB0aW9uIERlZmluZXMgYSBzdHJ1Y3R1cmVkIHBhcmFtZXRlciBmb3IgcHJvY2VkdXJlIGNhbGxzLCBhbGxvd2luZyB0aGUgdHlwZSBcbiAqIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCB3aGVuIHRoZSBuYXR1cmFsIEphdmFTY3JpcHQgdHlwZSBtYXBwaW5nIGlzIGluc3VmZmljaWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9jZWR1cmVQYXJhbWV0ZXIge1xuXHR0eXBlOiBzdHJpbmc7IC8vIFJlbW92ZWQgcmVhZG9ubHkgdG8gYWxsb3cgYXNzaWdubWVudCBkdXJpbmcgcGFyYW1ldGVyIG1hcHBpbmdcblx0dmFsdWU6IGFueTsgICAvLyBSZW1vdmVkIHJlYWRvbmx5XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9jZWR1cmUge1xuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgYSBEREwvRE1MIHN0YXRlbWVudCB0byBjcmVhdGUgb3IgbW9kaWZ5IGEgc3RvcmVkIHByb2NlZHVyZSB3aXRob3V0IHJlc3VsdHMuXG4gICAgICogKiBAcGFyYW0ge3N0cmluZ30gc3FsIFRoZSBTUUwgc3RhdGVtZW50IChlLmcuLCBDUkVBVEUgUFJPQ0VEVVJFKS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGFzb3VyY2VOYW1lXSBPcHRpb25hbCBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSB0byB1c2UuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoc3FsOiBzdHJpbmcsIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIFVwZGF0ZS5leGVjdXRlKHNxbCwgW10sIGRhdGFzb3VyY2VOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIHN0b3JlZCBwcm9jZWR1cmUgY2FsbCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IHNldChzKS5cbiAgICAgKiAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgVGhlIGNhbGxhYmxlIHN0YXRlbWVudCAoZS5nLiwge0NBTEwgbXlfcHJvY2VkdXJlKD8sID8pfSkuXG4gICAgICogQHBhcmFtIHsoc3RyaW5nIHwgbnVtYmVyIHwgUHJvY2VkdXJlUGFyYW1ldGVyKVtdfSBbcGFyYW1ldGVycz1bXV0gQW4gYXJyYXkgb2YgcGFyYW1ldGVycy4gUHJpbWl0aXZlcyAoc3RyaW5nL251bWJlcikgYXJlIGF1dG9tYXRpY2FsbHkgdHlwZWQuIFVzZSBQcm9jZWR1cmVQYXJhbWV0ZXIgZm9yIGV4cGxpY2l0IHR5cGVzLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YXNvdXJjZU5hbWVdIE9wdGlvbmFsIG5hbWUgb2YgdGhlIGRhdGEgc291cmNlIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyB7YW55W119IEFuIGFycmF5IG9mIEpTT04gb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBzZXQocykuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBleGVjdXRlKHNxbDogc3RyaW5nLCBwYXJhbWV0ZXJzOiAoc3RyaW5nIHwgbnVtYmVyIHwgUHJvY2VkdXJlUGFyYW1ldGVyKVtdID0gW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogYW55W10ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICBsZXQgY29ubmVjdGlvbiA9IG51bGw7XG4gICAgICAgIGxldCBjYWxsYWJsZVN0YXRlbWVudCA9IG51bGw7XG4gICAgICAgIGxldCByZXN1bHRTZXQgPSBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgaGFzTW9yZVJlc3VsdHMgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29ubmVjdGlvbiA9IERhdGFiYXNlLmdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuICAgICAgICAgICAgY2FsbGFibGVTdGF0ZW1lbnQgPSBjb25uZWN0aW9uLnByZXBhcmVDYWxsKHNxbCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZFBhcmFtZXRlcnM6IFByb2NlZHVyZVBhcmFtZXRlcltdID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDEuIElmIHRoZSBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0IGFuZCBsb29rcyBsaWtlIGEgUHJvY2VkdXJlUGFyYW1ldGVyLCB1c2UgaXQgZGlyZWN0bHkuXG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlciAmJiB0eXBlb2YgcGFyYW1ldGVyID09PSBcIm9iamVjdFwiICYmICd0eXBlJyBpbiBwYXJhbWV0ZXIgJiYgJ3ZhbHVlJyBpbiBwYXJhbWV0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlciBhcyBQcm9jZWR1cmVQYXJhbWV0ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gMi4gSGFuZGxlIHByaW1pdGl2ZSB0eXBlcyAoc3RyaW5nIG9yIG51bWJlcikgYnkgZXhwbGljaXRseSBuYXJyb3dpbmcgdGhlIHR5cGUuXG4gICAgICAgICAgICAgICAgbGV0IHR5cGU6IHN0cmluZztcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1ldGVyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBcInN0cmluZ1wiO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcmFtZXRlcjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXIgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVHlwZSBpcyBjb3JyZWN0bHkgbmFycm93ZWQgdG8gJ251bWJlcicgaGVyZSwgcmVzb2x2aW5nIHRoZSBUUzIzNjIgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBwYXJhbWV0ZXIgJSAxID09PSAwID8gXCJpbnRcIiA6IFwiZG91YmxlXCI7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyYW1ldGVyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRocm93IGVycm9yIGlmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgcmVjb2duaXplZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2NlZHVyZSBDYWxsIC0gVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIHR5cGUgWyR7dHlwZW9mIHBhcmFtZXRlcn1dYCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIHR5cGUgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcHBlZFBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hcHBlZFBhcmFtZXRlcnNbaV0udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5zZXRTdHJpbmcoaSArIDEsIG1hcHBlZFBhcmFtZXRlcnNbaV0udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbnRcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGVTdGF0ZW1lbnQuc2V0SW50KGkgKyAxLCBtYXBwZWRQYXJhbWV0ZXJzW2ldLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZmxvYXRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlU3RhdGVtZW50LnNldEZsb2F0KGkgKyAxLCBtYXBwZWRQYXJhbWV0ZXJzW2ldLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZG91YmxlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5zZXREb3VibGUoaSArIDEsIG1hcHBlZFBhcmFtZXRlcnNbaV0udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0U2V0ID0gY2FsbGFibGVTdGF0ZW1lbnQuZXhlY3V0ZVF1ZXJ5KCk7XG5cbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChKU09OLnBhcnNlKHJlc3VsdFNldC50b0pzb24oKSkpO1xuICAgICAgICAgICAgICAgIGhhc01vcmVSZXN1bHRzID0gY2FsbGFibGVTdGF0ZW1lbnQuZ2V0TW9yZVJlc3VsdHMoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzTW9yZVJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0U2V0LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFNldCA9IGNhbGxhYmxlU3RhdGVtZW50LmdldFJlc3VsdFNldCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKGhhc01vcmVSZXN1bHRzKVxuXG4gICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5jbG9zZSgpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdFNldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0U2V0LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FsbGFibGVTdGF0ZW1lbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNhbGxhYmxlU3RhdGVtZW50LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29ubmVjdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFByb2NlZHVyZTtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSxvQkFBdUI7QUFDdkIsc0JBQXlCO0FBWWxCLE1BQU0sVUFBVTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9uQixPQUFjLE9BQU8sS0FBYSxnQkFBK0I7QUFDN0QseUJBQU8sUUFBUSxLQUFLLENBQUMsR0FBRyxjQUFjO0FBQUEsRUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU0EsT0FBYyxRQUFRLEtBQWEsYUFBdUQsQ0FBQyxHQUFHLGdCQUFnQztBQUMxSCxVQUFNLFNBQVMsQ0FBQztBQUVoQixRQUFJLGFBQWE7QUFDakIsUUFBSSxvQkFBb0I7QUFDeEIsUUFBSSxZQUFZO0FBRWhCLFFBQUk7QUFDQSxVQUFJLGlCQUFpQjtBQUVyQixtQkFBYSx5QkFBUyxjQUFjLGNBQWM7QUFDbEQsMEJBQW9CLFdBQVcsWUFBWSxHQUFHO0FBRTlDLFlBQU0sbUJBQXlDLFdBQVcsSUFBSSxDQUFDLGNBQWM7QUFHekUsWUFBSSxhQUFhLE9BQU8sY0FBYyxZQUFZLFVBQVUsYUFBYSxXQUFXLFdBQVc7QUFDM0YsaUJBQU87QUFBQSxRQUNYO0FBR0EsWUFBSTtBQUNKLFlBQUk7QUFFSixZQUFJLE9BQU8sY0FBYyxVQUFVO0FBQy9CLGlCQUFPO0FBQ1Asa0JBQVE7QUFBQSxRQUNaLFdBQVcsT0FBTyxjQUFjLFVBQVU7QUFFdEMsaUJBQU8sWUFBWSxNQUFNLElBQUksUUFBUTtBQUNyQyxrQkFBUTtBQUFBLFFBQ1osT0FBTztBQUVILGdCQUFNLElBQUksTUFBTSxnREFBZ0QsT0FBTyxTQUFTLEdBQUc7QUFBQSxRQUN2RjtBQUVBLGVBQU8sRUFBRSxPQUFPLEtBQUs7QUFBQSxNQUN6QixDQUFDO0FBRUQsZUFBUyxJQUFJLEdBQUcsSUFBSSxpQkFBaUIsUUFBUSxLQUFLO0FBQzlDLGdCQUFRLGlCQUFpQixDQUFDLEVBQUUsTUFBTTtBQUFBLFVBQzlCLEtBQUs7QUFDRCw4QkFBa0IsVUFBVSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxLQUFLO0FBQzVEO0FBQUEsVUFDSixLQUFLO0FBQUEsVUFDTCxLQUFLO0FBQUEsVUFDTCxLQUFLO0FBQ0QsOEJBQWtCLE9BQU8sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEVBQUUsS0FBSztBQUN6RDtBQUFBLFVBQ0osS0FBSztBQUNELDhCQUFrQixTQUFTLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUs7QUFDM0Q7QUFBQSxVQUNKLEtBQUs7QUFDRCw4QkFBa0IsVUFBVSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxLQUFLO0FBQzVEO0FBQUEsUUFDUjtBQUFBLE1BQ0o7QUFDQSxrQkFBWSxrQkFBa0IsYUFBYTtBQUUzQyxTQUFHO0FBQ0MsZUFBTyxLQUFLLEtBQUssTUFBTSxVQUFVLE9BQU8sQ0FBQyxDQUFDO0FBQzFDLHlCQUFpQixrQkFBa0IsZUFBZTtBQUNsRCxZQUFJLGdCQUFnQjtBQUNoQixvQkFBVSxNQUFNO0FBQ2hCLHNCQUFZLGtCQUFrQixhQUFhO0FBQUEsUUFDL0M7QUFBQSxNQUNKLFNBQVM7QUFFVCx3QkFBa0IsTUFBTTtBQUFBLElBQzVCLFVBQUU7QUFDRSxVQUFJLGFBQWEsTUFBTTtBQUNuQixrQkFBVSxNQUFNO0FBQUEsTUFDcEI7QUFDQSxVQUFJLHFCQUFxQixNQUFNO0FBQzNCLDBCQUFrQixNQUFNO0FBQUEsTUFDNUI7QUFDQSxVQUFJLGNBQWMsTUFBTTtBQUNwQixtQkFBVyxNQUFNO0FBQUEsTUFDckI7QUFBQSxJQUNKO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFDSjtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,57 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var query_exports = {};
19
+ __export(query_exports, {
20
+ Query: () => Query
21
+ });
22
+ module.exports = __toCommonJS(query_exports);
23
+ const DatabaseFacade = Java.type("org.eclipse.dirigible.components.api.db.DatabaseFacade");
24
+ class Query {
25
+ /**
26
+ * Executes a standard SQL query with positional parameters ('?').
27
+ *
28
+ * @param sql The SQL query to execute.
29
+ * @param parameters An optional array of values (primitives or QueryParameter objects) to replace '?' placeholders.
30
+ * @param datasourceName The name of the database connection to use (optional).
31
+ * @param resultParameter Optional formatting parameters for the result set (e.g., date format).
32
+ * @returns An array of records representing the query results.
33
+ */
34
+ static execute(sql, parameters, datasourceName, resultParameter) {
35
+ const paramsJson = parameters ? JSON.stringify(parameters) : void 0;
36
+ const resultParamsJson = resultParameter ? JSON.stringify(resultParameter) : void 0;
37
+ const resultset = DatabaseFacade.query(sql, paramsJson, datasourceName, resultParamsJson);
38
+ return JSON.parse(resultset);
39
+ }
40
+ /**
41
+ * Executes a SQL query with named parameters (e.g., ":name", ":id").
42
+ *
43
+ * @param sql The SQL query to execute.
44
+ * @param parameters An optional array of NamedQueryParameter objects.
45
+ * @param datasourceName The name of the database connection to use (optional).
46
+ * @returns An array of records representing the query results.
47
+ */
48
+ static executeNamed(sql, parameters, datasourceName) {
49
+ const paramsJson = parameters ? JSON.stringify(parameters) : void 0;
50
+ const resultset = DatabaseFacade.queryNamed(sql, paramsJson, datasourceName);
51
+ return JSON.parse(resultset);
52
+ }
53
+ }
54
+ if (typeof module !== "undefined") {
55
+ module.exports = Query;
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3F1ZXJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBRdWVyeVxuICpcbiAqL1xuXG4vLyBKYXZhLnR5cGUgaW1wb3J0cyBhcmUgbmVjZXNzYXJ5IGZvciBlbnZpcm9ubWVudHMgbGlrZSBEaXJpZ2libGUvUmhpbm9cbmNvbnN0IERhdGFiYXNlRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmRiLkRhdGFiYXNlRmFjYWRlXCIpO1xuXG4vKipcbiAqIEludGVyZmFjZSB1c2VkIHRvIHdyYXAgY29tcGxleCBvciBzcGVjaWZpYyB2YWx1ZXMgZm9yIG5vbi1uYW1lZCBxdWVyaWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UGFyYW1ldGVyIHtcblx0cmVhZG9ubHkgdmFsdWU6IGFueTtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVmaW5pbmcgYSBwYXJhbWV0ZXIgZm9yIGEgbmFtZWQgcXVlcnkgKHVzaW5nIHBsYWNlaG9sZGVycyBsaWtlIDpwYXJhbU5hbWUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkUXVlcnlQYXJhbWV0ZXIge1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblx0cmVhZG9ubHkgdmFsdWU6IGFueTtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gc3BlY2lmeSBmb3JtYXR0aW5nIG9wdGlvbnMgZm9yIHRoZSBxdWVyeSByZXN1bHQgc2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc3VsdFBhcmFtZXRlciB7XG5cdHJlYWRvbmx5IGRhdGVGb3JtYXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBzdGF0aWMgbWV0aG9kcyBmb3IgZXhlY3V0aW5nIHBhcmFtZXRlcml6ZWQgU1FMIFNFTEVDVCBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnkge1xuXG5cdC8qKlxuXHQgKiBFeGVjdXRlcyBhIHN0YW5kYXJkIFNRTCBxdWVyeSB3aXRoIHBvc2l0aW9uYWwgcGFyYW1ldGVycyAoJz8nKS5cblx0ICpcblx0ICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGV4ZWN1dGUuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzIEFuIG9wdGlvbmFsIGFycmF5IG9mIHZhbHVlcyAocHJpbWl0aXZlcyBvciBRdWVyeVBhcmFtZXRlciBvYmplY3RzKSB0byByZXBsYWNlICc/JyBwbGFjZWhvbGRlcnMuXG5cdCAqIEBwYXJhbSBkYXRhc291cmNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UgKG9wdGlvbmFsKS5cblx0ICogQHBhcmFtIHJlc3VsdFBhcmFtZXRlciBPcHRpb25hbCBmb3JtYXR0aW5nIHBhcmFtZXRlcnMgZm9yIHRoZSByZXN1bHQgc2V0IChlLmcuLCBkYXRlIGZvcm1hdCkuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlY29yZHMgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSByZXN1bHRzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBleGVjdXRlKHNxbDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgUXVlcnlQYXJhbWV0ZXIpW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nLCAgcmVzdWx0UGFyYW1ldGVyPzogUmVzdWx0UGFyYW1ldGVyKTogYW55W10ge1xuXHRcdC8vIFNlcmlhbGl6ZSBwYXJhbWV0ZXJzIGFuZCByZXN1bHQgcGFyYW1ldGVycyBmb3IgdGhlIEphdmEgZmFjYWRlXG5cdFx0Y29uc3QgcGFyYW1zSnNvbiA9IHBhcmFtZXRlcnMgPyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCByZXN1bHRQYXJhbXNKc29uID0gcmVzdWx0UGFyYW1ldGVyID8gSlNPTi5zdHJpbmdpZnkocmVzdWx0UGFyYW1ldGVyKSA6IHVuZGVmaW5lZDtcblxuXHRcdC8vIFRoZSBEYXRhYmFzZUZhY2FkZSByZXR1cm5zIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlc3VsdCBzZXRcblx0XHRjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeShzcWwsIHBhcmFtc0pzb24sIGRhdGFzb3VyY2VOYW1lLCByZXN1bHRQYXJhbXNKc29uKTtcblxuXHRcdC8vIFBhcnNlIHRoZSBKU09OIHN0cmluZyBiYWNrIGludG8gYSBKYXZhU2NyaXB0IGFycmF5IG9mIG9iamVjdHNcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogRXhlY3V0ZXMgYSBTUUwgcXVlcnkgd2l0aCBuYW1lZCBwYXJhbWV0ZXJzIChlLmcuLCBcIjpuYW1lXCIsIFwiOmlkXCIpLlxuXHQgKlxuXHQgKiBAcGFyYW0gc3FsIFRoZSBTUUwgcXVlcnkgdG8gZXhlY3V0ZS5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgQW4gb3B0aW9uYWwgYXJyYXkgb2YgTmFtZWRRdWVyeVBhcmFtZXRlciBvYmplY3RzLlxuXHQgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlY29yZHMgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSByZXN1bHRzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBleGVjdXRlTmFtZWQoc3FsOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBOYW1lZFF1ZXJ5UGFyYW1ldGVyW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogYW55W10ge1xuXHRcdC8vIFNlcmlhbGl6ZSB0aGUgYXJyYXkgb2YgbmFtZWQgcGFyYW1ldGVycyBmb3IgdGhlIEphdmEgZmFjYWRlXG5cdFx0Y29uc3QgcGFyYW1zSnNvbiA9IHBhcmFtZXRlcnMgPyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZDtcblxuXHRcdC8vIFRoZSBEYXRhYmFzZUZhY2FkZSByZXR1cm5zIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlc3VsdCBzZXRcblx0XHRjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeU5hbWVkKHNxbCwgcGFyYW1zSnNvbiwgZGF0YXNvdXJjZU5hbWUpO1xuXG5cdFx0Ly8gUGFyc2UgdGhlIEpTT04gc3RyaW5nIGJhY2sgaW50byBhIEphdmFTY3JpcHQgYXJyYXkgb2Ygb2JqZWN0c1xuXHRcdHJldHVybiBKU09OLnBhcnNlKHJlc3VsdHNldCk7XG5cdH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBRdWVyeTtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxNQUFNLGlCQUFpQixLQUFLLEtBQUssd0RBQXdEO0FBNEJsRixNQUFNLE1BQU07QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVdsQixPQUFjLFFBQVEsS0FBYSxZQUFvRSxnQkFBMEIsaUJBQTBDO0FBRTFLLFVBQU0sYUFBYSxhQUFhLEtBQUssVUFBVSxVQUFVLElBQUk7QUFDN0QsVUFBTSxtQkFBbUIsa0JBQWtCLEtBQUssVUFBVSxlQUFlLElBQUk7QUFHN0UsVUFBTSxZQUFZLGVBQWUsTUFBTSxLQUFLLFlBQVksZ0JBQWdCLGdCQUFnQjtBQUd4RixXQUFPLEtBQUssTUFBTSxTQUFTO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVQSxPQUFjLGFBQWEsS0FBYSxZQUFvQyxnQkFBZ0M7QUFFM0csVUFBTSxhQUFhLGFBQWEsS0FBSyxVQUFVLFVBQVUsSUFBSTtBQUc3RCxVQUFNLFlBQVksZUFBZSxXQUFXLEtBQUssWUFBWSxjQUFjO0FBRzNFLFdBQU8sS0FBSyxNQUFNLFNBQVM7QUFBQSxFQUM1QjtBQUNEO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,148 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var repository_exports = {};
19
+ __export(repository_exports, {
20
+ Repository: () => Repository
21
+ });
22
+ module.exports = __toCommonJS(repository_exports);
23
+ var import_db = require("@aerokit/sdk/db");
24
+ class Repository {
25
+ constructor(entityConstructor) {
26
+ this.entityConstructor = entityConstructor;
27
+ if (!this.entityConstructor.$entity_name) {
28
+ this.entityConstructor.$entity_name = import_db.store.getEntityName(this.entityConstructor.name);
29
+ this.entityConstructor.$table_name = import_db.store.getTableName(this.entityConstructor.name);
30
+ this.entityConstructor.$id_name = import_db.store.getIdName(this.entityConstructor.name);
31
+ this.entityConstructor.$id_column = import_db.store.getIdColumn(this.entityConstructor.name);
32
+ }
33
+ }
34
+ getEntityName() {
35
+ return this.entityConstructor.$entity_name;
36
+ }
37
+ getTableName() {
38
+ return this.entityConstructor.$table_name;
39
+ }
40
+ getIdName() {
41
+ return this.entityConstructor.$id_name;
42
+ }
43
+ getIdColumn() {
44
+ return this.entityConstructor.$id_column;
45
+ }
46
+ /**
47
+ * Finds all entities matching the given options.
48
+ */
49
+ findAll(options = {}) {
50
+ const list = import_db.store.list(this.getEntityName(), options);
51
+ import_db.translator.translateList(list, options.language, this.getTableName());
52
+ return list;
53
+ }
54
+ /**
55
+ * Finds a single entity by its primary key ID.
56
+ */
57
+ findById(id, options = {}) {
58
+ const entity = import_db.store.get(this.getEntityName(), id);
59
+ import_db.translator.translateEntity(entity, id, options.language, this.getTableName());
60
+ return entity ?? void 0;
61
+ }
62
+ /**
63
+ * Creates a new entity in the database.
64
+ * @returns The generated ID (string or number).
65
+ */
66
+ create(entity) {
67
+ const id = import_db.store.save(this.getEntityName(), entity);
68
+ this.triggerEvent({
69
+ operation: "create",
70
+ table: this.getTableName(),
71
+ entity,
72
+ key: {
73
+ name: this.getIdName(),
74
+ column: this.getIdColumn(),
75
+ value: id
76
+ }
77
+ });
78
+ return id;
79
+ }
80
+ /**
81
+ * Updates an existing entity.
82
+ * The entity must contain the primary key.
83
+ */
84
+ update(entity) {
85
+ const idName = this.getIdName();
86
+ const id = entity[idName];
87
+ const previousEntity = this.findById(id);
88
+ import_db.store.update(this.getEntityName(), entity);
89
+ this.triggerEvent({
90
+ operation: "update",
91
+ table: this.getTableName(),
92
+ entity,
93
+ previousEntity,
94
+ key: {
95
+ name: idName,
96
+ column: this.getIdColumn(),
97
+ value: id
98
+ }
99
+ });
100
+ }
101
+ /**
102
+ * Creates the entity if the ID is null/undefined, otherwise updates it.
103
+ * If an ID is provided but the entity doesn't exist, it creates it.
104
+ * @returns The entity's ID.
105
+ */
106
+ upsert(entity) {
107
+ const id = entity[this.getIdName()];
108
+ if (id === null || id === void 0) {
109
+ return import_db.store.save(this.getEntityName(), entity);
110
+ }
111
+ const existingEntity = import_db.store.get(this.getEntityName(), id);
112
+ if (existingEntity) {
113
+ this.update(entity);
114
+ return id;
115
+ } else {
116
+ return import_db.store.save(this.getEntityName(), entity);
117
+ }
118
+ }
119
+ /**
120
+ * Deletes an entity by its primary key ID.
121
+ */
122
+ deleteById(id) {
123
+ const entity = import_db.store.get(this.getEntityName(), id);
124
+ import_db.store.remove(this.getEntityName(), id);
125
+ this.triggerEvent({
126
+ operation: "delete",
127
+ table: this.getTableName(),
128
+ entity,
129
+ key: {
130
+ name: this.getIdName(),
131
+ column: this.getIdColumn(),
132
+ value: id
133
+ }
134
+ });
135
+ }
136
+ /**
137
+ * Counts the number of entities matching the given options.
138
+ */
139
+ count(options) {
140
+ return import_db.store.count(this.getEntityName(), options);
141
+ }
142
+ /**
143
+ * Protected method intended for subclass overriding or internal event handling.
144
+ */
145
+ async triggerEvent(_data) {
146
+ }
147
+ }
148
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3JlcG9zaXRvcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHN0b3JlLCB0cmFuc2xhdG9yLCBFbnRpdHlDb25zdHJ1Y3RvciwgT3B0aW9ucyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvZGJcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIGV2ZW50IHRyaWdnZXIgbWV0aG9kIGJlZm9yZS9hZnRlciBhbiBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5RXZlbnQ8VD4ge1xuICAgIHJlYWRvbmx5IG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdkZWxldGUnO1xuICAgIHJlYWRvbmx5IHRhYmxlOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZW50aXR5OiBQYXJ0aWFsPFQ+OyAvLyBVc2UgUGFydGlhbDxUPiBmb3IgY3JlYXRlL2RlbGV0ZSB3aGVyZSBzb21lIGZpZWxkcyBtaWdodCBiZSBtaXNzaW5nXG4gICAgcmVhZG9ubHkga2V5OiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgY29sdW1uOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgfVxuICAgIHJlYWRvbmx5IHByZXZpb3VzRW50aXR5PzogVDtcbn1cblxuXG4vLyAtLS0gUmVwb3NpdG9yeSBDbGFzcyAtLS1cblxuLyoqXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBkYXRhIGFjY2Vzcy9idXNpbmVzcyBsb2dpYywgd3JhcHBpbmcgdGhlIGBzdG9yZWAgQVBJLlxuICogSXQgaGFuZGxlcyBlbnRpdHkgbWV0YWRhdGEgbG9va3VwLCBDUlVEIG9wZXJhdGlvbnMsIHRyYW5zbGF0aW9uLCBhbmQgZXZlbnQgdHJpZ2dlcmluZy5cbiAqIEB0ZW1wbGF0ZSBUIFRoZSBlbnRpdHkgdHlwZSAobXVzdCBiZSBhbiBvYmplY3QpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVwb3NpdG9yeTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3I7XG5cbiAgICBjb25zdHJ1Y3RvcihlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5lbnRpdHlDb25zdHJ1Y3RvciA9IGVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2FjaGVzIGVudGl0eSBtZXRhZGF0YSAobmFtZSwgdGFibGUsIGlkKSBvbnRvIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3Igc3RhdGljIGFjY2Vzc1xuXHRcdGlmICghdGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZXMgc3RvcmUgbWV0aG9kcyByZXR1cm4gbm9uLW51bGwgc3RyaW5nc1xuXHRcdFx0dGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUgPSAoc3RvcmUgYXMgYW55KS5nZXRFbnRpdHlOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lID0gKHN0b3JlIGFzIGFueSkuZ2V0VGFibGVOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lID0gKHN0b3JlIGFzIGFueSkuZ2V0SWROYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9jb2x1bW4gPSAoc3RvcmUgYXMgYW55KS5nZXRJZENvbHVtbih0aGlzLmVudGl0eUNvbnN0cnVjdG9yLm5hbWUpO1xuXHRcdH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RW50aXR5TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICAvLyBVc2Ugbm9uLW51bGwgYXNzZXJ0aW9uIHNpbmNlIHRoZSBjb25zdHJ1Y3RvciBndWFyYW50ZWVzIHRoZXNlIHByb3BlcnRpZXMgZXhpc3RcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGVudGl0eV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGFibGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWROYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWRDb2x1bW4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGlkX2NvbHVtbiE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYWxsIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kQWxsKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFRbXSB7XG4gICAgICAgIC8vIEFzc3VtZSBzdG9yZS5saXN0IHJldHVybnMgVFtdIGJ1dCB3ZSBleHBsaWNpdGx5IGNhc3QgaXQgdG8gVFtdXG4gICAgICAgIGNvbnN0IGxpc3Q6IFRbXSA9IChzdG9yZSBhcyBhbnkpLmxpc3QodGhpcy5nZXRFbnRpdHlOYW1lKCksIG9wdGlvbnMpO1xuICAgICAgICAodHJhbnNsYXRvciBhcyBhbnkpLnRyYW5zbGF0ZUxpc3QobGlzdCwgb3B0aW9ucy5sYW5ndWFnZSwgdGhpcy5nZXRUYWJsZU5hbWUoKSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgc2luZ2xlIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGZpbmRCeUlkKGlkOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBBc3N1bWUgc3RvcmUuZ2V0IHJldHVybnMgVCBvciBudWxsL3VuZGVmaW5lZFxuICAgICAgICBjb25zdCBlbnRpdHk6IFQgfCBudWxsID0gKHN0b3JlIGFzIGFueSkuZ2V0KHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG4gICAgICAgICh0cmFuc2xhdG9yIGFzIGFueSkudHJhbnNsYXRlRW50aXR5KGVudGl0eSwgaWQsIG9wdGlvbnMubGFuZ3VhZ2UsIHRoaXMuZ2V0VGFibGVOYW1lKCkpO1xuICAgICAgICByZXR1cm4gZW50aXR5ID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBJRCAoc3RyaW5nIG9yIG51bWJlcikuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZShlbnRpdHk6IFQpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICBjb25zdCBpZCA9IChzdG9yZSBhcyBhbnkpLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJjcmVhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldElkTmFtZSgpLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5nZXRJZENvbHVtbigpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpZFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50aXR5LlxuICAgICAqIFRoZSBlbnRpdHkgbXVzdCBjb250YWluIHRoZSBwcmltYXJ5IGtleS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKGVudGl0eTogVCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZE5hbWUgPSB0aGlzLmdldElkTmFtZSgpO1xuICAgICAgICBjb25zdCBpZCA9IGVudGl0eVtpZE5hbWVdIGFzIChudW1iZXIgfCBzdHJpbmcpO1xuICAgICAgICBcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIGVudGl0eSBzdGF0ZSBiZWZvcmUgdXBkYXRlIGZvciB0aGUgZXZlbnQgcGF5bG9hZFxuICAgICAgICBjb25zdCBwcmV2aW91c0VudGl0eSA9IHRoaXMuZmluZEJ5SWQoaWQpO1xuXG4gICAgICAgIChzdG9yZSBhcyBhbnkpLnVwZGF0ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJ1cGRhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBwcmV2aW91c0VudGl0eTogcHJldmlvdXNFbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBpZE5hbWUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGhlIGVudGl0eSBpZiB0aGUgSUQgaXMgbnVsbC91bmRlZmluZWQsIG90aGVyd2lzZSB1cGRhdGVzIGl0LlxuICAgICAqIElmIGFuIElEIGlzIHByb3ZpZGVkIGJ1dCB0aGUgZW50aXR5IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgaXQuXG4gICAgICogQHJldHVybnMgVGhlIGVudGl0eSdzIElELlxuICAgICAqL1xuICAgIHB1YmxpYyB1cHNlcnQoZW50aXR5OiBUKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaWQgPSBlbnRpdHlbdGhpcy5nZXRJZE5hbWUoKV07XG4gICAgICAgIFxuICAgICAgICAvLyBJZiBubyBJRCBpcyBwcmVzZW50LCBzYXZlIChjcmVhdGUpXG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKHN0b3JlIGFzIGFueSkuc2F2ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIElEIGlzIHByZXNlbnQsIGNoZWNrIGV4aXN0ZW5jZVxuICAgICAgICBjb25zdCBleGlzdGluZ0VudGl0eSA9IChzdG9yZSBhcyBhbnkpLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGV4aXN0aW5nRW50aXR5KSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZShlbnRpdHkpO1xuICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSUQgZXhpc3RzLCBidXQgZW50aXR5IGRvZXMgbm90IC0+IHNhdmUgKGNyZWF0ZSB3aXRoIHByb3ZpZGVkIElEKVxuICAgICAgICAgICAgcmV0dXJuIChzdG9yZSBhcyBhbnkpLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGFuIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBSZXRyaWV2ZSBlbnRpdHkgYmVmb3JlIHJlbW92YWwgZm9yIHRoZSBldmVudCBwYXlsb2FkXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IChzdG9yZSBhcyBhbnkpLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgKHN0b3JlIGFzIGFueSkucmVtb3ZlKHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG5cbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoe1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBcImRlbGV0ZVwiLFxuICAgICAgICAgICAgdGFibGU6IHRoaXMuZ2V0VGFibGVOYW1lKCksXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0SWROYW1lKCksXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudChvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoc3RvcmUgYXMgYW55KS5jb3VudCh0aGlzLmdldEVudGl0eU5hbWUoKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvdGVjdGVkIG1ldGhvZCBpbnRlbmRlZCBmb3Igc3ViY2xhc3Mgb3ZlcnJpZGluZyBvciBpbnRlcm5hbCBldmVudCBoYW5kbGluZy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgdHJpZ2dlckV2ZW50KF9kYXRhOiBFbnRpdHlFdmVudDxUPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBFbXB0eSBib2R5IGFzIGluIHRoZSBvcmlnaW5hbCBjb2RlXG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQThEO0FBeUJ2RCxNQUFlLFdBQTBDO0FBQUEsRUFJNUQsWUFBWSxtQkFBc0M7QUFDOUMsU0FBSyxvQkFBb0I7QUFHL0IsUUFBSSxDQUFDLEtBQUssa0JBQWtCLGNBQWM7QUFFekMsV0FBSyxrQkFBa0IsZUFBZ0IsZ0JBQWMsY0FBYyxLQUFLLGtCQUFrQixJQUFJO0FBQzlGLFdBQUssa0JBQWtCLGNBQWUsZ0JBQWMsYUFBYSxLQUFLLGtCQUFrQixJQUFJO0FBQzVGLFdBQUssa0JBQWtCLFdBQVksZ0JBQWMsVUFBVSxLQUFLLGtCQUFrQixJQUFJO0FBQ3RGLFdBQUssa0JBQWtCLGFBQWMsZ0JBQWMsWUFBWSxLQUFLLGtCQUFrQixJQUFJO0FBQUEsSUFDM0Y7QUFBQSxFQUNFO0FBQUEsRUFFVSxnQkFBd0I7QUFFOUIsV0FBTyxLQUFLLGtCQUFrQjtBQUFBLEVBQ2xDO0FBQUEsRUFFVSxlQUF1QjtBQUM3QixXQUFPLEtBQUssa0JBQWtCO0FBQUEsRUFDbEM7QUFBQSxFQUVVLFlBQW9CO0FBQzFCLFdBQU8sS0FBSyxrQkFBa0I7QUFBQSxFQUNsQztBQUFBLEVBRVUsY0FBc0I7QUFDNUIsV0FBTyxLQUFLLGtCQUFrQjtBQUFBLEVBQ2xDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxRQUFRLFVBQW1CLENBQUMsR0FBUTtBQUV2QyxVQUFNLE9BQWEsZ0JBQWMsS0FBSyxLQUFLLGNBQWMsR0FBRyxPQUFPO0FBQ25FLElBQUMscUJBQW1CLGNBQWMsTUFBTSxRQUFRLFVBQVUsS0FBSyxhQUFhLENBQUM7QUFDN0UsV0FBTztBQUFBLEVB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