taon 0.0.0 → 18.0.12

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 (668) hide show
  1. package/README.md +115 -0
  2. package/assets/shared/shared_folder_info.txt +7 -0
  3. package/bin/start.js +279 -0
  4. package/bin/taon +2 -1
  5. package/bin/taon-debug +2 -2
  6. package/bin/taon-debug-brk +3 -2
  7. package/browser/README.md +24 -0
  8. package/browser/esm2022/lib/base-classes/base-abstract-entity.mjs +18 -0
  9. package/browser/esm2022/lib/base-classes/base-class.mjs +17 -0
  10. package/browser/esm2022/lib/base-classes/base-context.mjs +14 -0
  11. package/browser/esm2022/lib/base-classes/base-controller.mjs +18 -0
  12. package/browser/esm2022/lib/base-classes/base-crud-controller.mjs +279 -0
  13. package/browser/esm2022/lib/base-classes/base-entity.mjs +18 -0
  14. package/browser/esm2022/lib/base-classes/base-injector.mjs +160 -0
  15. package/browser/esm2022/lib/base-classes/base-provider.mjs +6 -0
  16. package/browser/esm2022/lib/base-classes/base-repository.mjs +514 -0
  17. package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +137 -0
  18. package/browser/esm2022/lib/base-classes/base-subscriber.mjs +27 -0
  19. package/browser/esm2022/lib/base-classes/base.mjs +26 -0
  20. package/browser/esm2022/lib/constants.mjs +4 -0
  21. package/browser/esm2022/lib/create-context.mjs +87 -0
  22. package/browser/esm2022/lib/decorators/classes/controller-decorator.mjs +15 -0
  23. package/browser/esm2022/lib/decorators/classes/entity-decorator.mjs +27 -0
  24. package/browser/esm2022/lib/decorators/classes/provider-decorator.mjs +15 -0
  25. package/browser/esm2022/lib/decorators/classes/repository-decorator.mjs +15 -0
  26. package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +41 -0
  27. package/browser/esm2022/lib/decorators/http/http-decorators.mjs +22 -0
  28. package/browser/esm2022/lib/decorators/http/http-methods-decorators.mjs +78 -0
  29. package/browser/esm2022/lib/decorators/http/http-params-decorators.mjs +47 -0
  30. package/browser/esm2022/lib/dependency-injection/di-container.mjs +32 -0
  31. package/browser/esm2022/lib/endpoint-context.mjs +1746 -0
  32. package/browser/esm2022/lib/entity-process.mjs +207 -0
  33. package/browser/esm2022/lib/env.mjs +6 -0
  34. package/browser/esm2022/lib/get-response-value.mjs +41 -0
  35. package/browser/esm2022/lib/helpers/class-helpers.mjs +183 -0
  36. package/browser/esm2022/lib/helpers/taon-helpers.mjs +120 -0
  37. package/browser/esm2022/lib/index.mjs +79 -0
  38. package/browser/esm2022/lib/inject.mjs +70 -0
  39. package/browser/esm2022/lib/models.mjs +77 -0
  40. package/browser/esm2022/lib/orm.mjs +6 -0
  41. package/browser/esm2022/lib/realtime/realtime-client.mjs +129 -0
  42. package/browser/esm2022/lib/realtime/realtime-core.mjs +54 -0
  43. package/browser/esm2022/lib/realtime/realtime-server.mjs +274 -0
  44. package/browser/esm2022/lib/realtime/realtime-strategy/index.mjs +7 -0
  45. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +98 -0
  46. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +45 -0
  47. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +40 -0
  48. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +25 -0
  49. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +4 -0
  50. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +49 -0
  51. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +5 -0
  52. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +50 -0
  53. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +48 -0
  54. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +35 -0
  55. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +43 -0
  56. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +4 -0
  57. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +28 -0
  58. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +33 -0
  59. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +10 -0
  60. package/browser/esm2022/lib/realtime/realtime-subs-manager.mjs +79 -0
  61. package/browser/esm2022/lib/realtime/realtime.models.mjs +4 -0
  62. package/browser/esm2022/lib/storage.mjs +5 -0
  63. package/browser/esm2022/lib/symbols.mjs +89 -0
  64. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +4 -0
  65. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +32 -0
  66. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +167 -0
  67. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +64 -0
  68. package/browser/esm2022/lib/validators.mjs +76 -0
  69. package/browser/esm2022/public-api.mjs +2 -0
  70. package/browser/esm2022/taon.mjs +5 -0
  71. package/browser/fesm2022/taon.mjs +4901 -0
  72. package/browser/fesm2022/taon.mjs.map +1 -0
  73. package/browser/index.d.ts +6 -0
  74. package/browser/lib/base-classes/base-abstract-entity.d.ts +7 -0
  75. package/browser/lib/base-classes/base-class.d.ts +9 -0
  76. package/browser/lib/base-classes/base-context.d.ts +17 -0
  77. package/browser/lib/base-classes/base-controller.d.ts +8 -0
  78. package/browser/lib/base-classes/base-crud-controller.d.ts +28 -0
  79. package/browser/lib/base-classes/base-entity.d.ts +8 -0
  80. package/browser/lib/base-classes/base-injector.d.ts +60 -0
  81. package/browser/lib/base-classes/base-provider.d.ts +4 -0
  82. package/browser/lib/base-classes/base-repository.d.ts +249 -0
  83. package/browser/lib/base-classes/base-subscriber-for-entity.d.ts +82 -0
  84. package/browser/lib/base-classes/base-subscriber.d.ts +5 -0
  85. package/browser/lib/base-classes/base.d.ts +36 -0
  86. package/browser/lib/constants.d.ts +2 -0
  87. package/browser/lib/create-context.d.ts +25 -0
  88. package/browser/lib/decorators/classes/controller-decorator.d.ts +13 -0
  89. package/browser/lib/decorators/classes/entity-decorator.d.ts +17 -0
  90. package/browser/lib/decorators/classes/provider-decorator.d.ts +5 -0
  91. package/browser/lib/decorators/classes/repository-decorator.d.ts +5 -0
  92. package/browser/lib/decorators/classes/subscriber-decorator.d.ts +6 -0
  93. package/browser/lib/decorators/http/http-decorators.d.ts +18 -0
  94. package/browser/lib/decorators/http/http-methods-decorators.d.ts +15 -0
  95. package/browser/lib/decorators/http/http-params-decorators.d.ts +6 -0
  96. package/browser/lib/dependency-injection/di-container.d.ts +6 -0
  97. package/browser/lib/endpoint-context.d.ts +117 -0
  98. package/browser/lib/entity-process.d.ts +40 -0
  99. package/browser/lib/env.d.ts +3 -0
  100. package/browser/lib/get-response-value.d.ts +7 -0
  101. package/browser/lib/helpers/class-helpers.d.ts +19 -0
  102. package/browser/lib/helpers/taon-helpers.d.ts +17 -0
  103. package/browser/lib/index.d.ts +113 -0
  104. package/browser/lib/inject.d.ts +9 -0
  105. package/browser/lib/models.d.ts +175 -0
  106. package/browser/lib/orm.d.ts +3 -0
  107. package/browser/lib/realtime/realtime-client.d.ts +32 -0
  108. package/browser/lib/realtime/realtime-core.d.ts +41 -0
  109. package/browser/lib/realtime/realtime-server.d.ts +14 -0
  110. package/browser/lib/realtime/realtime-strategy/index.d.ts +5 -0
  111. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +22 -0
  112. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +17 -0
  113. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +11 -0
  114. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +11 -0
  115. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +14 -0
  116. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +23 -0
  117. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +3 -0
  118. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +17 -0
  119. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +18 -0
  120. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +12 -0
  121. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +14 -0
  122. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +12 -0
  123. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +15 -0
  124. package/browser/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +17 -0
  125. package/browser/lib/realtime/realtime-strategy/realtime-strategy.d.ts +13 -0
  126. package/browser/lib/realtime/realtime-subs-manager.d.ts +15 -0
  127. package/browser/lib/realtime/realtime.models.d.ts +14 -0
  128. package/browser/lib/storage.d.ts +2 -0
  129. package/browser/lib/symbols.d.ts +73 -0
  130. package/browser/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +6 -0
  131. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +18 -0
  132. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +51 -0
  133. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +25 -0
  134. package/browser/lib/validators.d.ts +8 -0
  135. package/browser/package.json +25 -0
  136. package/browser/public-api.d.ts +2 -0
  137. package/cli.d.ts +1 -0
  138. package/cli.js +24 -0
  139. package/cli.js.map +1 -0
  140. package/client/README.md +24 -0
  141. package/client/esm2022/lib/base-classes/base-abstract-entity.mjs +18 -0
  142. package/client/esm2022/lib/base-classes/base-class.mjs +17 -0
  143. package/client/esm2022/lib/base-classes/base-context.mjs +14 -0
  144. package/client/esm2022/lib/base-classes/base-controller.mjs +18 -0
  145. package/client/esm2022/lib/base-classes/base-crud-controller.mjs +279 -0
  146. package/client/esm2022/lib/base-classes/base-entity.mjs +18 -0
  147. package/client/esm2022/lib/base-classes/base-injector.mjs +160 -0
  148. package/client/esm2022/lib/base-classes/base-provider.mjs +6 -0
  149. package/client/esm2022/lib/base-classes/base-repository.mjs +514 -0
  150. package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +137 -0
  151. package/client/esm2022/lib/base-classes/base-subscriber.mjs +27 -0
  152. package/client/esm2022/lib/base-classes/base.mjs +26 -0
  153. package/client/esm2022/lib/constants.mjs +4 -0
  154. package/client/esm2022/lib/create-context.mjs +87 -0
  155. package/client/esm2022/lib/decorators/classes/controller-decorator.mjs +15 -0
  156. package/client/esm2022/lib/decorators/classes/entity-decorator.mjs +27 -0
  157. package/client/esm2022/lib/decorators/classes/provider-decorator.mjs +15 -0
  158. package/client/esm2022/lib/decorators/classes/repository-decorator.mjs +15 -0
  159. package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +41 -0
  160. package/client/esm2022/lib/decorators/http/http-decorators.mjs +22 -0
  161. package/client/esm2022/lib/decorators/http/http-methods-decorators.mjs +78 -0
  162. package/client/esm2022/lib/decorators/http/http-params-decorators.mjs +47 -0
  163. package/client/esm2022/lib/dependency-injection/di-container.mjs +32 -0
  164. package/client/esm2022/lib/endpoint-context.mjs +1746 -0
  165. package/client/esm2022/lib/entity-process.mjs +207 -0
  166. package/client/esm2022/lib/env.mjs +6 -0
  167. package/client/esm2022/lib/get-response-value.mjs +41 -0
  168. package/client/esm2022/lib/helpers/class-helpers.mjs +183 -0
  169. package/client/esm2022/lib/helpers/taon-helpers.mjs +120 -0
  170. package/client/esm2022/lib/index.mjs +79 -0
  171. package/client/esm2022/lib/inject.mjs +70 -0
  172. package/client/esm2022/lib/models.mjs +77 -0
  173. package/client/esm2022/lib/orm.mjs +6 -0
  174. package/client/esm2022/lib/realtime/realtime-client.mjs +129 -0
  175. package/client/esm2022/lib/realtime/realtime-core.mjs +54 -0
  176. package/client/esm2022/lib/realtime/realtime-server.mjs +274 -0
  177. package/client/esm2022/lib/realtime/realtime-strategy/index.mjs +7 -0
  178. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +98 -0
  179. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +45 -0
  180. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +40 -0
  181. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +25 -0
  182. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +4 -0
  183. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +49 -0
  184. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +5 -0
  185. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +50 -0
  186. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +48 -0
  187. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +35 -0
  188. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +43 -0
  189. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +4 -0
  190. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +28 -0
  191. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +33 -0
  192. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +10 -0
  193. package/client/esm2022/lib/realtime/realtime-subs-manager.mjs +79 -0
  194. package/client/esm2022/lib/realtime/realtime.models.mjs +4 -0
  195. package/client/esm2022/lib/storage.mjs +5 -0
  196. package/client/esm2022/lib/symbols.mjs +89 -0
  197. package/client/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +4 -0
  198. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +32 -0
  199. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +167 -0
  200. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +64 -0
  201. package/client/esm2022/lib/validators.mjs +76 -0
  202. package/client/esm2022/public-api.mjs +2 -0
  203. package/client/esm2022/taon.mjs +5 -0
  204. package/client/fesm2022/taon.mjs +4901 -0
  205. package/client/fesm2022/taon.mjs.map +1 -0
  206. package/client/index.d.ts +6 -0
  207. package/client/lib/base-classes/base-abstract-entity.d.ts +7 -0
  208. package/client/lib/base-classes/base-class.d.ts +9 -0
  209. package/client/lib/base-classes/base-context.d.ts +17 -0
  210. package/client/lib/base-classes/base-controller.d.ts +8 -0
  211. package/client/lib/base-classes/base-crud-controller.d.ts +28 -0
  212. package/client/lib/base-classes/base-entity.d.ts +8 -0
  213. package/client/lib/base-classes/base-injector.d.ts +60 -0
  214. package/client/lib/base-classes/base-provider.d.ts +4 -0
  215. package/client/lib/base-classes/base-repository.d.ts +249 -0
  216. package/client/lib/base-classes/base-subscriber-for-entity.d.ts +82 -0
  217. package/client/lib/base-classes/base-subscriber.d.ts +5 -0
  218. package/client/lib/base-classes/base.d.ts +36 -0
  219. package/client/lib/constants.d.ts +2 -0
  220. package/client/lib/create-context.d.ts +25 -0
  221. package/client/lib/decorators/classes/controller-decorator.d.ts +13 -0
  222. package/client/lib/decorators/classes/entity-decorator.d.ts +17 -0
  223. package/client/lib/decorators/classes/provider-decorator.d.ts +5 -0
  224. package/client/lib/decorators/classes/repository-decorator.d.ts +5 -0
  225. package/client/lib/decorators/classes/subscriber-decorator.d.ts +6 -0
  226. package/client/lib/decorators/http/http-decorators.d.ts +18 -0
  227. package/client/lib/decorators/http/http-methods-decorators.d.ts +15 -0
  228. package/client/lib/decorators/http/http-params-decorators.d.ts +6 -0
  229. package/client/lib/dependency-injection/di-container.d.ts +6 -0
  230. package/client/lib/endpoint-context.d.ts +117 -0
  231. package/client/lib/entity-process.d.ts +40 -0
  232. package/client/lib/env.d.ts +3 -0
  233. package/client/lib/get-response-value.d.ts +7 -0
  234. package/client/lib/helpers/class-helpers.d.ts +19 -0
  235. package/client/lib/helpers/taon-helpers.d.ts +17 -0
  236. package/client/lib/index.d.ts +113 -0
  237. package/client/lib/inject.d.ts +9 -0
  238. package/client/lib/models.d.ts +175 -0
  239. package/client/lib/orm.d.ts +3 -0
  240. package/client/lib/realtime/realtime-client.d.ts +32 -0
  241. package/client/lib/realtime/realtime-core.d.ts +41 -0
  242. package/client/lib/realtime/realtime-server.d.ts +14 -0
  243. package/client/lib/realtime/realtime-strategy/index.d.ts +5 -0
  244. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +22 -0
  245. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +17 -0
  246. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +11 -0
  247. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +11 -0
  248. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +14 -0
  249. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +23 -0
  250. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +3 -0
  251. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +17 -0
  252. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +18 -0
  253. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +12 -0
  254. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +14 -0
  255. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +12 -0
  256. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +15 -0
  257. package/client/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +17 -0
  258. package/client/lib/realtime/realtime-strategy/realtime-strategy.d.ts +13 -0
  259. package/client/lib/realtime/realtime-subs-manager.d.ts +15 -0
  260. package/client/lib/realtime/realtime.models.d.ts +14 -0
  261. package/client/lib/storage.d.ts +2 -0
  262. package/client/lib/symbols.d.ts +73 -0
  263. package/client/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +6 -0
  264. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +18 -0
  265. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +51 -0
  266. package/client/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +25 -0
  267. package/client/lib/validators.d.ts +8 -0
  268. package/client/public-api.d.ts +2 -0
  269. package/index.d.ts +1 -0
  270. package/index.js +5 -1
  271. package/index.js.map +1 -0
  272. package/lib/base-classes/base-abstract-entity.d.ts +6 -0
  273. package/lib/base-classes/base-abstract-entity.js +40 -0
  274. package/lib/base-classes/base-abstract-entity.js.map +1 -0
  275. package/lib/base-classes/base-class.d.ts +8 -0
  276. package/lib/base-classes/base-class.js +35 -0
  277. package/lib/base-classes/base-class.js.map +1 -0
  278. package/lib/base-classes/base-context.d.ts +16 -0
  279. package/lib/base-classes/base-context.js +15 -0
  280. package/lib/base-classes/base-context.js.map +1 -0
  281. package/lib/base-classes/base-controller.d.ts +7 -0
  282. package/lib/base-classes/base-controller.js +24 -0
  283. package/lib/base-classes/base-controller.js.map +1 -0
  284. package/lib/base-classes/base-crud-controller.d.ts +27 -0
  285. package/lib/base-classes/base-crud-controller.js +385 -0
  286. package/lib/base-classes/base-crud-controller.js.map +1 -0
  287. package/lib/base-classes/base-entity.d.ts +7 -0
  288. package/lib/base-classes/base-entity.js +25 -0
  289. package/lib/base-classes/base-entity.js.map +1 -0
  290. package/lib/base-classes/base-injector.d.ts +59 -0
  291. package/lib/base-classes/base-injector.js +220 -0
  292. package/lib/base-classes/base-injector.js.map +1 -0
  293. package/lib/base-classes/base-provider.d.ts +3 -0
  294. package/lib/base-classes/base-provider.js +14 -0
  295. package/lib/base-classes/base-provider.js.map +1 -0
  296. package/lib/base-classes/base-repository.d.ts +254 -0
  297. package/lib/base-classes/base-repository.js +780 -0
  298. package/lib/base-classes/base-repository.js.map +1 -0
  299. package/lib/base-classes/base-subscriber-for-entity.d.ts +81 -0
  300. package/lib/base-classes/base-subscriber-for-entity.js +136 -0
  301. package/lib/base-classes/base-subscriber-for-entity.js.map +1 -0
  302. package/lib/base-classes/base-subscriber.d.ts +4 -0
  303. package/lib/base-classes/base-subscriber.js +25 -0
  304. package/lib/base-classes/base-subscriber.js.map +1 -0
  305. package/lib/base-classes/base.d.ts +35 -0
  306. package/lib/base-classes/base.js +27 -0
  307. package/lib/base-classes/base.js.map +1 -0
  308. package/lib/build-info._auto-generated_.d.ts +1 -0
  309. package/lib/build-info._auto-generated_.js +5 -0
  310. package/lib/build-info._auto-generated_.js.map +1 -0
  311. package/lib/constants.d.ts +1 -0
  312. package/lib/constants.js +3 -0
  313. package/lib/constants.js.map +1 -0
  314. package/lib/create-context.d.ts +24 -0
  315. package/lib/create-context.js +183 -0
  316. package/lib/create-context.js.map +1 -0
  317. package/lib/decorators/classes/controller-decorator.d.ts +12 -0
  318. package/lib/decorators/classes/controller-decorator.js +24 -0
  319. package/lib/decorators/classes/controller-decorator.js.map +1 -0
  320. package/lib/decorators/classes/entity-decorator.d.ts +16 -0
  321. package/lib/decorators/classes/entity-decorator.js +39 -0
  322. package/lib/decorators/classes/entity-decorator.js.map +1 -0
  323. package/lib/decorators/classes/provider-decorator.d.ts +4 -0
  324. package/lib/decorators/classes/provider-decorator.js +24 -0
  325. package/lib/decorators/classes/provider-decorator.js.map +1 -0
  326. package/lib/decorators/classes/repository-decorator.d.ts +4 -0
  327. package/lib/decorators/classes/repository-decorator.js +24 -0
  328. package/lib/decorators/classes/repository-decorator.js.map +1 -0
  329. package/lib/decorators/classes/subscriber-decorator.d.ts +5 -0
  330. package/lib/decorators/classes/subscriber-decorator.js +75 -0
  331. package/lib/decorators/classes/subscriber-decorator.js.map +1 -0
  332. package/lib/decorators/http/http-decorators.d.ts +17 -0
  333. package/lib/decorators/http/http-decorators.js +23 -0
  334. package/lib/decorators/http/http-decorators.js.map +1 -0
  335. package/lib/decorators/http/http-methods-decorators.d.ts +14 -0
  336. package/lib/decorators/http/http-methods-decorators.js +91 -0
  337. package/lib/decorators/http/http-methods-decorators.js.map +1 -0
  338. package/lib/decorators/http/http-params-decorators.d.ts +5 -0
  339. package/lib/decorators/http/http-params-decorators.js +55 -0
  340. package/lib/decorators/http/http-params-decorators.js.map +1 -0
  341. package/lib/dependency-injection/di-container.d.ts +5 -0
  342. package/lib/dependency-injection/di-container.js +40 -0
  343. package/lib/dependency-injection/di-container.js.map +1 -0
  344. package/lib/endpoint-context.d.ts +117 -0
  345. package/lib/endpoint-context.js +2128 -0
  346. package/lib/endpoint-context.js.map +1 -0
  347. package/lib/entity-process.d.ts +39 -0
  348. package/lib/entity-process.js +261 -0
  349. package/lib/entity-process.js.map +1 -0
  350. package/lib/env.d.ts +2 -0
  351. package/lib/env.js +7 -0
  352. package/lib/env.js.map +1 -0
  353. package/lib/formly/formly-group-wrapper-component.d.ts +5 -0
  354. package/lib/formly/formly-group-wrapper-component.js +28 -0
  355. package/lib/formly/formly-group-wrapper-component.js.map +1 -0
  356. package/lib/formly/formly-repeat-component.d.ts +5 -0
  357. package/lib/formly/formly-repeat-component.js +47 -0
  358. package/lib/formly/formly-repeat-component.js.map +1 -0
  359. package/lib/formly/formly.models.d.ts +1 -0
  360. package/lib/formly/formly.models.js +3 -0
  361. package/lib/formly/formly.models.js.map +1 -0
  362. package/lib/formly/fromly.d.ts +16 -0
  363. package/lib/formly/fromly.js +213 -0
  364. package/lib/formly/fromly.js.map +1 -0
  365. package/lib/formly/type-from-entity.d.ts +20 -0
  366. package/lib/formly/type-from-entity.js +65 -0
  367. package/lib/formly/type-from-entity.js.map +1 -0
  368. package/lib/get-response-value.d.ts +6 -0
  369. package/lib/get-response-value.js +65 -0
  370. package/lib/get-response-value.js.map +1 -0
  371. package/lib/helpers/class-helpers.d.ts +18 -0
  372. package/lib/helpers/class-helpers.js +227 -0
  373. package/lib/helpers/class-helpers.js.map +1 -0
  374. package/lib/helpers/taon-helpers.d.ts +16 -0
  375. package/lib/helpers/taon-helpers.js +144 -0
  376. package/lib/helpers/taon-helpers.js.map +1 -0
  377. package/lib/index.d.ts +112 -0
  378. package/lib/index.js +113 -0
  379. package/lib/index.js.map +1 -0
  380. package/lib/inject.d.ts +8 -0
  381. package/lib/inject.js +84 -0
  382. package/lib/inject.js.map +1 -0
  383. package/lib/models.d.ts +180 -0
  384. package/lib/models.js +107 -0
  385. package/lib/models.js.map +1 -0
  386. package/lib/orm.d.ts +51 -0
  387. package/lib/orm.js +79 -0
  388. package/lib/orm.js.map +1 -0
  389. package/lib/realtime/realtime-client.d.ts +31 -0
  390. package/lib/realtime/realtime-client.js +158 -0
  391. package/lib/realtime/realtime-client.js.map +1 -0
  392. package/lib/realtime/realtime-core.d.ts +40 -0
  393. package/lib/realtime/realtime-core.js +72 -0
  394. package/lib/realtime/realtime-core.js.map +1 -0
  395. package/lib/realtime/realtime-server.d.ts +13 -0
  396. package/lib/realtime/realtime-server.js +193 -0
  397. package/lib/realtime/realtime-server.js.map +1 -0
  398. package/lib/realtime/realtime-strategy/index.d.ts +4 -0
  399. package/lib/realtime/realtime-strategy/index.js +8 -0
  400. package/lib/realtime/realtime-strategy/index.js.map +1 -0
  401. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.d.ts +0 -0
  402. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.js +5 -0
  403. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.js.map +1 -0
  404. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +22 -0
  405. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.js +139 -0
  406. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.js.map +1 -0
  407. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +16 -0
  408. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.js +68 -0
  409. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.js.map +1 -0
  410. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +10 -0
  411. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.js +56 -0
  412. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.js.map +1 -0
  413. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +10 -0
  414. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.js +50 -0
  415. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.js.map +1 -0
  416. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +13 -0
  417. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.js +3 -0
  418. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.js.map +1 -0
  419. package/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +22 -0
  420. package/lib/realtime/realtime-strategy/realtime-strategy-ipc.js +68 -0
  421. package/lib/realtime/realtime-strategy/realtime-strategy-ipc.js.map +1 -0
  422. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +2 -0
  423. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.js +6 -0
  424. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.js.map +1 -0
  425. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +16 -0
  426. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.js +54 -0
  427. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.js.map +1 -0
  428. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +17 -0
  429. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.js +52 -0
  430. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.js.map +1 -0
  431. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +11 -0
  432. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.js +39 -0
  433. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.js.map +1 -0
  434. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +13 -0
  435. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.js +46 -0
  436. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.js.map +1 -0
  437. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +11 -0
  438. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.js +3 -0
  439. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.js.map +1 -0
  440. package/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +14 -0
  441. package/lib/realtime/realtime-strategy/realtime-strategy-mock.js +42 -0
  442. package/lib/realtime/realtime-strategy/realtime-strategy-mock.js.map +1 -0
  443. package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +17 -0
  444. package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js +48 -0
  445. package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js.map +1 -0
  446. package/lib/realtime/realtime-strategy/realtime-strategy.d.ts +12 -0
  447. package/lib/realtime/realtime-strategy/realtime-strategy.js +14 -0
  448. package/lib/realtime/realtime-strategy/realtime-strategy.js.map +1 -0
  449. package/lib/realtime/realtime-subs-manager.d.ts +14 -0
  450. package/lib/realtime/realtime-subs-manager.js +102 -0
  451. package/lib/realtime/realtime-subs-manager.js.map +1 -0
  452. package/lib/realtime/realtime.models.d.ts +13 -0
  453. package/lib/realtime/realtime.models.js +3 -0
  454. package/lib/realtime/realtime.models.js.map +1 -0
  455. package/lib/storage.d.ts +1 -0
  456. package/lib/storage.js +6 -0
  457. package/lib/storage.js.map +1 -0
  458. package/lib/symbols.d.ts +72 -0
  459. package/lib/symbols.js +91 -0
  460. package/lib/symbols.js.map +1 -0
  461. package/lib/ui/directives/firedev-inject-html.directive.d.ts +6 -0
  462. package/lib/ui/directives/firedev-long-press.directive.d.ts +22 -0
  463. package/lib/ui/directives/index.d.ts +4 -0
  464. package/lib/ui/directives/index.js +5 -0
  465. package/lib/ui/directives/index.js.map +1 -0
  466. package/lib/ui/directives/safe.pipe.d.ts +7 -0
  467. package/lib/ui/directives/view-mode.d.ts +5 -0
  468. package/lib/ui/directives/view-mode.js +10 -0
  469. package/lib/ui/directives/view-mode.js.map +1 -0
  470. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +2 -0
  471. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +5 -0
  472. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js.map +1 -0
  473. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +31 -0
  474. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +2 -0
  475. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.d.ts +1 -0
  476. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +5 -0
  477. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js.map +1 -0
  478. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +9 -0
  479. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +2 -0
  480. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +5 -0
  481. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js.map +1 -0
  482. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +14 -0
  483. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +2 -0
  484. package/lib/ui/taon-admin-mode-configuration/index.d.ts +4 -0
  485. package/lib/ui/taon-admin-mode-configuration/index.js +5 -0
  486. package/lib/ui/taon-admin-mode-configuration/index.js.map +1 -0
  487. package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +5 -0
  488. package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js +3 -0
  489. package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js.map +1 -0
  490. package/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +14 -0
  491. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +47 -0
  492. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +2 -0
  493. package/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +21 -0
  494. package/lib/ui/taon-github-fork-me-corner/index.d.ts +2 -0
  495. package/lib/ui/taon-github-fork-me-corner/index.js +5 -0
  496. package/lib/ui/taon-github-fork-me-corner/index.js.map +1 -0
  497. package/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.d.ts +3 -0
  498. package/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.d.ts +2 -0
  499. package/lib/ui/taon-github-fork-me-ribbon/index.d.ts +2 -0
  500. package/lib/ui/taon-github-fork-me-ribbon/index.js +5 -0
  501. package/lib/ui/taon-github-fork-me-ribbon/index.js.map +1 -0
  502. package/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.component.d.ts +3 -0
  503. package/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.module.d.ts +2 -0
  504. package/lib/ui/taon-notifications/index.d.ts +4 -0
  505. package/lib/ui/taon-notifications/index.js +11 -0
  506. package/lib/ui/taon-notifications/index.js.map +1 -0
  507. package/lib/ui/taon-notifications/taon-notifications.component.d.ts +9 -0
  508. package/lib/ui/taon-notifications/taon-notifications.models.d.ts +6 -0
  509. package/lib/ui/taon-notifications/taon-notifications.models.js +5 -0
  510. package/lib/ui/taon-notifications/taon-notifications.models.js.map +1 -0
  511. package/lib/ui/taon-notifications/taon-notifications.module.d.ts +2 -0
  512. package/lib/ui/taon-notifications/taon-notifications.service.d.ts +11 -0
  513. package/lib/ui/taon-progress-bar/index.d.ts +2 -0
  514. package/lib/ui/taon-progress-bar/index.js +5 -0
  515. package/lib/ui/taon-progress-bar/index.js.map +1 -0
  516. package/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +14 -0
  517. package/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +2 -0
  518. package/lib/ui/taon-session-passcode/index.d.ts +1 -0
  519. package/lib/ui/taon-session-passcode/index.js +5 -0
  520. package/lib/ui/taon-session-passcode/index.js.map +1 -0
  521. package/lib/ui/taon-session-passcode/taon-session-passcode.component.d.ts +35 -0
  522. package/lib/ui/taon.models.d.ts +11 -0
  523. package/lib/ui/taon.models.js +3 -0
  524. package/lib/ui/taon.models.js.map +1 -0
  525. package/lib/ui/toan-full-material.module.d.ts +2 -0
  526. package/lib/validators.d.ts +7 -0
  527. package/lib/validators.js +53 -0
  528. package/lib/validators.js.map +1 -0
  529. package/old-app .d.ts +0 -0
  530. package/old-app .js +115 -0
  531. package/old-app .js.map +1 -0
  532. package/package.json +74 -11
  533. package/playground.d.ts +0 -0
  534. package/playground.js +172 -0
  535. package/playground.js.map +1 -0
  536. package/src.d.ts +6 -0
  537. package/taon.jsonc +48 -0
  538. package/tmp-environment.json +393 -0
  539. package/websql/README.md +24 -0
  540. package/websql/esm2022/lib/base-classes/base-abstract-entity.mjs +25 -0
  541. package/websql/esm2022/lib/base-classes/base-class.mjs +17 -0
  542. package/websql/esm2022/lib/base-classes/base-context.mjs +14 -0
  543. package/websql/esm2022/lib/base-classes/base-controller.mjs +18 -0
  544. package/websql/esm2022/lib/base-classes/base-crud-controller.mjs +238 -0
  545. package/websql/esm2022/lib/base-classes/base-entity.mjs +16 -0
  546. package/websql/esm2022/lib/base-classes/base-injector.mjs +160 -0
  547. package/websql/esm2022/lib/base-classes/base-provider.mjs +6 -0
  548. package/websql/esm2022/lib/base-classes/base-repository.mjs +431 -0
  549. package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +137 -0
  550. package/websql/esm2022/lib/base-classes/base-subscriber.mjs +27 -0
  551. package/websql/esm2022/lib/base-classes/base.mjs +26 -0
  552. package/websql/esm2022/lib/constants.mjs +4 -0
  553. package/websql/esm2022/lib/create-context.mjs +86 -0
  554. package/websql/esm2022/lib/decorators/classes/controller-decorator.mjs +15 -0
  555. package/websql/esm2022/lib/decorators/classes/entity-decorator.mjs +25 -0
  556. package/websql/esm2022/lib/decorators/classes/provider-decorator.mjs +15 -0
  557. package/websql/esm2022/lib/decorators/classes/repository-decorator.mjs +15 -0
  558. package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +41 -0
  559. package/websql/esm2022/lib/decorators/http/http-decorators.mjs +22 -0
  560. package/websql/esm2022/lib/decorators/http/http-methods-decorators.mjs +78 -0
  561. package/websql/esm2022/lib/decorators/http/http-params-decorators.mjs +47 -0
  562. package/websql/esm2022/lib/dependency-injection/di-container.mjs +32 -0
  563. package/websql/esm2022/lib/endpoint-context.mjs +1506 -0
  564. package/websql/esm2022/lib/entity-process.mjs +207 -0
  565. package/websql/esm2022/lib/env.mjs +6 -0
  566. package/websql/esm2022/lib/get-response-value.mjs +45 -0
  567. package/websql/esm2022/lib/helpers/class-helpers.mjs +183 -0
  568. package/websql/esm2022/lib/helpers/taon-helpers.mjs +120 -0
  569. package/websql/esm2022/lib/index.mjs +81 -0
  570. package/websql/esm2022/lib/inject.mjs +70 -0
  571. package/websql/esm2022/lib/models.mjs +70 -0
  572. package/websql/esm2022/lib/orm.mjs +60 -0
  573. package/websql/esm2022/lib/realtime/realtime-client.mjs +129 -0
  574. package/websql/esm2022/lib/realtime/realtime-core.mjs +54 -0
  575. package/websql/esm2022/lib/realtime/realtime-server.mjs +158 -0
  576. package/websql/esm2022/lib/realtime/realtime-strategy/index.mjs +7 -0
  577. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +98 -0
  578. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +45 -0
  579. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +40 -0
  580. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +25 -0
  581. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +4 -0
  582. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +48 -0
  583. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +5 -0
  584. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +50 -0
  585. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +48 -0
  586. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +35 -0
  587. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +43 -0
  588. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +4 -0
  589. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +28 -0
  590. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +33 -0
  591. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +10 -0
  592. package/websql/esm2022/lib/realtime/realtime-subs-manager.mjs +79 -0
  593. package/websql/esm2022/lib/realtime/realtime.models.mjs +4 -0
  594. package/websql/esm2022/lib/storage.mjs +5 -0
  595. package/websql/esm2022/lib/symbols.mjs +89 -0
  596. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +4 -0
  597. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +32 -0
  598. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +167 -0
  599. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +64 -0
  600. package/websql/esm2022/lib/validators.mjs +76 -0
  601. package/websql/esm2022/public-api.mjs +2 -0
  602. package/websql/esm2022/taon.mjs +5 -0
  603. package/websql/fesm2022/taon.mjs +4595 -0
  604. package/websql/fesm2022/taon.mjs.map +1 -0
  605. package/websql/index.d.ts +6 -0
  606. package/websql/lib/base-classes/base-abstract-entity.d.ts +7 -0
  607. package/websql/lib/base-classes/base-class.d.ts +9 -0
  608. package/websql/lib/base-classes/base-context.d.ts +17 -0
  609. package/websql/lib/base-classes/base-controller.d.ts +8 -0
  610. package/websql/lib/base-classes/base-crud-controller.d.ts +28 -0
  611. package/websql/lib/base-classes/base-entity.d.ts +8 -0
  612. package/websql/lib/base-classes/base-injector.d.ts +60 -0
  613. package/websql/lib/base-classes/base-provider.d.ts +4 -0
  614. package/websql/lib/base-classes/base-repository.d.ts +255 -0
  615. package/websql/lib/base-classes/base-subscriber-for-entity.d.ts +82 -0
  616. package/websql/lib/base-classes/base-subscriber.d.ts +5 -0
  617. package/websql/lib/base-classes/base.d.ts +36 -0
  618. package/websql/lib/constants.d.ts +2 -0
  619. package/websql/lib/create-context.d.ts +25 -0
  620. package/websql/lib/decorators/classes/controller-decorator.d.ts +13 -0
  621. package/websql/lib/decorators/classes/entity-decorator.d.ts +17 -0
  622. package/websql/lib/decorators/classes/provider-decorator.d.ts +5 -0
  623. package/websql/lib/decorators/classes/repository-decorator.d.ts +5 -0
  624. package/websql/lib/decorators/classes/subscriber-decorator.d.ts +6 -0
  625. package/websql/lib/decorators/http/http-decorators.d.ts +18 -0
  626. package/websql/lib/decorators/http/http-methods-decorators.d.ts +15 -0
  627. package/websql/lib/decorators/http/http-params-decorators.d.ts +6 -0
  628. package/websql/lib/dependency-injection/di-container.d.ts +6 -0
  629. package/websql/lib/endpoint-context.d.ts +117 -0
  630. package/websql/lib/entity-process.d.ts +40 -0
  631. package/websql/lib/env.d.ts +3 -0
  632. package/websql/lib/get-response-value.d.ts +7 -0
  633. package/websql/lib/helpers/class-helpers.d.ts +19 -0
  634. package/websql/lib/helpers/taon-helpers.d.ts +17 -0
  635. package/websql/lib/index.d.ts +113 -0
  636. package/websql/lib/inject.d.ts +9 -0
  637. package/websql/lib/models.d.ts +181 -0
  638. package/websql/lib/orm.d.ts +52 -0
  639. package/websql/lib/realtime/realtime-client.d.ts +32 -0
  640. package/websql/lib/realtime/realtime-core.d.ts +41 -0
  641. package/websql/lib/realtime/realtime-server.d.ts +14 -0
  642. package/websql/lib/realtime/realtime-strategy/index.d.ts +5 -0
  643. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +22 -0
  644. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +17 -0
  645. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +11 -0
  646. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +11 -0
  647. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +14 -0
  648. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +23 -0
  649. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +3 -0
  650. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +17 -0
  651. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +18 -0
  652. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +12 -0
  653. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +14 -0
  654. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +12 -0
  655. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +15 -0
  656. package/websql/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +17 -0
  657. package/websql/lib/realtime/realtime-strategy/realtime-strategy.d.ts +13 -0
  658. package/websql/lib/realtime/realtime-subs-manager.d.ts +15 -0
  659. package/websql/lib/realtime/realtime.models.d.ts +14 -0
  660. package/websql/lib/storage.d.ts +2 -0
  661. package/websql/lib/symbols.d.ts +73 -0
  662. package/websql/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +6 -0
  663. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +18 -0
  664. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +51 -0
  665. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +25 -0
  666. package/websql/lib/validators.d.ts +8 -0
  667. package/websql/package.json +25 -0
  668. package/websql/public-api.d.ts +2 -0
