@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,360 @@
1
+ import { globals } from "@aerokit/sdk/core";
2
+ import { Client } from "./client";
3
+ import * as dirigibleOrm from "@aerokit/sdk/db/orm";
4
+ import { Logging } from "@aerokit/sdk/log";
5
+ import { Configurations } from "@aerokit/sdk/core";
6
+ const dbUri = Configurations.get("DIRIGIBLE_MONGODB_CLIENT_URI", "mongodb://localhost:27017");
7
+ const mongoClient = new Client(dbUri, null, null);
8
+ const db = mongoClient.getDB();
9
+ class DAO {
10
+ constructor(orm, logCtxName = "mongodb.dao") {
11
+ this.orm = dirigibleOrm.get(orm);
12
+ let loggerName = logCtxName;
13
+ if (this.orm.table) {
14
+ loggerName = "mongodb.dao." + this.orm.table.toLowerCase();
15
+ }
16
+ this.$log = Logging.getLogger(loggerName);
17
+ }
18
+ notify(event, ...a) {
19
+ var func = this[event];
20
+ if (!this[event])
21
+ return;
22
+ if (typeof func !== "function")
23
+ throw Error("Illegal argument. Not a function: " + func);
24
+ var args = [].slice.call(arguments);
25
+ func.apply(this, args.slice(1));
26
+ }
27
+ //Prepare a JSON object for insert into DB
28
+ createNoSQLEntity(entity) {
29
+ var persistentItem = {};
30
+ var mandatories = this.orm.getMandatoryProperties();
31
+ for (var i = 0; i < mandatories.length; i++) {
32
+ if (mandatories[i].dbValue) {
33
+ persistentItem[mandatories[i].name] = mandatories[i].dbValue.apply(this, [entity[mandatories[i].name], entity]);
34
+ } else {
35
+ persistentItem[mandatories[i].name] = entity[mandatories[i].name];
36
+ }
37
+ }
38
+ var optionals = this.orm.getOptionalProperties();
39
+ for (var i = 0; i < optionals.length; i++) {
40
+ if (optionals[i].dbValue !== void 0) {
41
+ persistentItem[optionals[i].name] = optionals[i].dbValue.apply(this, [entity[optionals[i].name], entity]);
42
+ } else {
43
+ persistentItem[optionals[i].name] = entity[optionals[i].name] === void 0 ? null : entity[optionals[i].name];
44
+ }
45
+ }
46
+ var msgIdSegment = persistentItem[this.orm.getPrimaryKey().name] ? "[" + persistentItem[this.orm.getPrimaryKey().name] + "]" : "";
47
+ this.$log.info("Transformation to {} DB JSON object finished", this.orm.table + msgIdSegment);
48
+ return persistentItem;
49
+ }
50
+ validateEntity(entity, skip) {
51
+ if (entity === void 0 || entity === null) {
52
+ throw new Error("Illegal argument: entity is " + entity);
53
+ }
54
+ if (skip) {
55
+ if (skip.constructor !== Array) {
56
+ skip = [skip];
57
+ }
58
+ for (var j = 0; j < skip.length; j++) {
59
+ skip[j];
60
+ }
61
+ }
62
+ var mandatories = this.orm.getMandatoryProperties();
63
+ for (var i = 0; i < mandatories.length; i++) {
64
+ var propName = mandatories[i].name;
65
+ if (skip && skip.indexOf(propName) > -1 || mandatories[i].type.toUpperCase() === "BOOLEAN")
66
+ continue;
67
+ var propValue = entity[propName];
68
+ if (propValue === void 0 || propValue === null) {
69
+ throw new Error("Illegal " + propName + " attribute value in " + this.orm.table + " entity: " + propValue);
70
+ }
71
+ }
72
+ }
73
+ insert(_entity) {
74
+ var entities = _entity;
75
+ if (_entity.constructor !== Array) {
76
+ entities = [_entity];
77
+ }
78
+ this.$log.info("Inserting {} {}", this.orm.table, entities.length === 1 ? "entity" : "entities");
79
+ var updatedRecordCount = 0;
80
+ var ids = [];
81
+ for (var i = 0; i < entities.length; i++) {
82
+ var entity = entities[i];
83
+ this.validateEntity(entity, [this.orm.getPrimaryKey().name]);
84
+ var dbEntity = this.createNoSQLEntity(entity);
85
+ try {
86
+ var collection = db.getCollection(this.orm.table);
87
+ var id = collection.getNextId();
88
+ dbEntity[this.orm.getPrimaryKey().name] = id;
89
+ dbEntity["_id"] = id;
90
+ collection.insert(dbEntity);
91
+ updatedRecordCount++;
92
+ this.notify("afterInsert", dbEntity);
93
+ this.notify("beforeInsertAssociationSets", dbEntity);
94
+ if (updatedRecordCount > 0) {
95
+ ids.push(dbEntity[this.orm.getPrimaryKey().name]);
96
+ this.$log.info("{}[] entity inserted", this.orm.table, dbEntity[this.orm.getPrimaryKey().name]);
97
+ } else {
98
+ this.$log.info("No changes incurred in {}", this.orm.table);
99
+ }
100
+ } catch (e) {
101
+ this.$log.error("Inserting {} {} failed", this.orm.table, entities.length === 1 ? "entity" : "entities", e);
102
+ this.$log.info("Rolling back changes after failed {}[{}] insert. ", this.orm.table, dbEntity[this.orm.getPrimaryKey().name]);
103
+ if (dbEntity[this.orm.getPrimaryKey().name]) {
104
+ try {
105
+ this.remove(dbEntity[this.orm.getPrimaryKey().name]);
106
+ } catch (err) {
107
+ this.$log.error("Could not rollback changes after failed {}[{}] insert. ", this.orm.table, dbEntity[this.orm.getPrimaryKey().name], err);
108
+ }
109
+ }
110
+ throw e;
111
+ }
112
+ }
113
+ if (_entity.constructor !== Array)
114
+ return ids[0];
115
+ else
116
+ return ids;
117
+ }
118
+ // update entity from a JSON object. Returns the id of the updated entity.
119
+ update(entity) {
120
+ this.$log.info("Updating {}[{}] entity", this.orm.table, entity !== void 0 ? entity[this.orm.getPrimaryKey().name] : entity);
121
+ if (entity === void 0 || entity === null) {
122
+ throw new Error("Illegal argument: entity is " + entity);
123
+ }
124
+ var ignoredProperties = this.orm.getMandatoryProperties().filter(function(property) {
125
+ return property.allowedOps && property.allowedOps.indexOf("update") < 0;
126
+ }).map(function(property) {
127
+ return property.name;
128
+ });
129
+ this.validateEntity(entity, ignoredProperties);
130
+ var dbEntity = this.createNoSQLEntity(entity);
131
+ dbEntity[this.orm.getPrimaryKey().name] = entity["_id"];
132
+ dbEntity["_id"] = entity["_id"];
133
+ try {
134
+ this.notify("beforeUpdateEntity", dbEntity);
135
+ var collection = db.getCollection(this.orm.table);
136
+ collection.update({ "_id": entity["_id"] }, dbEntity);
137
+ this.$log.info("{}[{}] entity updated", this.orm.table, dbEntity[this.orm.getPrimaryKey().name]);
138
+ return this;
139
+ } catch (e) {
140
+ this.$log.error("Updating {}[{}] failed", this.orm.table, entity !== void 0 ? entity[this.orm.getPrimaryKey().name] : entity, e);
141
+ throw e;
142
+ }
143
+ }
144
+ // delete entity by id, or array of ids, or delete all (if not argument is provided).
145
+ remove(id) {
146
+ var ids = [];
147
+ if (arguments.length === 0) {
148
+ ids = this.list({
149
+ "$select": [this.orm.getPrimaryKey().name]
150
+ }).map(function(ent) {
151
+ return ent[this.orm.getPrimaryKey().name];
152
+ }.bind(this));
153
+ } else {
154
+ if (arguments[0].constructor !== Array) {
155
+ ids = [arguments[0]];
156
+ } else {
157
+ ids = arguments[0];
158
+ }
159
+ }
160
+ this.$log.info("Deleting " + this.orm.table + (ids !== void 0 && ids.length === 1 ? "[" + ids[0] + "] entity" : ids.length + " entities"));
161
+ for (var i = 0; i < ids.length; i++) {
162
+ var id = ids[i];
163
+ if (ids.length > 1)
164
+ this.$log.info("Deleting {}[{}] entity", this.orm.table, id);
165
+ if (id === void 0 || id === null) {
166
+ throw new Error("Illegal argument for id parameter:" + id);
167
+ }
168
+ try {
169
+ this.notify("beforeRemoveEntity", id);
170
+ var collection = db.getCollection(this.orm.table);
171
+ collection.remove({ "_id": id });
172
+ } catch (e) {
173
+ this.$log.error("Deleting {}[{}] entity failed", this.orm.table, id, e);
174
+ throw e;
175
+ }
176
+ }
177
+ }
178
+ expand(expansionPath, context) {
179
+ this.$log.info("Expanding for association path {} and context entity {}", expansionPath, (typeof arguments[1] !== "object" ? "id " : "") + JSON.stringify(arguments[1]));
180
+ throw Error("Not implemented.");
181
+ }
182
+ /*
183
+ Reads a single entity by id, parsed into JSON object.
184
+ If requested as expanded the returned entity will comprise associated (dependent) entities too. Expand can be a string tha tis a valid association name defined in this dao orm or
185
+ an array of such names.
186
+ */
187
+ find(id, expand, select) {
188
+ if (typeof arguments[0] === "object") {
189
+ id = arguments[0].id;
190
+ expand = arguments[0].$expand || arguments[0].expand;
191
+ select = arguments[0].$select || arguments[0].select;
192
+ }
193
+ this.$log.info("Finding {}[{}] entity with list parameters expand[{}], select[{}]", this.orm.table, id, expand, select);
194
+ if (id === void 0 || id === null) {
195
+ throw new Error("Illegal argument for id parameter:" + id);
196
+ }
197
+ try {
198
+ var entity;
199
+ if (select !== void 0) {
200
+ if (select.constructor !== Array) {
201
+ if (select.constructor === String) {
202
+ select = select.split(",").map(function(sel) {
203
+ if (sel.constructor !== String)
204
+ throw Error("Illegal argument: select array components are expected ot be strings but found " + typeof sel);
205
+ return sel.trim();
206
+ });
207
+ } else {
208
+ throw Error("Illegal argument: select is expected to be string or array of strings but was " + typeof select);
209
+ }
210
+ }
211
+ }
212
+ if (select !== void 0 && expand !== void 0) {
213
+ select.push(this.orm.getPrimaryKey().name);
214
+ }
215
+ var params = {};
216
+ params["_id"] = id;
217
+ var collection = db.getCollection(this.orm.table);
218
+ if (select !== void 0) {
219
+ entity = collection.find(params, select);
220
+ } else {
221
+ entity = collection.findOneById(id);
222
+ }
223
+ if (entity) {
224
+ this.$log.info("{}[{}] entity found", this.orm.table, id);
225
+ this.notify("afterFound", entity);
226
+ } else {
227
+ this.$log.info("{}[{}] entity not found", this.orm.table, id);
228
+ }
229
+ return entity;
230
+ } catch (e) {
231
+ this.$log.error("Finding {}[{}] entitiy failed.", this.orm.table, id, e);
232
+ throw e;
233
+ }
234
+ }
235
+ count() {
236
+ this.$log.info("Counting " + this.orm.table + " entities");
237
+ var count = 0;
238
+ try {
239
+ var collection = db.getCollection(this.orm.table);
240
+ count = collection.count();
241
+ } catch (e) {
242
+ this.$log.error("Counting {} entities failed", this.orm.table, e);
243
+ throw e;
244
+ }
245
+ this.$log.info("{} {} entities counted", String(count), this.orm.table);
246
+ return count;
247
+ }
248
+ /*
249
+ * list parameters:
250
+ * - $expand
251
+ * - $filter
252
+ * - $select
253
+ * - $sort
254
+ * - $order
255
+ * - $limit
256
+ * - $offset
257
+ */
258
+ list(settings) {
259
+ settings = settings || {};
260
+ var expand = settings.$expand || settings.expand;
261
+ if (expand !== void 0) {
262
+ if (expand.constructor !== Array) {
263
+ if (expand.constructor === String) {
264
+ if (expand.indexOf(",") > -1) {
265
+ settings.$expand = expand.split(",").map(function(exp) {
266
+ if (exp.constructor !== String)
267
+ throw Error("Illegal argument: expand array components are expected ot be strings but found " + typeof exp);
268
+ return exp.trim();
269
+ });
270
+ } else {
271
+ settings.$expand = [expand];
272
+ }
273
+ } else {
274
+ throw Error("Illegal argument: expand is expected to be string or array of strings but was " + typeof expand);
275
+ }
276
+ }
277
+ }
278
+ var select = settings.$select || settings.select;
279
+ if (select !== void 0) {
280
+ if (select.constructor !== Array) {
281
+ if (select.constructor === String) {
282
+ if (select.indexOf(",") > -1) {
283
+ settings.$select = select.split(",").map(function(exp) {
284
+ if (exp.constructor !== String)
285
+ throw Error("Illegal argument: select array components are expected ot be strings but found " + typeof exp);
286
+ return exp.trim();
287
+ });
288
+ } else {
289
+ settings.$select = [select];
290
+ }
291
+ } else {
292
+ throw Error("Illegal argument: select is expected to be string or array of strings but was " + typeof expand);
293
+ }
294
+ }
295
+ }
296
+ var listArgs = [];
297
+ for (var key in settings) {
298
+ listArgs.push(" " + key + "[" + settings[key] + "]");
299
+ }
300
+ this.$log.info("Listing {} entity collection with list operators: {}", this.orm.table, listArgs.join(","));
301
+ if (settings.$select !== void 0 && expand !== void 0) {
302
+ settings.$select.push(this.orm.getPrimaryKey().name);
303
+ }
304
+ if (settings.$filter) {
305
+ if (settings.$filter.indexOf(",") > -1) {
306
+ settings.$filter = settings.$filter.split(",");
307
+ } else {
308
+ settings.$filter = [settings.$filter];
309
+ }
310
+ settings.$filter = settings.$filter.filter(function(filterField) {
311
+ var prop = this.ormstatements.orm.getProperty(filterField);
312
+ if (prop === void 0 || prop.type.toUpperCase() !== "VARCHAR" || settings[prop.name] === void 0)
313
+ return false;
314
+ settings[prop.name] = "%" + settings[prop.name] + "%";
315
+ return true;
316
+ }.bind(this));
317
+ }
318
+ try {
319
+ var entities = [];
320
+ var collection = db.getCollection(this.orm.table);
321
+ var cursor = collection.find();
322
+ while (cursor.hasNext()) {
323
+ entities.push(cursor.next());
324
+ }
325
+ this.$log.info("{} {} entities found", entities.length, this.orm.table);
326
+ return entities;
327
+ } catch (e) {
328
+ this.$log.error("Listing {} entities failed.", this.orm.table, e);
329
+ throw e;
330
+ }
331
+ }
332
+ existsTable() {
333
+ return true;
334
+ }
335
+ createTable() {
336
+ }
337
+ dropTable() {
338
+ return this;
339
+ }
340
+ }
341
+ function create(oDefinition, logCtxName, dataSourceName, databaseType) {
342
+ var orm;
343
+ orm = oDefinition;
344
+ var productName = globals.get(databaseType + "_" + dataSourceName);
345
+ if (!productName) {
346
+ productName = "MongoDB";
347
+ globals.set(databaseType + "_" + dataSourceName, productName);
348
+ }
349
+ return new DAO(orm, logCtxName);
350
+ }
351
+ ;
352
+ function dao(oDefinition, logCtxName, dataSourceName, databaseType) {
353
+ return create(oDefinition, logCtxName, dataSourceName, databaseType);
354
+ }
355
+ export {
356
+ DAO,
357
+ create,
358
+ dao
359
+ };
360
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21vbmdvZGIvZGFvLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZ2xvYmFscyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvY29yZVwiXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tIFwiLi9jbGllbnRcIlxuaW1wb3J0ICogYXMgZGlyaWdpYmxlT3JtIGZyb20gXCJAYWVyb2tpdC9zZGsvZGIvb3JtXCI7XG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9sb2dcIjtcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9jb3JlXCI7XG5cbmNvbnN0IGRiVXJpID0gQ29uZmlndXJhdGlvbnMuZ2V0KFwiRElSSUdJQkxFX01PTkdPREJfQ0xJRU5UX1VSSVwiLCBcIm1vbmdvZGI6Ly9sb2NhbGhvc3Q6MjcwMTdcIik7XG5cbmNvbnN0IG1vbmdvQ2xpZW50ID0gbmV3IENsaWVudChkYlVyaSwgbnVsbCwgbnVsbCk7XG5jb25zdCBkYiA9IG1vbmdvQ2xpZW50LmdldERCKCk7XG5cbmV4cG9ydCBjbGFzcyBEQU8ge1xuICAgIHByaXZhdGUgb3JtOiBhbnk7XG4gICAgJGxvZztcblxuICAgIGNvbnN0cnVjdG9yKG9ybTogYW55LCBsb2dDdHhOYW1lOiBzdHJpbmcgPSAnbW9uZ29kYi5kYW8nKSB7XG4gICAgICAgIHRoaXMub3JtID0gZGlyaWdpYmxlT3JtLmdldChvcm0pO1xuXG4gICAgICAgIGxldCBsb2dnZXJOYW1lID0gbG9nQ3R4TmFtZTtcbiAgICAgICAgaWYgKHRoaXMub3JtLnRhYmxlKSB7XG4gICAgICAgICAgICBsb2dnZXJOYW1lID0gJ21vbmdvZGIuZGFvLicgKyAodGhpcy5vcm0udGFibGUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4kbG9nID0gTG9nZ2luZy5nZXRMb2dnZXIobG9nZ2VyTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeShldmVudCwgLi4uYSk6IHZvaWQge1xuICAgICAgICB2YXIgZnVuYyA9IHRoaXNbZXZlbnRdO1xuICAgICAgICBpZiAoIXRoaXNbZXZlbnRdKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudC4gTm90IGEgZnVuY3Rpb246ICcgKyBmdW5jKTtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncy5zbGljZSgxKSk7XG4gICAgfVxuXG4gICAgLy9QcmVwYXJlIGEgSlNPTiBvYmplY3QgZm9yIGluc2VydCBpbnRvIERCXG4gICAgcHVibGljIGNyZWF0ZU5vU1FMRW50aXR5KGVudGl0eSk6IGFueSB7XG4gICAgICAgIHZhciBwZXJzaXN0ZW50SXRlbSA9IHt9O1xuICAgICAgICB2YXIgbWFuZGF0b3JpZXMgPSB0aGlzLm9ybS5nZXRNYW5kYXRvcnlQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFuZGF0b3JpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChtYW5kYXRvcmllc1tpXS5kYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcGVyc2lzdGVudEl0ZW1bbWFuZGF0b3JpZXNbaV0ubmFtZV0gPSBtYW5kYXRvcmllc1tpXS5kYlZhbHVlLmFwcGx5KHRoaXMsIFtlbnRpdHlbbWFuZGF0b3JpZXNbaV0ubmFtZV0sIGVudGl0eV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZXJzaXN0ZW50SXRlbVttYW5kYXRvcmllc1tpXS5uYW1lXSA9IGVudGl0eVttYW5kYXRvcmllc1tpXS5uYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgb3B0aW9uYWxzID0gdGhpcy5vcm0uZ2V0T3B0aW9uYWxQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3B0aW9uYWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uYWxzW2ldLmRiVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHBlcnNpc3RlbnRJdGVtW29wdGlvbmFsc1tpXS5uYW1lXSA9IG9wdGlvbmFsc1tpXS5kYlZhbHVlLmFwcGx5KHRoaXMsIFtlbnRpdHlbb3B0aW9uYWxzW2ldLm5hbWVdLCBlbnRpdHldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVyc2lzdGVudEl0ZW1bb3B0aW9uYWxzW2ldLm5hbWVdID0gZW50aXR5W29wdGlvbmFsc1tpXS5uYW1lXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGVudGl0eVtvcHRpb25hbHNbaV0ubmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1zZ0lkU2VnbWVudCA9IHBlcnNpc3RlbnRJdGVtW3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSA/IFwiW1wiICsgcGVyc2lzdGVudEl0ZW1bdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdICsgXCJdXCIgOiBcIlwiO1xuICAgICAgICB0aGlzLiRsb2cuaW5mbyhcIlRyYW5zZm9ybWF0aW9uIHRvIHt9IERCIEpTT04gb2JqZWN0IGZpbmlzaGVkXCIsICh0aGlzLm9ybS50YWJsZSArIG1zZ0lkU2VnbWVudCkpO1xuICAgICAgICByZXR1cm4gcGVyc2lzdGVudEl0ZW07XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyB2YWxpZGF0ZUVudGl0eShlbnRpdHksIHNraXApOiB2b2lkIHtcbiAgICAgICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkIHx8IGVudGl0eSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBlbnRpdHkgaXMgJyArIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNraXApIHtcbiAgICAgICAgICAgIGlmIChza2lwLmNvbnN0cnVjdG9yICE9PSBBcnJheSkge1xuICAgICAgICAgICAgICAgIHNraXAgPSBbc2tpcF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNraXAubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBza2lwW2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBtYW5kYXRvcmllcyA9IHRoaXMub3JtLmdldE1hbmRhdG9yeVByb3BlcnRpZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYW5kYXRvcmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHByb3BOYW1lID0gbWFuZGF0b3JpZXNbaV0ubmFtZTtcbiAgICAgICAgICAgIGlmICgoc2tpcCAmJiBza2lwLmluZGV4T2YocHJvcE5hbWUpID4gLTEpIHx8IG1hbmRhdG9yaWVzW2ldLnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0JPT0xFQU4nKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSA9IGVudGl0eVtwcm9wTmFtZV07XG4gICAgICAgICAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQgfHwgcHJvcFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsICcgKyBwcm9wTmFtZSArICcgYXR0cmlidXRlIHZhbHVlIGluICcgKyB0aGlzLm9ybS50YWJsZSArICcgZW50aXR5OiAnICsgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgaW5zZXJ0KF9lbnRpdHkpIHtcbiAgICBcbiAgICAgICAgdmFyIGVudGl0aWVzID0gX2VudGl0eTtcbiAgICAgICAgaWYgKF9lbnRpdHkuY29uc3RydWN0b3IgIT09IEFycmF5KSB7XG4gICAgICAgICAgICBlbnRpdGllcyA9IFtfZW50aXR5XTtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygnSW5zZXJ0aW5nIHt9IHt9JywgdGhpcy5vcm0udGFibGUsIChlbnRpdGllcy5sZW5ndGggPT09IDEgPyAnZW50aXR5JyA6ICdlbnRpdGllcycpKTtcbiAgICBcbiAgICAgICAgdmFyIHVwZGF0ZWRSZWNvcmRDb3VudCA9IDA7XG4gICAgICAgIHZhciBpZHMgPSBbXTtcbiAgICBcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRpdGllcy5sZW5ndGg7IGkrKykge1xuICAgIFxuICAgICAgICAgICAgdmFyIGVudGl0eSA9IGVudGl0aWVzW2ldO1xuICAgIFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVudGl0eShlbnRpdHksIFt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0pO1xuICAgIFxuICAgICAgICAgICAgdmFyIGRiRW50aXR5ID0gdGhpcy5jcmVhdGVOb1NRTEVudGl0eShlbnRpdHkpO1xuICAgIFxuICAgICAgICAgICAgdHJ5IHtcbiAgICBcbiAgICAgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IGRiLmdldENvbGxlY3Rpb24odGhpcy5vcm0udGFibGUpO1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IGNvbGxlY3Rpb24uZ2V0TmV4dElkKCk7XG4gICAgXG4gICAgICAgICAgICAgICAgZGJFbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdID0gaWQ7XG4gICAgICAgICAgICAgICAgZGJFbnRpdHlbXCJfaWRcIl0gPSBpZDtcbiAgICBcbiAgICBcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLmluc2VydChkYkVudGl0eSk7XG4gICAgICAgICAgICAgICAgdXBkYXRlZFJlY29yZENvdW50Kys7XG4gICAgXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2FmdGVySW5zZXJ0JywgZGJFbnRpdHkpO1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCdiZWZvcmVJbnNlcnRBc3NvY2lhdGlvblNldHMnLCBkYkVudGl0eSk7XG4gICAgXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRSZWNvcmRDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWRzLnB1c2goZGJFbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kbG9nLmluZm8oJ3t9W10gZW50aXR5IGluc2VydGVkJywgdGhpcy5vcm0udGFibGUsIGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kbG9nLmluZm8oJ05vIGNoYW5nZXMgaW5jdXJyZWQgaW4ge30nLCB0aGlzLm9ybS50YWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgIFxuICAgIFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGxvZy5lcnJvcihcIkluc2VydGluZyB7fSB7fSBmYWlsZWRcIiwgdGhpcy5vcm0udGFibGUsIChlbnRpdGllcy5sZW5ndGggPT09IDEgPyAnZW50aXR5JyA6ICdlbnRpdGllcycpLCBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygnUm9sbGluZyBiYWNrIGNoYW5nZXMgYWZ0ZXIgZmFpbGVkIHt9W3t9XSBpbnNlcnQuICcsIHRoaXMub3JtLnRhYmxlLCBkYkVudGl0eVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0pO1xuICAgICAgICAgICAgICAgIGlmIChkYkVudGl0eVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlKGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbG9nLmVycm9yKCdDb3VsZCBub3Qgcm9sbGJhY2sgY2hhbmdlcyBhZnRlciBmYWlsZWQge31be31dIGluc2VydC4gJywgdGhpcy5vcm0udGFibGUsIGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIGlmIChfZW50aXR5LmNvbnN0cnVjdG9yICE9PSBBcnJheSlcbiAgICAgICAgICAgIHJldHVybiBpZHNbMF07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBpZHM7XG4gICAgfVxuICAgIFxuICAgIC8vIHVwZGF0ZSBlbnRpdHkgZnJvbSBhIEpTT04gb2JqZWN0LiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgdXBkYXRlZCBlbnRpdHkuXG4gICAgcHVibGljIHVwZGF0ZShlbnRpdHkpIHtcbiAgICBcbiAgICAgICAgdGhpcy4kbG9nLmluZm8oJ1VwZGF0aW5nIHt9W3t9XSBlbnRpdHknLCB0aGlzLm9ybS50YWJsZSwgZW50aXR5ICE9PSB1bmRlZmluZWQgPyBlbnRpdHlbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdIDogZW50aXR5KTtcbiAgICBcbiAgICAgICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkIHx8IGVudGl0eSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBlbnRpdHkgaXMgJyArIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdmFyIGlnbm9yZWRQcm9wZXJ0aWVzID0gdGhpcy5vcm0uZ2V0TWFuZGF0b3J5UHJvcGVydGllcygpXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eS5hbGxvd2VkT3BzICYmIHByb3BlcnR5LmFsbG93ZWRPcHMuaW5kZXhPZigndXBkYXRlJykgPCAwO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5Lm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUVudGl0eShlbnRpdHksIGlnbm9yZWRQcm9wZXJ0aWVzKTtcbiAgICBcbiAgICAgICAgdmFyIGRiRW50aXR5ID0gdGhpcy5jcmVhdGVOb1NRTEVudGl0eShlbnRpdHkpO1xuICAgICAgICBkYkVudGl0eVt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZV0gPSBlbnRpdHlbXCJfaWRcIl07XG4gICAgICAgIGRiRW50aXR5W1wiX2lkXCJdID0gZW50aXR5W1wiX2lkXCJdO1xuICAgIFxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2JlZm9yZVVwZGF0ZUVudGl0eScsIGRiRW50aXR5KTtcbiAgICBcbiAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gZGIuZ2V0Q29sbGVjdGlvbih0aGlzLm9ybS50YWJsZSk7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLnVwZGF0ZSh7IFwiX2lkXCI6IGVudGl0eVtcIl9pZFwiXSB9LCBkYkVudGl0eSk7XG4gICAgXG4gICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygne31be31dIGVudGl0eSB1cGRhdGVkJywgdGhpcy5vcm0udGFibGUsIGRiRW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSk7XG4gICAgXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy4kbG9nLmVycm9yKCdVcGRhdGluZyB7fVt7fV0gZmFpbGVkJywgdGhpcy5vcm0udGFibGUsIGVudGl0eSAhPT0gdW5kZWZpbmVkID8gZW50aXR5W3RoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lXSA6IGVudGl0eSwgZSk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyBkZWxldGUgZW50aXR5IGJ5IGlkLCBvciBhcnJheSBvZiBpZHMsIG9yIGRlbGV0ZSBhbGwgKGlmIG5vdCBhcmd1bWVudCBpcyBwcm92aWRlZCkuXG4gICAgcHVibGljIHJlbW92ZShpZCkge1xuICAgIFxuICAgICAgICB2YXIgaWRzID0gW107XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZHMgPSB0aGlzLmxpc3Qoe1xuICAgICAgICAgICAgICAgIFwiJHNlbGVjdFwiOiBbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdXG4gICAgICAgICAgICB9KS5tYXAoZnVuY3Rpb24gKGVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbnRbdGhpcy5vcm0uZ2V0UHJpbWFyeUtleSgpLm5hbWVdO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHNbMF0uY29uc3RydWN0b3IgIT09IEFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWRzID0gW2FyZ3VtZW50c1swXV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlkcyA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygnRGVsZXRpbmcgJyArIHRoaXMub3JtLnRhYmxlICsgKChpZHMgIT09IHVuZGVmaW5lZCAmJiBpZHMubGVuZ3RoID09PSAxKSA/ICdbJyArIGlkc1swXSArICddIGVudGl0eScgOiBpZHMubGVuZ3RoICsgJyBlbnRpdGllcycpKTtcbiAgICBcbiAgICBcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcbiAgICBcbiAgICAgICAgICAgIHZhciBpZCA9IGlkc1tpXTtcbiAgICBcbiAgICAgICAgICAgIGlmIChpZHMubGVuZ3RoID4gMSlcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygnRGVsZXRpbmcge31be31dIGVudGl0eScsIHRoaXMub3JtLnRhYmxlLCBpZCk7XG4gICAgXG4gICAgICAgICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCB8fCBpZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBhcmd1bWVudCBmb3IgaWQgcGFyYW1ldGVyOicgKyBpZCk7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICB0cnkge1xuICAgIFxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCdiZWZvcmVSZW1vdmVFbnRpdHknLCBpZCk7XG4gICAgXG4gICAgICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBkYi5nZXRDb2xsZWN0aW9uKHRoaXMub3JtLnRhYmxlKTtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnJlbW92ZSh7IFwiX2lkXCI6IGlkIH0pO1xuICAgIFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGxvZy5lcnJvcignRGVsZXRpbmcge31be31dIGVudGl0eSBmYWlsZWQnLCB0aGlzLm9ybS50YWJsZSwgaWQsIGUpO1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgIH1cbiAgICBcbiAgICB9XG4gICAgXG4gICAgcHVibGljIGV4cGFuZChleHBhbnNpb25QYXRoLCBjb250ZXh0KSB7XG4gICAgICAgIHRoaXMuJGxvZy5pbmZvKCdFeHBhbmRpbmcgZm9yIGFzc29jaWF0aW9uIHBhdGgge30gYW5kIGNvbnRleHQgZW50aXR5IHt9JywgZXhwYW5zaW9uUGF0aCwgKHR5cGVvZiBhcmd1bWVudHNbMV0gIT09ICdvYmplY3QnID8gJ2lkICcgOiAnJykgKyBKU09OLnN0cmluZ2lmeShhcmd1bWVudHNbMV0pKTtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBcbiAgICAvKiBcbiAgICAgICAgUmVhZHMgYSBzaW5nbGUgZW50aXR5IGJ5IGlkLCBwYXJzZWQgaW50byBKU09OIG9iamVjdC4gXG4gICAgICAgIElmIHJlcXVlc3RlZCBhcyBleHBhbmRlZCB0aGUgcmV0dXJuZWQgZW50aXR5IHdpbGwgY29tcHJpc2UgYXNzb2NpYXRlZCAoZGVwZW5kZW50KSBlbnRpdGllcyB0b28uIEV4cGFuZCBjYW4gYmUgYSBzdHJpbmcgdGhhIHRpcyBhIHZhbGlkIGFzc29jaWF0aW9uIG5hbWUgZGVmaW5lZCBpbiB0aGlzIGRhbyBvcm0gb3JcbiAgICAgICAgYW4gYXJyYXkgb2Ygc3VjaCBuYW1lcy5cbiAgICAqL1xuICAgIHB1YmxpYyBmaW5kKGlkLCBleHBhbmQsIHNlbGVjdCkge1xuICAgIFxuICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlkID0gYXJndW1lbnRzWzBdLmlkO1xuICAgICAgICAgICAgZXhwYW5kID0gYXJndW1lbnRzWzBdLiRleHBhbmQgfHwgYXJndW1lbnRzWzBdLmV4cGFuZDtcbiAgICAgICAgICAgIHNlbGVjdCA9IGFyZ3VtZW50c1swXS4kc2VsZWN0IHx8IGFyZ3VtZW50c1swXS5zZWxlY3Q7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdGhpcy4kbG9nLmluZm8oJ0ZpbmRpbmcge31be31dIGVudGl0eSB3aXRoIGxpc3QgcGFyYW1ldGVycyBleHBhbmRbe31dLCBzZWxlY3Rbe31dJywgdGhpcy5vcm0udGFibGUsIGlkLCBleHBhbmQsIHNlbGVjdCk7XG4gICAgXG4gICAgICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQgZm9yIGlkIHBhcmFtZXRlcjonICsgaWQpO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgZW50aXR5O1xuICAgICAgICAgICAgaWYgKHNlbGVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdC5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgPSBzZWxlY3Quc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKHNlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWwuY29uc3RydWN0b3IgIT09IFN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IHNlbGVjdCBhcnJheSBjb21wb25lbnRzIGFyZSBleHBlY3RlZCBvdCBiZSBzdHJpbmdzIGJ1dCBmb3VuZCAnICsgKHR5cGVvZiBzZWwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IHNlbGVjdCBpcyBleHBlY3RlZCB0byBiZSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncyBidXQgd2FzICcgKyAodHlwZW9mIHNlbGVjdCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9lbnN1cmUgdGhhdCBqb2lua2V5cyBmb3IgcmVxdWlyZWQgZXhwYW5kcyBhcmUgYXZhaWxhYmxlIGFuZCBub3QgZmlsdGVyZWQgYnkgc2VsZWN0XG4gICAgICAgICAgICBpZiAoc2VsZWN0ICE9PSB1bmRlZmluZWQgJiYgZXhwYW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3QucHVzaCh0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCkubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICB2YXIgcGFyYW1zID0ge307XG4gICAgICAgICAgICBwYXJhbXNbXCJfaWRcIl0gPSBpZDtcbiAgICBcbiAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gZGIuZ2V0Q29sbGVjdGlvbih0aGlzLm9ybS50YWJsZSk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSBjb2xsZWN0aW9uLmZpbmQocGFyYW1zLCBzZWxlY3QpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbnRpdHkgPSBjb2xsZWN0aW9uLmZpbmRPbmVCeUlkKGlkKTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICBcbiAgICAgICAgICAgIGlmIChlbnRpdHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygne31be31dIGVudGl0eSBmb3VuZCcsIHRoaXMub3JtLnRhYmxlLCBpZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoJ2FmdGVyRm91bmQnLCBlbnRpdHkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2cuaW5mbygne31be31dIGVudGl0eSBub3QgZm91bmQnLCB0aGlzLm9ybS50YWJsZSwgaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVudGl0eTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy4kbG9nLmVycm9yKFwiRmluZGluZyB7fVt7fV0gZW50aXRpeSBmYWlsZWQuXCIsIHRoaXMub3JtLnRhYmxlLCBpZCwgZSk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygnQ291bnRpbmcgJyArIHRoaXMub3JtLnRhYmxlICsgJyBlbnRpdGllcycpO1xuICAgIFxuICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBkYi5nZXRDb2xsZWN0aW9uKHRoaXMub3JtLnRhYmxlKTtcbiAgICAgICAgICAgIGNvdW50ID0gY29sbGVjdGlvbi5jb3VudCgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLiRsb2cuZXJyb3IoJ0NvdW50aW5nIHt9IGVudGl0aWVzIGZhaWxlZCcsIHRoaXMub3JtLnRhYmxlLCBlKTtcbiAgICAgICAgICAgIC8vIGUuZXJyQ29udGV4dCA9IHBhcmFtZXRlcmljU3RhdGVtZW50LnRvU3RyaW5nKCk7IC8vIFRPRE86IHBhcmFtZXRlcmljU3RhdGVtZW50P1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0aGlzLiRsb2cuaW5mbygne30ge30gZW50aXRpZXMgY291bnRlZCcsIFN0cmluZyhjb3VudCksIHRoaXMub3JtLnRhYmxlKTtcbiAgICBcbiAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH07XG4gICAgXG4gICAgLypcbiAgICAgKiBsaXN0IHBhcmFtZXRlcnM6XG4gICAgICogLSAkZXhwYW5kXG4gICAgICogLSAkZmlsdGVyXG4gICAgICogLSAkc2VsZWN0XG4gICAgICogLSAkc29ydFxuICAgICAqIC0gJG9yZGVyIFxuICAgICAqIC0gJGxpbWl0XG4gICAgICogLSAkb2Zmc2V0XG4gICAgICovXG4gICAgcHVibGljIGxpc3Qoc2V0dGluZ3MpIHtcbiAgICBcbiAgICAgICAgc2V0dGluZ3MgPSBzZXR0aW5ncyB8fCB7fTtcbiAgICBcbiAgICAgICAgdmFyIGV4cGFuZCA9IHNldHRpbmdzLiRleHBhbmQgfHwgc2V0dGluZ3MuZXhwYW5kO1xuICAgICAgICBpZiAoZXhwYW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChleHBhbmQuY29uc3RydWN0b3IgIT09IEFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4cGFuZC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleHBhbmQuaW5kZXhPZignLCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLiRleHBhbmQgPSBleHBhbmQuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24gKGV4cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHAuY29uc3RydWN0b3IgIT09IFN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IGV4cGFuZCBhcnJheSBjb21wb25lbnRzIGFyZSBleHBlY3RlZCBvdCBiZSBzdHJpbmdzIGJ1dCBmb3VuZCAnICsgKHR5cGVvZiBleHApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuJGV4cGFuZCA9IFtleHBhbmRdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0lsbGVnYWwgYXJndW1lbnQ6IGV4cGFuZCBpcyBleHBlY3RlZCB0byBiZSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncyBidXQgd2FzICcgKyAodHlwZW9mIGV4cGFuZCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIFxuICAgICAgICB2YXIgc2VsZWN0ID0gc2V0dGluZ3MuJHNlbGVjdCB8fCBzZXR0aW5ncy5zZWxlY3Q7XG4gICAgICAgIGlmIChzZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHNlbGVjdC5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0LmNvbnN0cnVjdG9yID09PSBTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdC5pbmRleE9mKCcsJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuJHNlbGVjdCA9IHNlbGVjdC5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbiAoZXhwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cC5jb25zdHJ1Y3RvciAhPT0gU3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogc2VsZWN0IGFycmF5IGNvbXBvbmVudHMgYXJlIGV4cGVjdGVkIG90IGJlIHN0cmluZ3MgYnV0IGZvdW5kICcgKyAodHlwZW9mIGV4cCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHAudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy4kc2VsZWN0ID0gW3NlbGVjdF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogc2VsZWN0IGlzIGV4cGVjdGVkIHRvIGJlIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIGJ1dCB3YXMgJyArICh0eXBlb2YgZXhwYW5kKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIHZhciBsaXN0QXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIGxpc3RBcmdzLnB1c2goJyAnICsga2V5ICsgJ1snICsgc2V0dGluZ3Nba2V5XSArICddJyk7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdGhpcy4kbG9nLmluZm8oJ0xpc3Rpbmcge30gZW50aXR5IGNvbGxlY3Rpb24gd2l0aCBsaXN0IG9wZXJhdG9yczoge30nLCB0aGlzLm9ybS50YWJsZSwgbGlzdEFyZ3Muam9pbignLCcpKTtcbiAgICBcbiAgICAgICAgaWYgKHNldHRpbmdzLiRzZWxlY3QgIT09IHVuZGVmaW5lZCAmJiBleHBhbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2V0dGluZ3MuJHNlbGVjdC5wdXNoKHRoaXMub3JtLmdldFByaW1hcnlLZXkoKS5uYW1lKTtcbiAgICAgICAgfVxuICAgIFxuICAgICAgICAvL3NpbXBsaXN0aWMgZmlsdGVyaW5nIG9mIChvbmx5KSBzdHJpbmcgcHJvcGVydGllcyB3aXRoIGxpa2VcbiAgICAgICAgaWYgKHNldHRpbmdzLiRmaWx0ZXIpIHtcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy4kZmlsdGVyLmluZGV4T2YoJywnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgc2V0dGluZ3MuJGZpbHRlciA9IHNldHRpbmdzLiRmaWx0ZXIuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0dGluZ3MuJGZpbHRlciA9IFtzZXR0aW5ncy4kZmlsdGVyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldHRpbmdzLiRmaWx0ZXIgPSBzZXR0aW5ncy4kZmlsdGVyLmZpbHRlcihmdW5jdGlvbiAoZmlsdGVyRmllbGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcCA9IHRoaXMub3Jtc3RhdGVtZW50cy5vcm0uZ2V0UHJvcGVydHkoZmlsdGVyRmllbGQpO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSB1bmRlZmluZWQgfHwgcHJvcC50eXBlLnRvVXBwZXJDYXNlKCkgIT09ICdWQVJDSEFSJyB8fCBzZXR0aW5nc1twcm9wLm5hbWVdID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXR0aW5nc1twcm9wLm5hbWVdID0gJyUnICsgc2V0dGluZ3NbcHJvcC5uYW1lXSArICclJztcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBlbnRpdGllcyA9IFtdO1xuICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBkYi5nZXRDb2xsZWN0aW9uKHRoaXMub3JtLnRhYmxlKTtcbiAgICAgICAgICAgIHZhciBjdXJzb3IgPSBjb2xsZWN0aW9uLmZpbmQoKTtcbiAgICAgICAgICAgIHdoaWxlIChjdXJzb3IuaGFzTmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgZW50aXRpZXMucHVzaChjdXJzb3IubmV4dCgpKTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIHRoaXMuJGxvZy5pbmZvKCd7fSB7fSBlbnRpdGllcyBmb3VuZCcsIGVudGl0aWVzLmxlbmd0aCwgdGhpcy5vcm0udGFibGUpO1xuICAgIFxuICAgICAgICAgICAgcmV0dXJuIGVudGl0aWVzO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLiRsb2cuZXJyb3IoXCJMaXN0aW5nIHt9IGVudGl0aWVzIGZhaWxlZC5cIiwgdGhpcy5vcm0udGFibGUsIGUpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgZXhpc3RzVGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgY3JlYXRlVGFibGUoKTogdm9pZCB7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBkcm9wVGFibGUoKTogREFPIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG4vKipcbiAqIG9EZWZpbml0aW9uIGNhbiBiZSB0YWJsZSBkZWZpbml0aW9uIG9yIHN0YW5kYXJkIG9ybSBkZWZpbml0aW9uIG9iamVjdC4gT3IgaXQgY2FuIGJlIGEgdmFsaWQgcGF0aCB0b1xuICogYSAudGFibGUgZmlsZSwgb3IgYW55IG90aGVyIHRleHQgZmlsZSBjb250aWFuaW5nIGEgc3RhbmRhcmQgZGFvIG9ybSBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKG9EZWZpbml0aW9uLCBsb2dDdHhOYW1lLCBkYXRhU291cmNlTmFtZSwgZGF0YWJhc2VUeXBlKSB7XG4gICAgdmFyIG9ybTtcblxuICAgIG9ybSA9IG9EZWZpbml0aW9uO1xuXG4gICAgdmFyIHByb2R1Y3ROYW1lID0gZ2xvYmFscy5nZXQoZGF0YWJhc2VUeXBlICsgXCJfXCIgKyBkYXRhU291cmNlTmFtZSk7XG4gICAgaWYgKCFwcm9kdWN0TmFtZSkge1xuICAgICAgICBwcm9kdWN0TmFtZSA9IFwiTW9uZ29EQlwiO1xuICAgICAgICBnbG9iYWxzLnNldChkYXRhYmFzZVR5cGUgKyBcIl9cIiArIGRhdGFTb3VyY2VOYW1lLCBwcm9kdWN0TmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEQU8ob3JtLCBsb2dDdHhOYW1lKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkYW8ob0RlZmluaXRpb24sIGxvZ0N0eE5hbWUsIGRhdGFTb3VyY2VOYW1lLCBkYXRhYmFzZVR5cGUpIHtcbiAgICByZXR1cm4gY3JlYXRlKG9EZWZpbml0aW9uLCBsb2dDdHhOYW1lLCBkYXRhU291cmNlTmFtZSwgZGF0YWJhc2VUeXBlKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUVBLFNBQVMsZUFBZTtBQUN4QixTQUFTLGNBQWM7QUFDdkIsWUFBWSxrQkFBa0I7QUFDOUIsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsc0JBQXNCO0FBRS9CLE1BQU0sUUFBUSxlQUFlLElBQUksZ0NBQWdDLDJCQUEyQjtBQUU1RixNQUFNLGNBQWMsSUFBSSxPQUFPLE9BQU8sTUFBTSxJQUFJO0FBQ2hELE1BQU0sS0FBSyxZQUFZLE1BQU07QUFFdEIsTUFBTSxJQUFJO0FBQUEsRUFJYixZQUFZLEtBQVUsYUFBcUIsZUFBZTtBQUN0RCxTQUFLLE1BQU0sYUFBYSxJQUFJLEdBQUc7QUFFL0IsUUFBSSxhQUFhO0FBQ2pCLFFBQUksS0FBSyxJQUFJLE9BQU87QUFDaEIsbUJBQWEsaUJBQWtCLEtBQUssSUFBSSxNQUFNLFlBQVk7QUFBQSxJQUM5RDtBQUNBLFNBQUssT0FBTyxRQUFRLFVBQVUsVUFBVTtBQUFBLEVBQzVDO0FBQUEsRUFFTyxPQUFPLFVBQVUsR0FBUztBQUM3QixRQUFJLE9BQU8sS0FBSyxLQUFLO0FBQ3JCLFFBQUksQ0FBQyxLQUFLLEtBQUs7QUFDWDtBQUNKLFFBQUksT0FBTyxTQUFTO0FBQ2hCLFlBQU0sTUFBTSx1Q0FBdUMsSUFBSTtBQUMzRCxRQUFJLE9BQU8sQ0FBQyxFQUFFLE1BQU0sS0FBSyxTQUFTO0FBQ2xDLFNBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUM7QUFBQSxFQUNsQztBQUFBO0FBQUEsRUFHTyxrQkFBa0IsUUFBYTtBQUNsQyxR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
@@ -0,0 +1,7 @@
1
+ import * as client from "./client";
2
+ import * as dao from "./dao";
3
+ export {
4
+ client,
5
+ dao
6
+ };
7
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21vbmdvZGIvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCAqIGFzIGNsaWVudCBmcm9tIFwiLi9jbGllbnRcIjtcbmV4cG9ydCAqIGFzIGRhbyBmcm9tIFwiLi9kYW9cIjsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxZQUFZLFlBQVk7QUFDeEIsWUFBWSxTQUFTOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,21 @@
1
+ const WEBSOCKET_METADATA_KEY = Symbol("websocket:metadata");
2
+ function Websocket(options) {
3
+ return function(target, context) {
4
+ if (context.kind !== "class") {
5
+ throw new Error(`@Websocket can only be used on classes.`);
6
+ }
7
+ Object.defineProperty(target, WEBSOCKET_METADATA_KEY, {
8
+ value: {
9
+ name: options.name,
10
+ endpoint: options.endpoint
11
+ },
12
+ writable: false,
13
+ configurable: false,
14
+ enumerable: true
15
+ });
16
+ };
17
+ }
18
+ export {
19
+ Websocket
20
+ };
21
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25ldC9kZWNvcmF0b3JzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBXRUJTT0NLRVRfTUVUQURBVEFfS0VZID0gU3ltYm9sKFwid2Vic29ja2V0Om1ldGFkYXRhXCIpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdlYnNvY2tldE9wdGlvbnMge1xuICAgIG5hbWU6IHN0cmluZzsgLy8gZS5nLiwgXCJNeVdlYnNjb2tldFwiXG4gICAgZW5kcG9pbnQ6IHN0cmluZzsgICAgICAvLyBlLmcuLCBcIm15LXdzXCJcbn1cblxuLyoqXG4gKiBAV2Vic29ja2V0IGRlY29yYXRvclxuICogTWFya3MgYW4gZW50aXJlIGNsYXNzIGFzIGEgd2Vic29ja2V0XG4gKlxuICogaW50cm9kdWNlZCBpbiBUeXBlU2NyaXB0IDUuMCwgd2hpY2ggZXhwZWN0cyBhIENsYXNzRGVjb3JhdG9yQ29udGV4dCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBXZWJzb2NrZXQob3B0aW9uczogV2Vic29ja2V0T3B0aW9ucykge1xuICAgIFxuICAgIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55KSA9PiBhbnk+KHRhcmdldDogVCwgY29udGV4dDogQ2xhc3NEZWNvcmF0b3JDb250ZXh0PFQ+KSB7XG4gICAgICAgIFxuICAgICAgICBpZiAoY29udGV4dC5raW5kICE9PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEBXZWJzb2NrZXQgY2FuIG9ubHkgYmUgdXNlZCBvbiBjbGFzc2VzLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgV0VCU09DS0VUX01FVEFEQVRBX0tFWSwge1xuICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6IG9wdGlvbnMuZW5kcG9pbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsTUFBTSx5QkFBeUIsT0FBTyxvQkFBb0I7QUFhbkQsU0FBUyxVQUFVLFNBQTJCO0FBRWpELFNBQU8sU0FBd0QsUUFBVyxTQUFtQztBQUV6RyxRQUFJLFFBQVEsU0FBUyxTQUFTO0FBQzFCLFlBQU0sSUFBSSxNQUFNLHlDQUF5QztBQUFBLElBQzdEO0FBRUEsV0FBTyxlQUFlLFFBQVEsd0JBQXdCO0FBQUEsTUFDbEQsT0FBTztBQUFBLFFBQ0gsTUFBTSxRQUFRO0FBQUEsUUFDZCxVQUFVLFFBQVE7QUFBQSxNQUN0QjtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsY0FBYztBQUFBLE1BQ2QsWUFBWTtBQUFBLElBQ2hCLENBQUM7QUFBQSxFQUNMO0FBQ0o7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,12 @@
1
+ export * from "./soap";
2
+ import { SOAP } from "./soap";
3
+ export * from "./websockets";
4
+ import { Websockets } from "./websockets";
5
+ import * as decorators from "./decorators";
6
+ export * from "./decorators";
7
+ export {
8
+ decorators,
9
+ SOAP as soap,
10
+ Websockets as websockets
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25ldC9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0ICogZnJvbSBcIi4vc29hcFwiO1xuZXhwb3J0IHsgU09BUCBhcyBzb2FwIH0gZnJvbSBcIi4vc29hcFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vd2Vic29ja2V0c1wiO1xuZXhwb3J0IHsgV2Vic29ja2V0cyBhcyB3ZWJzb2NrZXRzIH0gZnJvbSBcIi4vd2Vic29ja2V0c1wiO1xuZXhwb3J0ICogYXMgZGVjb3JhdG9ycyBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsY0FBYztBQUNkLFNBQWlCLFlBQVk7QUFDN0IsY0FBYztBQUNkLFNBQXVCLGtCQUFrQjtBQUN6QyxZQUFZLGdCQUFnQjtBQUM1QixjQUFjOyIsCiAgIm5hbWVzIjogW10KfQo=