@@ -0,0 +1,207 @@
1
+ import { _ } from 'tnp-core/websql';
2
+ import { Symbols } from './symbols';
3
+ import { walk } from 'lodash-walk-object/websql';
4
+ import { config } from 'tnp-config/websql';
5
+ import { JSON10 } from 'json10/websql';
6
+ import { ClassHelpers } from './helpers/class-helpers';
7
+ import { Mapping } from 'ng2-rest/websql';
8
+ /**
9
+ * @deprecated
10
+ */
11
+ export const getTransformFunction = (target) => {
12
+ if (!target) {
13
+ return;
14
+ }
15
+ if (!target) {
16
+ return void 0;
17
+ }
18
+ const configs = ClassHelpers.getControllerConfigs(target);
19
+ const functions = configs
20
+ .map(c => {
21
+ if (_.isFunction(c.browserTransformFn)) {
22
+ return c.browserTransformFn;
23
+ }
24
+ })
25
+ .filter(f => _.isFunction(f));
26
+ return functions.length === 0
27
+ ? void 0
28
+ : function (entity) {
29
+ for (let index = functions.length - 1; index >= 0; index--) {
30
+ const transformFun = functions[index];
31
+ transformFun(entity);
32
+ }
33
+ return entity;
34
+ };
35
+ };
36
+ /**
37
+ * @deprecated
38
+ */
39
+ export const singleTransform = (json) => {
40
+ let ptarget = ClassHelpers.getClassFnFromObject(json);
41
+ let pbrowserTransformFn = getTransformFunction(ptarget);
42
+ if (pbrowserTransformFn) {
43
+ const newValue = pbrowserTransformFn(json);
44
+ if (!_.isObject(newValue)) {
45
+ console.error(`Please return object in transform function for class: ` +
46
+ `${ClassHelpers.getName(json)}`);
47
+ }
48
+ else {
49
+ json = newValue;
50
+ }
51
+ }
52
+ return json;
53
+ };
54
+ export class EntityProcess {
55
+ static async init(result, response) {
56
+ return await new EntityProcess(result, response).run();
57
+ }
58
+ constructor(
59
+ /**
60
+ * Data from backend
61
+ */
62
+ result, response) {
63
+ this.result = result;
64
+ this.response = response;
65
+ /**
66
+ * Say yes to:
67
+ * - circural object
68
+ * - transform browser fn in decorator
69
+ */
70
+ this.advancedManipulation = false;
71
+ this.circural = [];
72
+ }
73
+ checkAdvancedManiupulation() {
74
+ if (_.isFunction(this.result)) {
75
+ this.advancedManipulation = true;
76
+ this.result = this.result();
77
+ }
78
+ }
79
+ async run() {
80
+ this.checkAdvancedManiupulation();
81
+ this.data = this.result;
82
+ if (_.isObject(this.result)) {
83
+ if (this.advancedManipulation) {
84
+ this.applayTransformFn();
85
+ }
86
+ this.setHeaders();
87
+ }
88
+ this.send();
89
+ }
90
+ applayTransformFn() {
91
+ if (_.isObject(this.data) && !_.isArray(this.data)) {
92
+ this.data = singleTransform(this.data);
93
+ }
94
+ const { include } = { include: [] };
95
+ walk.Object(this.data, (value, lodashPath, changeValue, { skipObject, isCircural }) => {
96
+ if (!isCircural) {
97
+ if (!_.isArray(value) && _.isObject(value)) {
98
+ changeValue(singleTransform(value));
99
+ }
100
+ }
101
+ }, { checkCircural: true, breadthWalk: true, include });
102
+ const { circs } = walk.Object(this.data, void 0, {
103
+ checkCircural: true,
104
+ breadthWalk: true,
105
+ include,
106
+ });
107
+ this.circural = circs;
108
+ }
109
+ setHeaders() {
110
+ const { include } = { include: [] };
111
+ const className = ClassHelpers.getName(this.data);
112
+ const doNothing = _.isNil(this.data) ||
113
+ [
114
+ 'Object',
115
+ '',
116
+ ].includes(className);
117
+ if (!doNothing) {
118
+ const cleaned = JSON10.cleaned(this.data, void 0, {
119
+ breadthWalk: true,
120
+ include,
121
+ });
122
+ this.entityMapping = Mapping.decode(cleaned, !this.advancedManipulation);
123
+ this.response.set(Symbols.old.MAPPING_CONFIG_HEADER, JSON.stringify(this.entityMapping));
124
+ if (this.advancedManipulation) {
125
+ this.response.set(Symbols.old.CIRCURAL_OBJECTS_MAP_BODY, JSON.stringify(this.circural));
126
+ }
127
+ }
128
+ }
129
+ send() {
130
+ if (!_.isObject(this.data)) {
131
+ if (_.isNumber(this.data)) {
132
+ this.response.send(this.data.toString());
133
+ }
134
+ else {
135
+ this.response.send(this.data);
136
+ }
137
+ return;
138
+ }
139
+ if (this.advancedManipulation) {
140
+ const browserKey = config.folder.browser;
141
+ let toSend = _.isArray(this.data) ? [] : {};
142
+ const { include = [], exclude = [] } = { include: [], exclude: [] };
143
+ walk.Object(this.data, (value, lodashPath, changeVAlue, { isCircural, skipObject }) => {
144
+ if (isCircural) {
145
+ _.set(toSend, lodashPath, null);
146
+ }
147
+ else {
148
+ const fun = getTransformFunction(ClassHelpers.getClassFnFromObject(value));
149
+ if (_.isFunction(fun)) {
150
+ _.set(toSend, `${lodashPath}.${browserKey}`, value[browserKey]);
151
+ const indexProp = ClassHelpers.getUniquKey(value);
152
+ _.set(toSend, `${lodashPath}.${indexProp}`, value[indexProp]);
153
+ }
154
+ else {
155
+ _.set(toSend, lodashPath, value);
156
+ }
157
+ }
158
+ }, { checkCircural: true, breadthWalk: true, include });
159
+ if (!_.isArray(this.data)) {
160
+ let funParent = getTransformFunction(ClassHelpers.getClassFnFromObject(this.data));
161
+ if (_.isFunction(funParent)) {
162
+ toSend = {
163
+ [browserKey]: toSend[browserKey],
164
+ };
165
+ }
166
+ Object.keys(this.data).forEach(prop => {
167
+ if (prop !== browserKey) {
168
+ const v = this.data[prop];
169
+ if (!((include.length > 0 && !include.includes(prop)) ||
170
+ (exclude.length > 0 && exclude.includes(prop)))) {
171
+ if (ClassHelpers.isContextClassObject(v) &&
172
+ _.isFunction(getTransformFunction(ClassHelpers.getClassFnFromObject(v)))) {
173
+ toSend[prop] = {
174
+ [browserKey]: v[browserKey],
175
+ };
176
+ const indexProp = ClassHelpers.getUniquKey(v);
177
+ toSend[prop][indexProp] = this.data[prop][indexProp];
178
+ for (const key in v) {
179
+ if (_.isObject(v) &&
180
+ v.hasOwnProperty(key) &&
181
+ ![indexProp, config.folder.browser].includes(key) &&
182
+ (_.isString(v[key]) ||
183
+ _.isNumber(v[key]) ||
184
+ _.isDate(v[key]) ||
185
+ _.isNull(v[key]) ||
186
+ _.isBoolean(v[key]))) {
187
+ toSend[prop][key] = v[key];
188
+ }
189
+ }
190
+ }
191
+ else {
192
+ toSend[prop] = v;
193
+ }
194
+ }
195
+ }
196
+ });
197
+ }
198
+ this.response.json(toSend);
199
+ }
200
+ else {
201
+ this.response.json(this.data);
202
+ }
203
+ }
204
+ }
205
+ ;
206
+ ({}); // @--end-of-file-for-module=taon lib/entity-process.ts
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvZW50aXR5LXByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLMUM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQWdCLEVBQUUsRUFBRTtJQUN2RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPO0lBQ1QsQ0FBQztJQUtELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUxRCxNQUFNLFNBQVMsR0FBRyxPQUFPO1NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNQLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDLENBQUM7U0FDRCxNQUFNLENB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LE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0NBQzdCLENBQUM7Z0NBQ0gsQ0FBQzs0QkFDSCxDQUFDO2lDQUFNLENBQUM7Z0NBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDbkIsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBR0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FFRjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBTeW1ib2xzIH0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCB7IHdhbGsgfSBmcm9tICdsb2Rhc2gtd2Fsay1vYmplY3Qvd2Vic3FsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ3RucC1jb25maWcvd2Vic3FsJztcbmltcG9ydCB7IEpTT04xMCB9IGZyb20gJ2pzb24xMC93ZWJzcWwnO1xuaW1wb3J0IHsgQ2xhc3NIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzL2NsYXNzLWhlbHBlcnMnO1xuaW1wb3J0IHsgTWFwcGluZyB9IGZyb20gJ25nMi1yZXN0L3dlYnNxbCc7XG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuXG5cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0VHJhbnNmb3JtRnVuY3Rpb24gPSAodGFyZ2V0OiBGdW5jdGlvbikgPT4ge1xuICBpZiAoIXRhcmdldCkge1xuICAgIHJldHVybjtcbiAgfVxuXG5cblxuXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICBjb25zdCBjb25maWdzID0gQ2xhc3NIZWxwZXJzLmdldENvbnRyb2xsZXJDb25maWdzKHRhcmdldCk7XG5cbiAgY29uc3QgZnVuY3Rpb25zID0gY29uZmlnc1xuICAgIC5tYXAoYyA9PiB7XG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKGMuYnJvd3NlclRyYW5zZm9ybUZuKSkge1xuICAgICAgICByZXR1cm4gYy5icm93c2VyVHJhbnNmb3JtRm47XG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKGYgPT4gXy5pc0Z1bmN0aW9uKGYpKTtcbiAgcmV0dXJuIGZ1bmN0aW9ucy5sZW5ndGggPT09IDBcbiAgICA/IHZvaWQgMFxuICAgIDogZnVuY3Rpb24gKGVudGl0eSkge1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IGZ1bmN0aW9ucy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtRnVuID0gZnVuY3Rpb25zW2luZGV4XTtcbiAgICAgICAgICB0cmFuc2Zvcm1GdW4oZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50aXR5O1xuICAgICAgfTtcbn07XG5cblxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBzaW5nbGVUcmFuc2Zvcm0gPSAoanNvbjogYW55KSA9PiB7XG4gIGxldCBwdGFyZ2V0ID0gQ2xhc3NIZWxwZXJzLmdldENsYXNzRm5Gcm9tT2JqZWN0KGpzb24pO1xuICBsZXQgcGJyb3dzZXJUcmFuc2Zvcm1GbiA9IGdldFRyYW5zZm9ybUZ1bmN0aW9uKHB0YXJnZXQpO1xuICBpZiAocGJyb3dzZXJUcmFuc2Zvcm1Gbikge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gcGJyb3dzZXJUcmFuc2Zvcm1Gbihqc29uKTtcbiAgICBpZiAoIV8uaXNPYmplY3QobmV3VmFsdWUpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgUGxlYXNlIHJldHVybiBvYmplY3QgaW4gdHJhbnNmb3JtIGZ1bmN0aW9uIGZvciBjbGFzczogYCArXG4gICAgICAgICAgYCR7Q2xhc3NIZWxwZXJzLmdldE5hbWUoanNvbil9YCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGpzb24gPSBuZXdWYWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGpzb247XG59O1xuXG5cbmV4cG9ydCBjbGFzcyBFbnRpdHlQcm9jZXNzIHtcblxuICBzdGF0aWMgYXN5bmMgaW5pdChyZXN1bHQ6IGFueSwgcmVzcG9uc2U6IFJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBFbnRpdHlQcm9jZXNzKHJlc3VsdCwgcmVzcG9uc2UpLnJ1bigpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBEYXRhIHRvIHNlbmRcbiAgICovXG4gIGRhdGE6IGFueTtcblxuICAvKipcbiAgICogU2F5IHllcyB0bzpcbiAgICogLSBjaXJjdXJhbCBvYmplY3RcbiAgICogLSB0cmFuc2Zvcm0gYnJvd3NlciBmbiBpbiBkZWNvcmF0b3JcbiAgICovXG4gIHByaXZhdGUgYWR2YW5jZWRNYW5pcHVsYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBlbnRpdHlNYXBwaW5nOiBhbnk7XG4gIHByaXZhdGUgY2lyY3VyYWwgPSBbXTtcblxuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogRGF0YSBmcm9tIGJhY2tlbmRcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc3VsdDogYW55LFxuICAgIHByaXZhdGUgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICApIHt9XG5cblxuXG4gIHByaXZhdGUgY2hlY2tBZHZhbmNlZE1hbml1cHVsYXRpb24oKSB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLnJlc3VsdCkpIHtcbiAgICAgIHRoaXMuYWR2YW5jZWRNYW5pcHVsYXRpb24gPSB0cnVlO1xuICAgICAgdGhpcy5yZXN1bHQgPSB0aGlzLnJlc3VsdCgpO1xuICAgIH1cbiAgfVxuXG5cblxuICBwdWJsaWMgYXN5bmMgcnVuKCkge1xuICAgIHRoaXMuY2hlY2tBZHZhbmNlZE1hbml1cHVsYXRpb24oKTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLnJlc3VsdDtcblxuICAgIGlmIChfLmlzT2JqZWN0KHRoaXMucmVzdWx0KSkge1xuICAgICAgaWYgKHRoaXMuYWR2YW5jZWRNYW5pcHVsYXRpb24pIHtcbiAgICAgICAgdGhpcy5hcHBsYXlUcmFuc2Zvcm1GbigpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldEhlYWRlcnMoKTtcbiAgICB9XG4gICAgdGhpcy5zZW5kKCk7XG4gIH1cblxuXG5cbiAgYXBwbGF5VHJhbnNmb3JtRm4oKSB7XG4gICAgaWYgKF8uaXNPYmplY3QodGhpcy5kYXRhKSAmJiAhXy5pc0FycmF5KHRoaXMuZGF0YSkpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHNpbmdsZVRyYW5zZm9ybSh0aGlzLmRhdGEpO1xuICAgIH1cbiAgICBjb25zdCB7IGluY2x1ZGUgfSA9IHsgaW5jbHVkZTogW10gfTtcbiAgICB3YWxrLk9iamVjdChcbiAgICAgIHRoaXMuZGF0YSxcbiAgICAgICh2YWx1ZSwgbG9kYXNoUGF0aCwgY2hhbmdlVmFsdWUsIHsgc2tpcE9iamVjdCwgaXNDaXJjdXJhbCB9KSA9PiB7XG5cbiAgICAgICAgaWYgKCFpc0NpcmN1cmFsKSB7XG4gICAgICAgICAgaWYgKCFfLmlzQXJyYXkodmFsdWUpICYmIF8uaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICBjaGFuZ2VWYWx1ZShzaW5nbGVUcmFuc2Zvcm0odmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGNoZWNrQ2lyY3VyYWw6IHRydWUsIGJyZWFkdGhXYWxrOiB0cnVlLCBpbmNsdWRlIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IHsgY2lyY3MgfSA9IHdhbGsuT2JqZWN0KHRoaXMuZGF0YSwgdm9pZCAwLCB7XG4gICAgICBjaGVja0NpcmN1cmFsOiB0cnVlLFxuICAgICAgYnJlYWR0aFdhbGs6IHRydWUsXG4gICAgICBpbmNsdWRlLFxuICAgIH0pO1xuICAgIHRoaXMuY2lyY3VyYWwgPSBjaXJjcztcbiAgfVxuXG5cblxuICBzZXRIZWFkZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgaW5jbHVkZSB9ID0geyBpbmNsdWRlOiBbXSB9O1xuXG4gICAgY29uc3QgY2xhc3NOYW1lID0gQ2xhc3NIZWxwZXJzLmdldE5hbWUodGhpcy5kYXRhKTtcbiAgICBjb25zdCBkb05vdGhpbmcgPVxuICAgICAgXy5pc05pbCh0aGlzLmRhdGEpIHx8XG4gICAgICBbXG4gICAgICAgICdPYmplY3QnLFxuICAgICAgICAnJyxcblxuICAgICAgXS5pbmNsdWRlcyhjbGFzc05hbWUpO1xuXG4gICAgaWYgKCFkb05vdGhpbmcpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWQgPSBKU09OMTAuY2xlYW5lZCh0aGlzLmRhdGEsIHZvaWQgMCwge1xuICAgICAgICBicmVhZHRoV2FsazogdHJ1ZSxcbiAgICAgICAgaW5jbHVkZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5lbnRpdHlNYXBwaW5nID0gTWFwcGluZy5kZWNvZGUoY2xlYW5lZCwgIXRoaXMuYWR2YW5jZWRNYW5pcHVsYXRpb24pO1xuXG4gICAgICB0aGlzLnJlc3BvbnNlLnNldChcbiAgICAgICAgU3ltYm9scy5vbGQuTUFQUElOR19DT05GSUdfSEVBREVSLFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmVudGl0eU1hcHBpbmcpLFxuICAgICAgKTtcbiAgICAgIGlmICh0aGlzLmFkdmFuY2VkTWFuaXB1bGF0aW9uKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2Uuc2V0KFxuICAgICAgICAgIFN5bWJvbHMub2xkLkNJUkNVUkFMX09CSkVDVFNfTUFQX0JPRFksXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5jaXJjdXJhbCksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuXG4gIHNlbmQoKSB7XG4gICAgaWYgKCFfLmlzT2JqZWN0KHRoaXMuZGF0YSkpIHtcbiAgICAgIGlmIChfLmlzTnVtYmVyKHRoaXMuZGF0YSkpIHtcbiAgICAgICAgdGhpcy5yZXNwb25zZS5zZW5kKHRoaXMuZGF0YS50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2Uuc2VuZCh0aGlzLmRhdGEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5hZHZhbmNlZE1hbmlwdWxhdGlvbikge1xuICAgICAgY29uc3QgYnJvd3NlcktleSA9IGNvbmZpZy5mb2xkZXIuYnJvd3NlcjtcbiAgICAgIGxldCB0b1NlbmQgPSBfLmlzQXJyYXkodGhpcy5kYXRhKSA/IFtdIDoge307XG5cbiAgICAgIGNvbnN0IHsgaW5jbHVkZSA9IFtdLCBleGNsdWRlID0gW10gfSA9IHsgaW5jbHVkZTogW10sIGV4Y2x1ZGU6IFtdIH07XG5cbiAgICAgIHdhbGsuT2JqZWN0KFxuICAgICAgICB0aGlzLmRhdGEsXG4gICAgICAgICh2YWx1ZSwgbG9kYXNoUGF0aCwgY2hhbmdlVkFsdWUsIHsgaXNDaXJjdXJhbCwgc2tpcE9iamVjdCB9KSA9PiB7XG5cbiAgICAgICAgICBpZiAoaXNDaXJjdXJhbCkge1xuICAgICAgICAgICAgXy5zZXQodG9TZW5kLCBsb2Rhc2hQYXRoLCBudWxsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZnVuID0gZ2V0VHJhbnNmb3JtRnVuY3Rpb24oXG4gICAgICAgICAgICAgIENsYXNzSGVscGVycy5nZXRDbGFzc0ZuRnJvbU9iamVjdCh2YWx1ZSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoXy5pc0Z1bmN0aW9uKGZ1bikpIHtcbiAgICAgICAgICAgICAgXy5zZXQodG9TZW5kLCBgJHtsb2Rhc2hQYXRofS4ke2Jyb3dzZXJLZXl9YCwgdmFsdWVbYnJvd3NlcktleV0pO1xuICAgICAgICAgICAgICBjb25zdCBpbmRleFByb3AgPSBDbGFzc0hlbHBlcnMuZ2V0VW5pcXVLZXkodmFsdWUpO1xuICAgICAgICAgICAgICBfLnNldCh0b1NlbmQsIGAke2xvZGFzaFBhdGh9LiR7aW5kZXhQcm9wfWAsIHZhbHVlW2luZGV4UHJvcF0pO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBfLnNldCh0b1NlbmQsIGxvZGFzaFBhdGgsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgY2hlY2tDaXJjdXJhbDogdHJ1ZSwgYnJlYWR0aFdhbGs6IHRydWUsIGluY2x1ZGUgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghXy5pc0FycmF5KHRoaXMuZGF0YSkpIHtcbiAgICAgICAgbGV0IGZ1blBhcmVudCA9IGdldFRyYW5zZm9ybUZ1bmN0aW9uKFxuICAgICAgICAgIENsYXNzSGVscGVycy5nZXRDbGFzc0ZuRnJvbU9iamVjdCh0aGlzLmRhdGEpLFxuICAgICAgICApO1xuXG5cblxuICAgICAgICBpZiAoXy5pc0Z1bmN0aW9uKGZ1blBhcmVudCkpIHtcbiAgICAgICAgICB0b1NlbmQgPSB7XG4gICAgICAgICAgICBbYnJvd3NlcktleV06IHRvU2VuZFticm93c2VyS2V5XSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGF0YSkuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgICBpZiAocHJvcCAhPT0gYnJvd3NlcktleSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuZGF0YVtwcm9wXTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAoaW5jbHVkZS5sZW5ndGggPiAwICYmICFpbmNsdWRlLmluY2x1ZGVzKHByb3ApKSB8fFxuICAgICAgICAgICAgICAgIChleGNsdWRlLmxlbmd0aCA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhwcm9wKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBDbGFzc0hlbHBlcnMuaXNDb250ZXh0Q2xhc3NPYmplY3QodikgJiZcbiAgICAgICAgICAgICAgICBfLmlzRnVuY3Rpb24oXG4gICAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvbihDbGFzc0hlbHBlcnMuZ2V0Q2xhc3NGbkZyb21PYmplY3QodikpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdG9TZW5kW3Byb3BdID0ge1xuICAgICAgICAgICAgICAgICAgW2Jyb3dzZXJLZXldOiB2W2Jyb3dzZXJLZXldLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhQcm9wID0gQ2xhc3NIZWxwZXJzLmdldFVuaXF1S2V5KHYpO1xuICAgICAgICAgICAgICAgIHRvU2VuZFtwcm9wXVtpbmRleFByb3BdID0gdGhpcy5kYXRhW3Byb3BdW2luZGV4UHJvcF07XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdikge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBfLmlzT2JqZWN0KHYpICYmXG4gICAgICAgICAgICAgICAgICAgIHYuaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICAhW2luZGV4UHJvcCwgY29uZmlnLmZvbGRlci5icm93c2VyXS5pbmNsdWRlcyhrZXkpICYmXG4gICAgICAgICAgICAgICAgICAgIChfLmlzU3RyaW5nKHZba2V5XSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBfLmlzTnVtYmVyKHZba2V5XSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBfLmlzRGF0ZSh2W2tleV0pIHx8XG4gICAgICAgICAgICAgICAgICAgICAgXy5pc051bGwodltrZXldKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIF8uaXNCb29sZWFuKHZba2V5XSkpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdG9TZW5kW3Byb3BdW2tleV0gPSB2W2tleV07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvU2VuZFtwcm9wXSA9IHY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG5cbiAgICAgIHRoaXMucmVzcG9uc2UuanNvbih0b1NlbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3BvbnNlLmpzb24odGhpcy5kYXRhKTtcbiAgICB9XG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvZW50aXR5LXByb2Nlc3MudHMiXX0=
@@ -0,0 +1,6 @@
1
+ import { Helpers } from 'tnp-core/websql';
2
+ const ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];
3
+ export { ENV };
4
+ ;
5
+ ({}); // @--end-of-file-for-module=taon lib/env.ts
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBRWQsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5cbmNvbnN0IEVOViA9IEhlbHBlcnMuaXNCcm93c2VyID8gd2luZG93WydFTlYnXSA6IGdsb2JhbFsnRU5WJ107XG5cbmV4cG9ydCB7IEVOViB9O1xuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvZW52LnRzIl19
@@ -0,0 +1,45 @@
1
+ import { Helpers } from 'tnp-core/websql';
2
+ export const getResponseValue = (response, options) => {
3
+ const { req, res } = options || {};
4
+ return new Promise(async (resolve, reject) => {
5
+ const resp = response;
6
+ if (!response && response.send === undefined) {
7
+ console.error('[taon] Bad response value for function');
8
+ resolve(undefined);
9
+ }
10
+ else if (typeof response === 'function') {
11
+ const asyncResponse = response;
12
+ try {
13
+ const result = await asyncResponse(req, res);
14
+ resolve(result);
15
+ }
16
+ catch (e) {
17
+ console.error(e);
18
+ console.error('[taon] Error during function call inside controller');
19
+ Helpers.renderError(e);
20
+ reject(e);
21
+ }
22
+ }
23
+ else if (typeof response === 'object') {
24
+ try {
25
+ if (typeof response.send === 'function') {
26
+ const result = response.send(req, res);
27
+ resolve(result);
28
+ }
29
+ else {
30
+ resolve(response.send);
31
+ }
32
+ }
33
+ catch (error) {
34
+ console.error('[taon] Bad synchonus function call ');
35
+ Helpers.renderError(error);
36
+ reject(error);
37
+ }
38
+ }
39
+ else
40
+ reject(`[taon] Not recognized type of reposne ${response}`);
41
+ });
42
+ };
43
+ ;
44
+ ({}); // @--end-of-file-for-module=taon lib/get-response-value.ts
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXJlc3BvbnNlLXZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL2dldC1yZXNwb25zZS12YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsUUFBaUMsRUFDakMsT0FBdUQsRUFDM0MsRUFBRTtJQUVkLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNuQyxPQUFPLElBQUksT0FBTyxDQUFJLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFFOUMsTUFBTSxJQUFJLEdBQThCLFFBQVEsQ0FBQztRQUNqRCxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0MsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQixDQUFDO2FBQU0sSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMxQyxNQUFNLGFBQWEsR0FBaUMsUUFBZSxDQUFDO1lBQ3BFLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzdDLE9BQU8sQ0FBQyxNQUFhLENBQUMsQ0FBQztZQUN6QixDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7Z0JBQ3JFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3hDLE1BQU0sTUFBTSxHQUFJLFFBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQVEsQ0FBQztvQkFDdkQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFXLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztnQkFDckQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDOztZQUFNLE1BQU0sQ0FBQyx5Q0FBeUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUVyRSxDQUFDLENBQUMsQ0FBQztBQUVMLENBQUMsQ0FBQztBQUVELENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsMkRBQTJEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7ICAgUmVzcG9uc2UgYXMgRXhwcmVzc1Jlc3BvbnNlLCAgIFJlcXVlc3QgYXMgRXhwcmVzc1JlcXVlc3QsIH0gZnJvbSAnZXhwcmVzcyc7LyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBUYW9uSGVscGVycyB9IGZyb20gJy4vaGVscGVycy90YW9uLWhlbHBlcnMnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5cbmV4cG9ydCBjb25zdCBnZXRSZXNwb25zZVZhbHVlID0gPFQ+KFxuICByZXNwb25zZTogTW9kZWxzLkh0dHAuUmVzcG9uc2U8VD4sXG4gIG9wdGlvbnM/OiB7IHJlcTogRXhwcmVzc1JlcXVlc3Q7IHJlczogRXhwcmVzc1Jlc3BvbnNlIH0sXG4pOiBQcm9taXNlPFQ+ID0+IHtcblxuICBjb25zdCB7IHJlcSwgcmVzIH0gPSBvcHRpb25zIHx8IHt9O1xuICByZXR1cm4gbmV3IFByb21pc2U8VD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgY29uc3QgcmVzcDogTW9kZWxzLkh0dHAuX19SZXNwb25zZTxUPiA9IHJlc3BvbnNlO1xuICAgIGlmICghcmVzcG9uc2UgJiYgcmVzcG9uc2Uuc2VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbdGFvbl0gQmFkIHJlc3BvbnNlIHZhbHVlIGZvciBmdW5jdGlvbicpO1xuICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc3BvbnNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCBhc3luY1Jlc3BvbnNlOiBNb2RlbHMuSHR0cC5Bc3luY1Jlc3BvbnNlPFQ+ID0gcmVzcG9uc2UgYXMgYW55O1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXN5bmNSZXNwb25zZShyZXEsIHJlcyk7XG4gICAgICAgIHJlc29sdmUocmVzdWx0IGFzIGFueSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t0YW9uXSBFcnJvciBkdXJpbmcgZnVuY3Rpb24gY2FsbCBpbnNpZGUgY29udHJvbGxlcicpO1xuICAgICAgICBIZWxwZXJzLnJlbmRlckVycm9yKGUpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzcG9uc2UgPT09ICdvYmplY3QnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLnNlbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSAocmVzcG9uc2UgYXMgYW55KS5zZW5kKHJlcSwgcmVzKSBhcyBhbnk7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2Uuc2VuZCBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdbdGFvbl0gQmFkIHN5bmNob251cyBmdW5jdGlvbiBjYWxsICcpO1xuICAgICAgICBIZWxwZXJzLnJlbmRlckVycm9yKGVycm9yKTtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgcmVqZWN0KGBbdGFvbl0gTm90IHJlY29nbml6ZWQgdHlwZSBvZiByZXBvc25lICR7cmVzcG9uc2V9YCk7XG5cbiAgfSk7XG5cbn07XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi9nZXQtcmVzcG9uc2UtdmFsdWUudHMiXX0=
@@ -0,0 +1,183 @@
1
+ import { Symbols } from '../symbols';
2
+ import { Validators } from '../validators';
3
+ import { _ } from 'tnp-core/websql';
4
+ import { Models } from '../models';
5
+ import { TaonHelpers } from './taon-helpers';
6
+ import { CLASS } from 'typescript-class-helpers/websql';
7
+ /* */
8
+ /* */
9
+ export var ClassHelpers;
10
+ (function (ClassHelpers) {
11
+ /**
12
+ * TODO - repalce in every place when getting class fn from object
13
+ */
14
+ ClassHelpers.getClassFnFromObject = (json) => {
15
+ if (_.isUndefined(json) || _.isNull(json)) {
16
+ return;
17
+ }
18
+ if (json.constructor) {
19
+ return json.constructor;
20
+ }
21
+ const p = Object.getPrototypeOf(json);
22
+ return p && p.constructor && p.constructor.name !== 'Object'
23
+ ? p.constructor
24
+ : void 0;
25
+ };
26
+ ClassHelpers.getName = (classFnOrObject) => {
27
+ if (classFnOrObject instanceof FormData) {
28
+ return 'FormData';
29
+ }
30
+ if (!classFnOrObject) {
31
+ console.error('OBJECT OR CLASS', classFnOrObject);
32
+ throw new Error(`Cannot get name from this object or class.`);
33
+ }
34
+ return ((classFnOrObject[Symbols.classNameStaticProperty]
35
+ ? classFnOrObject[Symbols.classNameStaticProperty]
36
+ : classFnOrObject?.constructor[Symbols.classNameStaticProperty]) ||
37
+ CLASS.getName(classFnOrObject));
38
+ };
39
+ ClassHelpers.getOrginalClass = (classFnOrObject) => {
40
+ const org = classFnOrObject[Symbols.orignalClass];
41
+ if (!org) {
42
+ return classFnOrObject;
43
+ }
44
+ return ClassHelpers.getOrginalClass(org);
45
+ };
46
+ ClassHelpers.getFullInternalName = (classFnOrObject) => {
47
+ if (!classFnOrObject) {
48
+ throw new Error(`Cannot get name from: ${classFnOrObject}`);
49
+ }
50
+ return ((classFnOrObject[Symbols.fullClassNameStaticProperty]
51
+ ? classFnOrObject[Symbols.fullClassNameStaticProperty]
52
+ : classFnOrObject?.constructor[Symbols.fullClassNameStaticProperty]) ||
53
+ void 0);
54
+ };
55
+ ClassHelpers.getUniquKey = (classFnOrObject) => {
56
+ const classFn = _.isFunction(classFnOrObject)
57
+ ? classFnOrObject
58
+ : classFnOrObject.constructor;
59
+ const config = Reflect.getMetadata(Symbols.metadata.options.controller, classFn);
60
+ return config.uniqueKeyProp;
61
+ };
62
+ ClassHelpers.isContextClassObject = (obj) => {
63
+ if (!_.isObject(obj) ||
64
+ _.isArray(obj) ||
65
+ _.isRegExp(obj) ||
66
+ _.isBuffer(obj) ||
67
+ _.isArrayBuffer(obj)) {
68
+ return false;
69
+ }
70
+ if (_.isDate(obj)) {
71
+ return true;
72
+ }
73
+ const className = ClassHelpers.getName(obj);
74
+ return _.isString(className) && className !== 'Object';
75
+ };
76
+ ClassHelpers.setName = (target, className) => {
77
+ Validators.classNameVlidation(className, target);
78
+ target[Symbols.classNameStaticProperty] = className;
79
+ };
80
+ ClassHelpers.hasParentClassWithName = (target, className, targets = []) => {
81
+ if (!target) {
82
+ return false;
83
+ }
84
+ targets.push(target);
85
+ let targetProto = Object.getPrototypeOf(target);
86
+ if (_.isFunction(targetProto) &&
87
+ ClassHelpers.getName(targetProto) === className) {
88
+ return true;
89
+ }
90
+ return ClassHelpers.hasParentClassWithName(targetProto, className, targets);
91
+ };
92
+ ClassHelpers.getControllerConfig = (target) => {
93
+ const classMetadataOptions = Reflect.getMetadata(Symbols.metadata.options.controller, target);
94
+ const classMetadata = _.merge(new Models.ControllerConfig(), classMetadataOptions);
95
+ const methodNames = ClassHelpers.getMethodsNames(target); // Object.getOwnPropertyNames(target.prototype);
96
+ for (const methodName of methodNames) {
97
+ const methodMetadata = Reflect.getMetadata(Symbols.metadata.options.controllerMethod, target, methodName);
98
+ if (methodMetadata) {
99
+ classMetadata.methods[methodName] = methodMetadata;
100
+ }
101
+ }
102
+ return classMetadata;
103
+ };
104
+ const notAllowedAsMethodName = [
105
+ 'length',
106
+ 'name',
107
+ 'arguments',
108
+ 'caller',
109
+ 'constructor',
110
+ 'apply',
111
+ 'bind',
112
+ 'call',
113
+ 'toString',
114
+ '__defineGetter__',
115
+ '__defineSetter__',
116
+ 'hasOwnProperty',
117
+ '__lookupGetter__',
118
+ '__lookupSetter__',
119
+ 'isPrototypeOf',
120
+ 'propertyIsEnumerable',
121
+ 'valueOf',
122
+ '__proto__',
123
+ 'toLocaleString',
124
+ ];
125
+ ClassHelpers.getMethodsNames = (classOrClassInstance, allMethodsNames = []) => {
126
+ if (!classOrClassInstance) {
127
+ return allMethodsNames;
128
+ }
129
+ const isClassFunction = _.isFunction(classOrClassInstance);
130
+ const classFun = isClassFunction
131
+ ? classOrClassInstance
132
+ : Object.getPrototypeOf(classOrClassInstance);
133
+ const objectToCheck = isClassFunction
134
+ ? classOrClassInstance?.prototype
135
+ : classOrClassInstance;
136
+ const prototypeObj = Object.getPrototypeOf(objectToCheck || {});
137
+ const properties = _.uniq([
138
+ ...Object.getOwnPropertyNames(objectToCheck || {}),
139
+ ...Object.getOwnPropertyNames(prototypeObj || {}),
140
+ ...Object.keys(objectToCheck || {}),
141
+ ...Object.keys(prototypeObj || {}),
142
+ ]).filter(f => !!f && !notAllowedAsMethodName.includes(f));
143
+ properties
144
+ .filter(methodName => typeof objectToCheck[methodName] === 'function')
145
+ .forEach(p => allMethodsNames.push(p));
146
+ if (!classFun ||
147
+ !classFun.constructor ||
148
+ classFun?.constructor?.name === 'Object') {
149
+ return allMethodsNames;
150
+ }
151
+ return ClassHelpers.getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);
152
+ };
153
+ ClassHelpers.getControllerConfigs = (target, configs = [], callerTarget) => {
154
+ if (!_.isFunction(target)) {
155
+ throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
156
+ }
157
+ let config;
158
+ const parentClass = Object.getPrototypeOf(target);
159
+ const parentName = parentClass ? ClassHelpers.getName(parentClass) : void 0;
160
+ const isValidParent = _.isFunction(parentClass) && parentName !== '';
161
+ config = ClassHelpers.getControllerConfig(target);
162
+ configs.push(config);
163
+ return isValidParent
164
+ ? ClassHelpers.getControllerConfigs(parentClass, configs, target)
165
+ : configs;
166
+ };
167
+ ClassHelpers.getCalculatedPathFor = (target) => {
168
+ const configs = ClassHelpers.getControllerConfigs(target);
169
+ const parentscalculatedPath = _.slice(configs, 1)
170
+ .reverse()
171
+ .map(bc => {
172
+ if (TaonHelpers.isGoodPath(bc.path)) {
173
+ return bc.path;
174
+ }
175
+ return bc.className;
176
+ })
177
+ .join('/');
178
+ return `/${parentscalculatedPath}/${ClassHelpers.getName(target)}`;
179
+ };
180
+ })(ClassHelpers || (ClassHelpers = {}));
181
+ ;
182
+ ({}); // @--end-of-file-for-module=taon lib/helpers/class-helpers.ts
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi9oZWxwZXJzL2NsYXNzLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRW5DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsS0FBSztBQUNMLEtBQUs7QUFHTCxNQUFNLEtBQVcsWUFBWSxDQXdRNUI7QUF4UUQsV0FBaUIsWUFBWTtJQUUzQjs7T0FFRztJQUNVLGlDQUFvQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7UUFDbkQsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQixDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQ2Ys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QztRQUN0QixDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFYixPQUFPLElBQUkscUJBQXFCLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3JFLENBQUMsQ0FBQztBQUVKLENBQUMsRUF4UWdCLFlBQVksS0FBWixZQUFZLFFBd1E1QjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsOERBQThEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IFN5bWJvbHMgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhb25Db250cm9sbGVyT3B0aW9ucyB9IGZyb20gJy4uL2RlY29yYXRvcnMvY2xhc3Nlcy9jb250cm9sbGVyLWRlY29yYXRvcic7XG5pbXBvcnQgeyBUYW9uSGVscGVycyB9IGZyb20gJy4vdGFvbi1oZWxwZXJzJztcbmltcG9ydCB7IFRhb25FbnRpdHlPcHRpb25zIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9jbGFzc2VzL2VudGl0eS1kZWNvcmF0b3InO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvd2Vic3FsJztcbi8qICovXG4vKiAqL1xuICBcblxuZXhwb3J0IG5hbWVzcGFjZSBDbGFzc0hlbHBlcnMge1xuXG4gIC8qKlxuICAgKiBUT0RPIC0gcmVwYWxjZSBpbiBldmVyeSBwbGFjZSB3aGVuIGdldHRpbmcgY2xhc3MgZm4gZnJvbSBvYmplY3RcbiAgICovXG4gIGV4cG9ydCBjb25zdCBnZXRDbGFzc0ZuRnJvbU9iamVjdCA9IChqc29uOiBPYmplY3QpID0+IHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChqc29uKSB8fCBfLmlzTnVsbChqc29uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoanNvbi5jb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIGpzb24uY29uc3RydWN0b3I7XG4gICAgfVxuICAgIGNvbnN0IHAgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoanNvbik7XG4gICAgcmV0dXJuIHAgJiYgcC5jb25zdHJ1Y3RvciAmJiBwLmNvbnN0cnVjdG9yLm5hbWUgIT09ICdPYmplY3QnXG4gICAgICA/IHAuY29uc3RydWN0b3JcbiAgICAgIDogdm9pZCAwO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0TmFtZSA9IChjbGFzc0ZuT3JPYmplY3Q6IGFueSk6IHN0cmluZyA9PiB7XG5cbiAgICBpZiAoY2xhc3NGbk9yT2JqZWN0IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICAgIHJldHVybiAnRm9ybURhdGEnO1xuICAgIH1cbiAgICBpZiAoIWNsYXNzRm5Pck9iamVjdCkge1xuICAgICAgY29uc29sZS5lcnJvcignT0JKRUNUIE9SIENMQVNTJywgY2xhc3NGbk9yT2JqZWN0KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCBuYW1lIGZyb20gdGhpcyBvYmplY3Qgb3IgY2xhc3MuYCk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICAoY2xhc3NGbk9yT2JqZWN0W1N5bWJvbHMuY2xhc3NOYW1lU3RhdGljUHJvcGVydHldXG4gICAgICAgID8gY2xhc3NGbk9yT2JqZWN0W1N5bWJvbHMuY2xhc3NOYW1lU3RhdGljUHJvcGVydHldXG4gICAgICAgIDogY2xhc3NGbk9yT2JqZWN0Py5jb25zdHJ1Y3RvcltTeW1ib2xzLmNsYXNzTmFtZVN0YXRpY1Byb3BlcnR5XSkgfHxcbiAgICAgIENMQVNTLmdldE5hbWUoY2xhc3NGbk9yT2JqZWN0KVxuICAgICk7XG4gIH07XG5cblxuICBleHBvcnQgY29uc3QgZ2V0T3JnaW5hbENsYXNzID0gKGNsYXNzRm5Pck9iamVjdDogYW55KTogYW55ID0+IHtcbiAgICBjb25zdCBvcmcgPSBjbGFzc0ZuT3JPYmplY3RbU3ltYm9scy5vcmlnbmFsQ2xhc3NdO1xuICAgIGlmICghb3JnKSB7XG4gICAgICByZXR1cm4gY2xhc3NGbk9yT2JqZWN0O1xuICAgIH1cbiAgICByZXR1cm4gZ2V0T3JnaW5hbENsYXNzKG9yZyk7XG4gIH07XG5cblxuICBleHBvcnQgY29uc3QgZ2V0RnVsbEludGVybmFsTmFtZSA9IChjbGFzc0ZuT3JPYmplY3Q6IGFueSk6IHN0cmluZyA9PiB7XG5cblxuICAgIGlmICghY2xhc3NGbk9yT2JqZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgbmFtZSBmcm9tOiAke2NsYXNzRm5Pck9iamVjdH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIChjbGFzc0ZuT3JPYmplY3RbU3ltYm9scy5mdWxsQ2xhc3NOYW1lU3RhdGljUHJvcGVydHldXG4gICAgICAgID8gY2xhc3NGbk9yT2JqZWN0W1N5bWJvbHMuZnVsbENsYXNzTmFtZVN0YXRpY1Byb3BlcnR5XVxuICAgICAgICA6IGNsYXNzRm5Pck9iamVjdD8uY29uc3RydWN0b3JbU3ltYm9scy5mdWxsQ2xhc3NOYW1lU3RhdGljUHJvcGVydHldKSB8fFxuICAgICAgdm9pZCAwXG4gICAgKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldFVuaXF1S2V5ID0gKGNsYXNzRm5Pck9iamVjdDogYW55KTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBjbGFzc0ZuID0gXy5pc0Z1bmN0aW9uKGNsYXNzRm5Pck9iamVjdClcbiAgICAgID8gY2xhc3NGbk9yT2JqZWN0XG4gICAgICA6IGNsYXNzRm5Pck9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICBjb25zdCBjb25maWcgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgU3ltYm9scy5tZXRhZGF0YS5vcHRpb25zLmNvbnRyb2xsZXIsXG4gICAgICBjbGFzc0ZuLFxuICAgICkgYXMgVGFvbkVudGl0eU9wdGlvbnM7XG4gICAgcmV0dXJuIGNvbmZpZy51bmlxdWVLZXlQcm9wO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgaXNDb250ZXh0Q2xhc3NPYmplY3QgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgICBpZiAoXG4gICAgICAhXy5pc09iamVjdChvYmopIHx8XG4gICAgICBfLmlzQXJyYXkob2JqKSB8fFxuICAgICAgXy5pc1JlZ0V4cChvYmopIHx8XG4gICAgICBfLmlzQnVmZmVyKG9iaikgfHxcbiAgICAgIF8uaXNBcnJheUJ1ZmZlcihvYmopXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChfLmlzRGF0ZShvYmopKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgY2xhc3NOYW1lID0gZ2V0TmFtZShvYmopO1xuICAgIHJldHVybiBfLmlzU3RyaW5nKGNsYXNzTmFtZSkgJiYgY2xhc3NOYW1lICE9PSAnT2JqZWN0JztcbiAgfTtcblxuXG5cblxuICBleHBvcnQgY29uc3Qgc2V0TmFtZSA9ICh0YXJnZXQ6IEZ1bmN0aW9uLCBjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQgPT4ge1xuXG4gICAgVmFsaWRhdG9ycy5jbGFzc05hbWVWbGlkYXRpb24oY2xhc3NOYW1lLCB0YXJnZXQpO1xuICAgIHRhcmdldFtTeW1ib2xzLmNsYXNzTmFtZVN0YXRpY1Byb3BlcnR5XSA9IGNsYXNzTmFtZTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGhhc1BhcmVudENsYXNzV2l0aE5hbWUgPSAoXG4gICAgdGFyZ2V0OiBGdW5jdGlvbixcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICB0YXJnZXRzID0gW10sXG4gICk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRhcmdldHMucHVzaCh0YXJnZXQpO1xuICAgIGxldCB0YXJnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpO1xuXG4gICAgaWYgKFxuICAgICAgXy5pc0Z1bmN0aW9uKHRhcmdldFByb3RvKSAmJlxuICAgICAgQ2xhc3NIZWxwZXJzLmdldE5hbWUodGFyZ2V0UHJvdG8pID09PSBjbGFzc05hbWVcbiAgICApIHtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBoYXNQYXJlbnRDbGFzc1dpdGhOYW1lKHRhcmdldFByb3RvLCBjbGFzc05hbWUsIHRhcmdldHMpO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0Q29udHJvbGxlckNvbmZpZyA9IChcbiAgICB0YXJnZXQ6IEZ1bmN0aW9uLFxuICApOiBNb2RlbHMuQ29udHJvbGxlckNvbmZpZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgY2xhc3NNZXRhZGF0YU9wdGlvbnM6IFRhb25Db250cm9sbGVyT3B0aW9ucyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICBTeW1ib2xzLm1ldGFkYXRhLm9wdGlvbnMuY29udHJvbGxlcixcbiAgICAgIHRhcmdldCxcbiAgICApO1xuICAgIGNvbnN0IGNsYXNzTWV0YWRhdGE6IE1vZGVscy5Db250cm9sbGVyQ29uZmlnID0gXy5tZXJnZShcbiAgICAgIG5ldyBNb2RlbHMuQ29udHJvbGxlckNvbmZpZygpLFxuICAgICAgY2xhc3NNZXRhZGF0YU9wdGlvbnMsXG4gICAgKTtcblxuXG4gICAgY29uc3QgbWV0aG9kTmFtZXMgPSBDbGFzc0hlbHBlcnMuZ2V0TWV0aG9kc05hbWVzKHRhcmdldCk7IC8vICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQucHJvdG90eXBlKTtcblxuICAgIGZvciAoY29uc3QgbWV0aG9kTmFtZSBvZiBtZXRob2ROYW1lcykge1xuICAgICAgY29uc3QgbWV0aG9kTWV0YWRhdGE6IE1vZGVscy5NZXRob2RDb25maWcgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgICBTeW1ib2xzLm1ldGFkYXRhLm9wdGlvbnMuY29udHJvbGxlck1ldGhvZCxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgKTtcblxuICAgICAgaWYgKG1ldGhvZE1ldGFkYXRhKSB7XG4gICAgICAgIGNsYXNzTWV0YWRhdGEubWV0aG9kc1ttZXRob2ROYW1lXSA9IG1ldGhvZE1ldGFkYXRhO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2xhc3NNZXRhZGF0YTtcbiAgfTtcblxuXG5cblxuXG4gIGNvbnN0IG5vdEFsbG93ZWRBc01ldGhvZE5hbWUgPSBbXG4gICAgJ2xlbmd0aCcsXG4gICAgJ25hbWUnLFxuICAgICdhcmd1bWVudHMnLFxuICAgICdjYWxsZXInLFxuICAgICdjb25zdHJ1Y3RvcicsXG4gICAgJ2FwcGx5JyxcbiAgICAnYmluZCcsXG4gICAgJ2NhbGwnLFxuICAgICd0b1N0cmluZycsXG4gICAgJ19fZGVmaW5lR2V0dGVyX18nLFxuICAgICdfX2RlZmluZVNldHRlcl9fJyxcbiAgICAnaGFzT3duUHJvcGVydHknLFxuICAgICdfX2xvb2t1cEdldHRlcl9fJyxcbiAgICAnX19sb29rdXBTZXR0ZXJfXycsXG4gICAgJ2lzUHJvdG90eXBlT2YnLFxuICAgICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICAgJ3ZhbHVlT2YnLFxuICAgICdfX3Byb3RvX18nLFxuICAgICd0b0xvY2FsZVN0cmluZycsXG4gIF07XG5cblxuICBleHBvcnQgY29uc3QgZ2V0TWV0aG9kc05hbWVzID0gKFxuICAgIGNsYXNzT3JDbGFzc0luc3RhbmNlOiBhbnksXG4gICAgYWxsTWV0aG9kc05hbWVzID0gW10sXG4gICk6IHN0cmluZ1tdID0+IHtcbiAgICBpZiAoIWNsYXNzT3JDbGFzc0luc3RhbmNlKSB7XG4gICAgICByZXR1cm4gYWxsTWV0aG9kc05hbWVzO1xuICAgIH1cblxuICAgIGNvbnN0IGlzQ2xhc3NGdW5jdGlvbiA9IF8uaXNGdW5jdGlvbihjbGFzc09yQ2xhc3NJbnN0YW5jZSk7XG4gICAgY29uc3QgY2xhc3NGdW4gPSBpc0NsYXNzRnVuY3Rpb25cbiAgICAgID8gY2xhc3NPckNsYXNzSW5zdGFuY2VcbiAgICAgIDogT2JqZWN0LmdldFByb3RvdHlwZU9mKGNsYXNzT3JDbGFzc0luc3RhbmNlKTtcbiAgICBjb25zdCBvYmplY3RUb0NoZWNrID0gaXNDbGFzc0Z1bmN0aW9uXG4gICAgICA/IChjbGFzc09yQ2xhc3NJbnN0YW5jZSBhcyBGdW5jdGlvbik/LnByb3RvdHlwZVxuICAgICAgOiBjbGFzc09yQ2xhc3NJbnN0YW5jZTtcbiAgICBjb25zdCBwcm90b3R5cGVPYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0VG9DaGVjayB8fCB7fSk7XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gXy51bmlxKFtcbiAgICAgIC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdFRvQ2hlY2sgfHwge30pLFxuICAgICAgLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG90eXBlT2JqIHx8IHt9KSxcbiAgICAgIC4uLk9iamVjdC5rZXlzKG9iamVjdFRvQ2hlY2sgfHwge30pLFxuICAgICAgLi4uT2JqZWN0LmtleXMocHJvdG90eXBlT2JqIHx8IHt9KSxcbiAgICBdKS5maWx0ZXIoZiA9PiAhIWYgJiYgIW5vdEFsbG93ZWRBc01ldGhvZE5hbWUuaW5jbHVkZXMoZikpO1xuXG4gICAgcHJvcGVydGllc1xuICAgICAgLmZpbHRlcihtZXRob2ROYW1lID0+IHR5cGVvZiBvYmplY3RUb0NoZWNrW21ldGhvZE5hbWVdID09PSAnZnVuY3Rpb24nKVxuICAgICAgLmZvckVhY2gocCA9PiBhbGxNZXRob2RzTmFtZXMucHVzaChwKSk7XG5cbiAgICBpZiAoXG4gICAgICAhY2xhc3NGdW4gfHxcbiAgICAgICFjbGFzc0Z1bi5jb25zdHJ1Y3RvciB8fFxuICAgICAgY2xhc3NGdW4/LmNvbnN0cnVjdG9yPy5uYW1lID09PSAnT2JqZWN0J1xuICAgICkge1xuICAgICAgcmV0dXJuIGFsbE1ldGhvZHNOYW1lcztcbiAgICB9XG4gICAgcmV0dXJuIGdldE1ldGhvZHNOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2xhc3NGdW4pLCBhbGxNZXRob2RzTmFtZXMpO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0Q29udHJvbGxlckNvbmZpZ3MgPSAoXG4gICAgdGFyZ2V0OiBGdW5jdGlvbixcbiAgICBjb25maWdzOiBNb2RlbHMuQ29udHJvbGxlckNvbmZpZ1tdID0gW10sXG4gICAgY2FsbGVyVGFyZ2V0PzogRnVuY3Rpb24sXG4gICk6IE1vZGVscy5SdW50aW1lQ29udHJvbGxlckNvbmZpZ1tdID0+IHtcbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0YXJnZXQpKSB7XG4gICAgICB0aHJvdyBgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyXVtnZXRDbGFzc0NvbmZpZ10gQ2Fubm90IGdldCBjbGFzcyBjb25maWcgZnJvbTogJHt0YXJnZXR9YDtcbiAgICB9XG5cbiAgICBsZXQgY29uZmlnOiBNb2RlbHMuUnVudGltZUNvbnRyb2xsZXJDb25maWc7XG4gICAgY29uc3QgcGFyZW50Q2xhc3MgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KTtcbiAgICBjb25zdCBwYXJlbnROYW1lID0gcGFyZW50Q2xhc3MgPyBDbGFzc0hlbHBlcnMuZ2V0TmFtZShwYXJlbnRDbGFzcykgOiB2b2lkIDA7XG4gICAgY29uc3QgaXNWYWxpZFBhcmVudCA9IF8uaXNGdW5jdGlvbihwYXJlbnRDbGFzcykgJiYgcGFyZW50TmFtZSAhPT0gJyc7XG5cbiAgICBjb25maWcgPSBnZXRDb250cm9sbGVyQ29uZmlnKHRhcmdldCk7XG5cbiAgICBjb25maWdzLnB1c2goY29uZmlnKTtcblxuICAgIHJldHVybiBpc1ZhbGlkUGFyZW50XG4gICAgICA/IGdldENvbnRyb2xsZXJDb25maWdzKHBhcmVudENsYXNzLCBjb25maWdzLCB0YXJnZXQpXG4gICAgICA6IGNvbmZpZ3M7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBnZXRDYWxjdWxhdGVkUGF0aEZvciA9ICh0YXJnZXQ6IEZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgY29uZmlncyA9IGdldENvbnRyb2xsZXJDb25maWdzKHRhcmdldCk7XG5cbiAgICBjb25zdCBwYXJlbnRzY2FsY3VsYXRlZFBhdGggPSBfLnNsaWNlKGNvbmZpZ3MsIDEpXG4gICAgICAucmV2ZXJzZSgpXG4gICAgICAubWFwKGJjID0+IHtcbiAgICAgICAgaWYgKFRhb25IZWxwZXJzLmlzR29vZFBhdGgoYmMucGF0aCkpIHtcbiAgICAgICAgICByZXR1cm4gYmMucGF0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmMuY2xhc3NOYW1lO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gYC8ke3BhcmVudHNjYWxjdWxhdGVkUGF0aH0vJHtDbGFzc0hlbHBlcnMuZ2V0TmFtZSh0YXJnZXQpfWA7XG4gIH07XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL2hlbHBlcnMvY2xhc3MtaGVscGVycy50cyJdfQ==