@things-factory/dataset 10.1.248 → 10.1.249

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 (351) hide show
  1. package/dist-client/activities/activity-data-collect-edit.d.ts +26 -0
  2. package/dist-client/activities/activity-data-collect-edit.js +156 -0
  3. package/dist-client/activities/activity-data-collect-edit.js.map +1 -0
  4. package/dist-client/activities/activity-data-collect-view.d.ts +16 -0
  5. package/dist-client/activities/activity-data-collect-view.js +94 -0
  6. package/dist-client/activities/activity-data-collect-view.js.map +1 -0
  7. package/dist-client/activities/activity-data-review-edit.d.ts +20 -0
  8. package/dist-client/activities/activity-data-review-edit.js +300 -0
  9. package/dist-client/activities/activity-data-review-edit.js.map +1 -0
  10. package/dist-client/activities/activity-data-review-view.d.ts +16 -0
  11. package/dist-client/activities/activity-data-review-view.js +247 -0
  12. package/dist-client/activities/activity-data-review-view.js.map +1 -0
  13. package/dist-client/activities/activity-ooc-resolve-edit.d.ts +2 -0
  14. package/dist-client/activities/activity-ooc-resolve-edit.js +203 -0
  15. package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -0
  16. package/dist-client/activities/activity-ooc-resolve-view.d.ts +14 -0
  17. package/dist-client/activities/activity-ooc-resolve-view.js +154 -0
  18. package/dist-client/activities/activity-ooc-resolve-view.js.map +1 -0
  19. package/dist-client/activities/activity-ooc-review-edit.d.ts +3 -0
  20. package/dist-client/activities/activity-ooc-review-edit.js +197 -0
  21. package/dist-client/activities/activity-ooc-review-edit.js.map +1 -0
  22. package/dist-client/activities/activity-ooc-review-view.d.ts +1 -0
  23. package/dist-client/activities/activity-ooc-review-view.js +139 -0
  24. package/dist-client/activities/activity-ooc-review-view.js.map +1 -0
  25. package/dist-client/bootstrap.d.ts +10 -0
  26. package/dist-client/bootstrap.js +26 -0
  27. package/dist-client/bootstrap.js.map +1 -0
  28. package/dist-client/components/checklist-entry-form.d.ts +21 -0
  29. package/dist-client/components/checklist-entry-form.js +107 -0
  30. package/dist-client/components/checklist-entry-form.js.map +1 -0
  31. package/dist-client/components/data-entry-form.d.ts +21 -0
  32. package/dist-client/components/data-entry-form.js +107 -0
  33. package/dist-client/components/data-entry-form.js.map +1 -0
  34. package/dist-client/index.d.ts +1 -0
  35. package/dist-client/index.js +2 -0
  36. package/dist-client/index.js.map +1 -0
  37. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +55 -0
  38. package/dist-client/pages/data-archive/data-archive-list-page.js +234 -0
  39. package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -0
  40. package/dist-client/pages/data-archive/data-archive-request-popup.d.ts +1 -0
  41. package/dist-client/pages/data-archive/data-archive-request-popup.js +160 -0
  42. package/dist-client/pages/data-archive/data-archive-request-popup.js.map +1 -0
  43. package/dist-client/pages/data-entry/data-entry-list-page.d.ts +31 -0
  44. package/dist-client/pages/data-entry/data-entry-list-page.js +383 -0
  45. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -0
  46. package/dist-client/pages/data-key-set/data-key-item-list.d.ts +19 -0
  47. package/dist-client/pages/data-key-set/data-key-item-list.js +183 -0
  48. package/dist-client/pages/data-key-set/data-key-item-list.js.map +1 -0
  49. package/dist-client/pages/data-key-set/data-key-set-importer.d.ts +10 -0
  50. package/dist-client/pages/data-key-set/data-key-set-importer.js +93 -0
  51. package/dist-client/pages/data-key-set/data-key-set-importer.js.map +1 -0
  52. package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +56 -0
  53. package/dist-client/pages/data-key-set/data-key-set-list-page.js +335 -0
  54. package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -0
  55. package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +67 -0
  56. package/dist-client/pages/data-ooc/data-ooc-list-page.js +484 -0
  57. package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -0
  58. package/dist-client/pages/data-ooc/data-ooc-page.d.ts +18 -0
  59. package/dist-client/pages/data-ooc/data-ooc-page.js +166 -0
  60. package/dist-client/pages/data-ooc/data-ooc-page.js.map +1 -0
  61. package/dist-client/pages/data-ooc/data-ooc-view.d.ts +19 -0
  62. package/dist-client/pages/data-ooc/data-ooc-view.js +234 -0
  63. package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -0
  64. package/dist-client/pages/data-ooc/data-oocs-page.d.ts +18 -0
  65. package/dist-client/pages/data-ooc/data-oocs-page.js +198 -0
  66. package/dist-client/pages/data-ooc/data-oocs-page.js.map +1 -0
  67. package/dist-client/pages/data-report/data-report-embed-page.d.ts +36 -0
  68. package/dist-client/pages/data-report/data-report-embed-page.js +104 -0
  69. package/dist-client/pages/data-report/data-report-embed-page.js.map +1 -0
  70. package/dist-client/pages/data-report/data-report-list-page.d.ts +30 -0
  71. package/dist-client/pages/data-report/data-report-list-page.js +370 -0
  72. package/dist-client/pages/data-report/data-report-list-page.js.map +1 -0
  73. package/dist-client/pages/data-report/data-report-samples-page.d.ts +26 -0
  74. package/dist-client/pages/data-report/data-report-samples-page.js +151 -0
  75. package/dist-client/pages/data-report/data-report-samples-page.js.map +1 -0
  76. package/dist-client/pages/data-report/jasper-report-oocs-page.d.ts +2 -0
  77. package/dist-client/pages/data-report/jasper-report-oocs-page.js +104 -0
  78. package/dist-client/pages/data-report/jasper-report-oocs-page.js.map +1 -0
  79. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.d.ts +2 -0
  80. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js +104 -0
  81. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js.map +1 -0
  82. package/dist-client/pages/data-report/jasper-report-samples-page.d.ts +2 -0
  83. package/dist-client/pages/data-report/jasper-report-samples-page.js +104 -0
  84. package/dist-client/pages/data-report/jasper-report-samples-page.js.map +1 -0
  85. package/dist-client/pages/data-sample/data-sample-list-page.d.ts +62 -0
  86. package/dist-client/pages/data-sample/data-sample-list-page.js +372 -0
  87. package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -0
  88. package/dist-client/pages/data-sample/data-sample-page.d.ts +17 -0
  89. package/dist-client/pages/data-sample/data-sample-page.js +57 -0
  90. package/dist-client/pages/data-sample/data-sample-page.js.map +1 -0
  91. package/dist-client/pages/data-sample/data-sample-search-page.d.ts +51 -0
  92. package/dist-client/pages/data-sample/data-sample-search-page.js +364 -0
  93. package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -0
  94. package/dist-client/pages/data-sample/data-sample-view.d.ts +23 -0
  95. package/dist-client/pages/data-sample/data-sample-view.js +309 -0
  96. package/dist-client/pages/data-sample/data-sample-view.js.map +1 -0
  97. package/dist-client/pages/data-sample/data-samples-page.d.ts +21 -0
  98. package/dist-client/pages/data-sample/data-samples-page.js +247 -0
  99. package/dist-client/pages/data-sample/data-samples-page.js.map +1 -0
  100. package/dist-client/pages/data-sensor/data-sensor-list-page.d.ts +50 -0
  101. package/dist-client/pages/data-sensor/data-sensor-list-page.js +395 -0
  102. package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -0
  103. package/dist-client/pages/data-set/data-item-list.d.ts +1 -0
  104. package/dist-client/pages/data-set/data-item-list.js +321 -0
  105. package/dist-client/pages/data-set/data-item-list.js.map +1 -0
  106. package/dist-client/pages/data-set/data-set-importer.d.ts +11 -0
  107. package/dist-client/pages/data-set/data-set-importer.js +96 -0
  108. package/dist-client/pages/data-set/data-set-importer.js.map +1 -0
  109. package/dist-client/pages/data-set/data-set-list-page.d.ts +77 -0
  110. package/dist-client/pages/data-set/data-set-list-page.js +1065 -0
  111. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -0
  112. package/dist-client/pages/data-summary/data-summary-list-page.d.ts +51 -0
  113. package/dist-client/pages/data-summary/data-summary-list-page.js +308 -0
  114. package/dist-client/pages/data-summary/data-summary-list-page.js.map +1 -0
  115. package/dist-client/pages/data-summary/data-summary-period-page.d.ts +73 -0
  116. package/dist-client/pages/data-summary/data-summary-period-page.js +413 -0
  117. package/dist-client/pages/data-summary/data-summary-period-page.js.map +1 -0
  118. package/dist-client/pages/data-summary/data-summary-search-page.d.ts +70 -0
  119. package/dist-client/pages/data-summary/data-summary-search-page.js +360 -0
  120. package/dist-client/pages/data-summary/data-summary-search-page.js.map +1 -0
  121. package/dist-client/pages/data-summary/data-summary-view.d.ts +1 -0
  122. package/dist-client/pages/data-summary/data-summary-view.js +114 -0
  123. package/dist-client/pages/data-summary/data-summary-view.js.map +1 -0
  124. package/dist-client/pages/sure-to.d.ts +1 -0
  125. package/dist-client/pages/sure-to.js +10 -0
  126. package/dist-client/pages/sure-to.js.map +1 -0
  127. package/dist-client/route.d.ts +1 -0
  128. package/dist-client/route.js +71 -0
  129. package/dist-client/route.js.map +1 -0
  130. package/dist-client/tsconfig.tsbuildinfo +1 -0
  131. package/dist-server/activities/activity-data-collect.d.ts +42 -0
  132. package/dist-server/activities/activity-data-collect.js +89 -0
  133. package/dist-server/activities/activity-data-collect.js.map +1 -0
  134. package/dist-server/activities/activity-data-review.d.ts +42 -0
  135. package/dist-server/activities/activity-data-review.js +101 -0
  136. package/dist-server/activities/activity-data-review.js.map +1 -0
  137. package/dist-server/activities/activity-ooc-resolve.d.ts +42 -0
  138. package/dist-server/activities/activity-ooc-resolve.js +110 -0
  139. package/dist-server/activities/activity-ooc-resolve.js.map +1 -0
  140. package/dist-server/activities/activity-ooc-review.d.ts +42 -0
  141. package/dist-server/activities/activity-ooc-review.js +91 -0
  142. package/dist-server/activities/activity-ooc-review.js.map +1 -0
  143. package/dist-server/activities/index.d.ts +1 -0
  144. package/dist-server/activities/index.js +11 -0
  145. package/dist-server/activities/index.js.map +1 -0
  146. package/dist-server/controllers/create-data-ooc.d.ts +4 -0
  147. package/dist-server/controllers/create-data-ooc.js +73 -0
  148. package/dist-server/controllers/create-data-ooc.js.map +1 -0
  149. package/dist-server/controllers/create-data-sample.d.ts +3 -0
  150. package/dist-server/controllers/create-data-sample.js +341 -0
  151. package/dist-server/controllers/create-data-sample.js.map +1 -0
  152. package/dist-server/controllers/data-use-case.d.ts +36 -0
  153. package/dist-server/controllers/data-use-case.js +62 -0
  154. package/dist-server/controllers/data-use-case.js.map +1 -0
  155. package/dist-server/controllers/finalize-data-collection.d.ts +4 -0
  156. package/dist-server/controllers/finalize-data-collection.js +354 -0
  157. package/dist-server/controllers/finalize-data-collection.js.map +1 -0
  158. package/dist-server/controllers/index.d.ts +6 -0
  159. package/dist-server/controllers/index.js +10 -0
  160. package/dist-server/controllers/index.js.map +1 -0
  161. package/dist-server/controllers/issue-data-collection-task.d.ts +2 -0
  162. package/dist-server/controllers/issue-data-collection-task.js +64 -0
  163. package/dist-server/controllers/issue-data-collection-task.js.map +1 -0
  164. package/dist-server/controllers/issue-ooc-resolve.d.ts +3 -0
  165. package/dist-server/controllers/issue-ooc-resolve.js +55 -0
  166. package/dist-server/controllers/issue-ooc-resolve.js.map +1 -0
  167. package/dist-server/controllers/issue-ooc-review.d.ts +3 -0
  168. package/dist-server/controllers/issue-ooc-review.js +52 -0
  169. package/dist-server/controllers/issue-ooc-review.js.map +1 -0
  170. package/dist-server/controllers/jasper-report.d.ts +1 -0
  171. package/dist-server/controllers/jasper-report.js +166 -0
  172. package/dist-server/controllers/jasper-report.js.map +1 -0
  173. package/dist-server/controllers/query-data-summary-by-period.d.ts +3 -0
  174. package/dist-server/controllers/query-data-summary-by-period.js +163 -0
  175. package/dist-server/controllers/query-data-summary-by-period.js.map +1 -0
  176. package/dist-server/controllers/shiny-report.d.ts +1 -0
  177. package/dist-server/controllers/shiny-report.js +40 -0
  178. package/dist-server/controllers/shiny-report.js.map +1 -0
  179. package/dist-server/engine/index.d.ts +1 -0
  180. package/dist-server/engine/index.js +4 -0
  181. package/dist-server/engine/index.js.map +1 -0
  182. package/dist-server/engine/task/create-data-sample.d.ts +1 -0
  183. package/dist-server/engine/task/create-data-sample.js +81 -0
  184. package/dist-server/engine/task/create-data-sample.js.map +1 -0
  185. package/dist-server/engine/task/index.d.ts +2 -0
  186. package/dist-server/engine/task/index.js +5 -0
  187. package/dist-server/engine/task/index.js.map +1 -0
  188. package/dist-server/engine/task/issue-collect-data.d.ts +1 -0
  189. package/dist-server/engine/task/issue-collect-data.js +40 -0
  190. package/dist-server/engine/task/issue-collect-data.js.map +1 -0
  191. package/dist-server/index.d.ts +6 -0
  192. package/dist-server/index.js +10 -0
  193. package/dist-server/index.js.map +1 -0
  194. package/dist-server/routes.d.ts +1 -0
  195. package/dist-server/routes.js +152 -0
  196. package/dist-server/routes.js.map +1 -0
  197. package/dist-server/service/data-archive/data-archive-mutation.d.ts +16 -0
  198. package/dist-server/service/data-archive/data-archive-mutation.js +278 -0
  199. package/dist-server/service/data-archive/data-archive-mutation.js.map +1 -0
  200. package/dist-server/service/data-archive/data-archive-query.d.ts +11 -0
  201. package/dist-server/service/data-archive/data-archive-query.js +97 -0
  202. package/dist-server/service/data-archive/data-archive-query.js.map +1 -0
  203. package/dist-server/service/data-archive/data-archive-type.d.ts +23 -0
  204. package/dist-server/service/data-archive/data-archive-type.js +77 -0
  205. package/dist-server/service/data-archive/data-archive-type.js.map +1 -0
  206. package/dist-server/service/data-archive/data-archive.d.ts +19 -0
  207. package/dist-server/service/data-archive/data-archive.js +84 -0
  208. package/dist-server/service/data-archive/data-archive.js.map +1 -0
  209. package/dist-server/service/data-archive/index.d.ts +5 -0
  210. package/dist-server/service/data-archive/index.js +9 -0
  211. package/dist-server/service/data-archive/index.js.map +1 -0
  212. package/dist-server/service/data-key-set/data-key-item-type.d.ts +12 -0
  213. package/dist-server/service/data-key-set/data-key-item-type.js +52 -0
  214. package/dist-server/service/data-key-set/data-key-item-type.js.map +1 -0
  215. package/dist-server/service/data-key-set/data-key-set-mutation.d.ts +10 -0
  216. package/dist-server/service/data-key-set/data-key-set-mutation.js +203 -0
  217. package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -0
  218. package/dist-server/service/data-key-set/data-key-set-query.d.ts +12 -0
  219. package/dist-server/service/data-key-set/data-key-set-query.js +117 -0
  220. package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -0
  221. package/dist-server/service/data-key-set/data-key-set-type.d.ts +28 -0
  222. package/dist-server/service/data-key-set/data-key-set-type.js +106 -0
  223. package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -0
  224. package/dist-server/service/data-key-set/data-key-set.d.ts +22 -0
  225. package/dist-server/service/data-key-set/data-key-set.js +104 -0
  226. package/dist-server/service/data-key-set/data-key-set.js.map +1 -0
  227. package/dist-server/service/data-key-set/index.d.ts +5 -0
  228. package/dist-server/service/data-key-set/index.js +9 -0
  229. package/dist-server/service/data-key-set/index.js.map +1 -0
  230. package/dist-server/service/data-ooc/data-ooc-mutation.d.ts +6 -0
  231. package/dist-server/service/data-ooc/data-ooc-mutation.js +96 -0
  232. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -0
  233. package/dist-server/service/data-ooc/data-ooc-query.d.ts +23 -0
  234. package/dist-server/service/data-ooc/data-ooc-query.js +209 -0
  235. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -0
  236. package/dist-server/service/data-ooc/data-ooc-subscription.d.ts +12 -0
  237. package/dist-server/service/data-ooc/data-ooc-subscription.js +64 -0
  238. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -0
  239. package/dist-server/service/data-ooc/data-ooc-type.d.ts +27 -0
  240. package/dist-server/service/data-ooc/data-ooc-type.js +111 -0
  241. package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -0
  242. package/dist-server/service/data-ooc/data-ooc.d.ts +63 -0
  243. package/dist-server/service/data-ooc/data-ooc.js +310 -0
  244. package/dist-server/service/data-ooc/data-ooc.js.map +1 -0
  245. package/dist-server/service/data-ooc/index.d.ts +6 -0
  246. package/dist-server/service/data-ooc/index.js +10 -0
  247. package/dist-server/service/data-ooc/index.js.map +1 -0
  248. package/dist-server/service/data-sample/data-sample-mutation.d.ts +5 -0
  249. package/dist-server/service/data-sample/data-sample-mutation.js +30 -0
  250. package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -0
  251. package/dist-server/service/data-sample/data-sample-query.d.ts +22 -0
  252. package/dist-server/service/data-sample/data-sample-query.js +274 -0
  253. package/dist-server/service/data-sample/data-sample-query.js.map +1 -0
  254. package/dist-server/service/data-sample/data-sample-type.d.ts +18 -0
  255. package/dist-server/service/data-sample/data-sample-type.js +68 -0
  256. package/dist-server/service/data-sample/data-sample-type.js.map +1 -0
  257. package/dist-server/service/data-sample/data-sample.d.ts +45 -0
  258. package/dist-server/service/data-sample/data-sample.js +226 -0
  259. package/dist-server/service/data-sample/data-sample.js.map +1 -0
  260. package/dist-server/service/data-sample/index.d.ts +5 -0
  261. package/dist-server/service/data-sample/index.js +9 -0
  262. package/dist-server/service/data-sample/index.js.map +1 -0
  263. package/dist-server/service/data-sensor/data-sensor-mutation.d.ts +9 -0
  264. package/dist-server/service/data-sensor/data-sensor-mutation.js +137 -0
  265. package/dist-server/service/data-sensor/data-sensor-mutation.js.map +1 -0
  266. package/dist-server/service/data-sensor/data-sensor-query.d.ts +16 -0
  267. package/dist-server/service/data-sensor/data-sensor-query.js +137 -0
  268. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -0
  269. package/dist-server/service/data-sensor/data-sensor-type.d.ts +42 -0
  270. package/dist-server/service/data-sensor/data-sensor-type.js +162 -0
  271. package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -0
  272. package/dist-server/service/data-sensor/data-sensor.d.ts +33 -0
  273. package/dist-server/service/data-sensor/data-sensor.js +160 -0
  274. package/dist-server/service/data-sensor/data-sensor.js.map +1 -0
  275. package/dist-server/service/data-sensor/index.d.ts +5 -0
  276. package/dist-server/service/data-sensor/index.js +9 -0
  277. package/dist-server/service/data-sensor/index.js.map +1 -0
  278. package/dist-server/service/data-set/data-item-type.d.ts +321 -0
  279. package/dist-server/service/data-set/data-item-type.js +458 -0
  280. package/dist-server/service/data-set/data-item-type.js.map +1 -0
  281. package/dist-server/service/data-set/data-set-mutation.d.ts +20 -0
  282. package/dist-server/service/data-set/data-set-mutation.js +551 -0
  283. package/dist-server/service/data-set/data-set-mutation.js.map +1 -0
  284. package/dist-server/service/data-set/data-set-query.d.ts +39 -0
  285. package/dist-server/service/data-set/data-set-query.js +565 -0
  286. package/dist-server/service/data-set/data-set-query.js.map +1 -0
  287. package/dist-server/service/data-set/data-set-type.d.ts +75 -0
  288. package/dist-server/service/data-set/data-set-type.js +276 -0
  289. package/dist-server/service/data-set/data-set-type.js.map +1 -0
  290. package/dist-server/service/data-set/data-set.d.ts +96 -0
  291. package/dist-server/service/data-set/data-set.js +380 -0
  292. package/dist-server/service/data-set/data-set.js.map +1 -0
  293. package/dist-server/service/data-set/index.d.ts +5 -0
  294. package/dist-server/service/data-set/index.js +9 -0
  295. package/dist-server/service/data-set/index.js.map +1 -0
  296. package/dist-server/service/data-set-history/data-set-history-query.d.ts +21 -0
  297. package/dist-server/service/data-set-history/data-set-history-query.js +183 -0
  298. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -0
  299. package/dist-server/service/data-set-history/data-set-history-type.d.ts +5 -0
  300. package/dist-server/service/data-set-history/data-set-history-type.js +21 -0
  301. package/dist-server/service/data-set-history/data-set-history-type.js.map +1 -0
  302. package/dist-server/service/data-set-history/data-set-history.d.ts +53 -0
  303. package/dist-server/service/data-set-history/data-set-history.js +265 -0
  304. package/dist-server/service/data-set-history/data-set-history.js.map +1 -0
  305. package/dist-server/service/data-set-history/event-subscriber.d.ts +7 -0
  306. package/dist-server/service/data-set-history/event-subscriber.js +21 -0
  307. package/dist-server/service/data-set-history/event-subscriber.js.map +1 -0
  308. package/dist-server/service/data-set-history/index.d.ts +6 -0
  309. package/dist-server/service/data-set-history/index.js +10 -0
  310. package/dist-server/service/data-set-history/index.js.map +1 -0
  311. package/dist-server/service/data-spec/data-spec-manager.d.ts +10 -0
  312. package/dist-server/service/data-spec/data-spec-manager.js +20 -0
  313. package/dist-server/service/data-spec/data-spec-manager.js.map +1 -0
  314. package/dist-server/service/data-spec/data-spec-query.d.ts +5 -0
  315. package/dist-server/service/data-spec/data-spec-query.js +37 -0
  316. package/dist-server/service/data-spec/data-spec-query.js.map +1 -0
  317. package/dist-server/service/data-spec/data-spec.d.ts +19 -0
  318. package/dist-server/service/data-spec/data-spec.js +79 -0
  319. package/dist-server/service/data-spec/data-spec.js.map +1 -0
  320. package/dist-server/service/data-spec/index.d.ts +4 -0
  321. package/dist-server/service/data-spec/index.js +8 -0
  322. package/dist-server/service/data-spec/index.js.map +1 -0
  323. package/dist-server/service/data-summary/data-summary-mutation.d.ts +6 -0
  324. package/dist-server/service/data-summary/data-summary-mutation.js +76 -0
  325. package/dist-server/service/data-summary/data-summary-mutation.js.map +1 -0
  326. package/dist-server/service/data-summary/data-summary-query.d.ts +19 -0
  327. package/dist-server/service/data-summary/data-summary-query.js +237 -0
  328. package/dist-server/service/data-summary/data-summary-query.js.map +1 -0
  329. package/dist-server/service/data-summary/data-summary-type.d.ts +33 -0
  330. package/dist-server/service/data-summary/data-summary-type.js +139 -0
  331. package/dist-server/service/data-summary/data-summary-type.js.map +1 -0
  332. package/dist-server/service/data-summary/data-summary.d.ts +38 -0
  333. package/dist-server/service/data-summary/data-summary.js +202 -0
  334. package/dist-server/service/data-summary/data-summary.js.map +1 -0
  335. package/dist-server/service/data-summary/index.d.ts +6 -0
  336. package/dist-server/service/data-summary/index.js +10 -0
  337. package/dist-server/service/data-summary/index.js.map +1 -0
  338. package/dist-server/service/index.d.ts +14 -0
  339. package/dist-server/service/index.js +54 -0
  340. package/dist-server/service/index.js.map +1 -0
  341. package/dist-server/tsconfig.tsbuildinfo +1 -0
  342. package/dist-server/utils/config-resolver.d.ts +1 -0
  343. package/dist-server/utils/config-resolver.js +32 -0
  344. package/dist-server/utils/config-resolver.js.map +1 -0
  345. package/dist-server/utils/index.d.ts +2 -0
  346. package/dist-server/utils/index.js +6 -0
  347. package/dist-server/utils/index.js.map +1 -0
  348. package/dist-server/utils/media-validation.d.ts +51 -0
  349. package/dist-server/utils/media-validation.js +148 -0
  350. package/dist-server/utils/media-validation.js.map +1 -0
  351. package/package.json +4 -4
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ require("./routes.js");
5
+ require("./activities/index.js");
6
+ require("./engine/index.js");
7
+ tslib_1.__exportStar(require("./controllers/index.js"), exports);
8
+ tslib_1.__exportStar(require("./service/index.js"), exports);
9
+ tslib_1.__exportStar(require("./service/data-spec/data-spec-manager.js"), exports);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,uBAAoB;AACpB,iCAA8B;AAC9B,6BAA0B;AAE1B,iEAAsC;AACtC,6DAAkC;AAElC,mFAAwD","sourcesContent":["import './routes.js'\nimport './activities/index.js'\nimport './engine/index.js'\n\nexport * from './controllers/index.js'\nexport * from './service/index.js'\n\nexport * from './service/data-spec/data-spec-manager.js'\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const typeorm_1 = require("typeorm");
4
+ const shell_1 = require("@things-factory/shell");
5
+ const auth_base_1 = require("@things-factory/auth-base");
6
+ const integration_base_1 = require("@things-factory/integration-base");
7
+ const create_data_sample_js_1 = require("./controllers/create-data-sample.js");
8
+ const jasper_report_js_1 = require("./controllers/jasper-report.js");
9
+ const shiny_report_js_1 = require("./controllers/shiny-report.js");
10
+ const issue_data_collection_task_js_1 = require("./controllers/issue-data-collection-task.js");
11
+ const data_sensor_js_1 = require("./service/data-sensor/data-sensor.js");
12
+ const data_set_js_1 = require("./service/data-set/data-set.js");
13
+ process.on('bootstrap-module-global-public-route', (app, globalPublicRouter) => {
14
+ /*
15
+ * can add global public routes to application (auth not required, tenancy not required)
16
+ *
17
+ * ex) routes.get('/path', async(context, next) => {})
18
+ * ex) routes.post('/path', async(context, next) => {})
19
+ */
20
+ globalPublicRouter.post('/sensor-data', async (context, next) => {
21
+ // 데이타 검증
22
+ const { deviceId, data, rawData, timestamp = Date.now() } = context.request.body;
23
+ if (!deviceId) {
24
+ throw new Error(`The deviceId(${deviceId}) property are mandatory`);
25
+ }
26
+ // make new data-sample
27
+ await (0, shell_1.getDataSource)().transaction(async (tx) => {
28
+ // find sensor through deviceId
29
+ const sensor = await tx.getRepository(data_sensor_js_1.DataSensor).findOne({
30
+ where: { deviceId },
31
+ relations: ['domain', 'appliance', 'dataSet', 'decoder']
32
+ });
33
+ if (!sensor) {
34
+ throw new Error(`Sensor having given deviceId(${deviceId}) not found`);
35
+ }
36
+ if (!sensor.active) {
37
+ throw new Error(`State of the sensor given deviceId(${deviceId}) is not active`);
38
+ }
39
+ if (!sensor.appliance) {
40
+ throw new Error(`Appliance of the sensor given deviceId(${deviceId}) is not set up`);
41
+ }
42
+ const domain = sensor.domain;
43
+ const dataSet = sensor.dataSet;
44
+ /*
45
+ 원칙적으로 user 인증정보를 가지고 요청해야 하지만, 인증정보를 보낼 수 없는 상황이라고 전제하여 처리한다.
46
+ 앞으로, 보완되어야 한다.
47
+ */
48
+ const user = context.user ||
49
+ (await tx.getRepository(auth_base_1.User).findOne({
50
+ where: {
51
+ reference: sensor.appliance.id,
52
+ userType: 'appliance'
53
+ }
54
+ }));
55
+ context.state = {
56
+ user,
57
+ ...context.state,
58
+ domain,
59
+ tx
60
+ };
61
+ var decoded;
62
+ if (sensor.decoder) {
63
+ const { name: scenarioName } = sensor.decoder;
64
+ const variables = {
65
+ dataSensor: sensor,
66
+ source: deviceId,
67
+ data,
68
+ rawData,
69
+ timestamp
70
+ };
71
+ decoded = (await (0, integration_base_1.runScenario)(null, scenarioName, variables, context))?.result;
72
+ }
73
+ if (dataSet) {
74
+ await (0, create_data_sample_js_1.createDataSample)({
75
+ dataSet,
76
+ data,
77
+ rawData,
78
+ source: deviceId,
79
+ collectedAt: new Date(timestamp),
80
+ ...decoded
81
+ }, context);
82
+ }
83
+ context.status = 200;
84
+ context.body = {
85
+ data,
86
+ ...decoded
87
+ };
88
+ });
89
+ });
90
+ /* When a callback occurs from the scheduler when a scheduled dataset is on schedule, data collection task for the dataset should be issued. */
91
+ globalPublicRouter.post('/callback-schedule-for-dataset', async (context, next) => {
92
+ const { client } = context.request.body;
93
+ if (!client || typeof client !== 'object') {
94
+ throw new Error('client property should be a part of callback body.');
95
+ }
96
+ const { group: domainId, key: dataSetId } = client;
97
+ if (!domainId || !dataSetId) {
98
+ throw new Error(`group(${domainId}) and key(${dataSetId}) properties should not be empty`);
99
+ }
100
+ await (0, issue_data_collection_task_js_1.issueDataCollectionTask)(domainId, dataSetId, context);
101
+ context.status = 200;
102
+ });
103
+ /* When a callback occurs from the scheduler when a scheduled summary is on schedule, data summary procedure for the dataset should be executed. */
104
+ globalPublicRouter.post('/callback-schedule-for-data-summary', async (context, next) => {
105
+ const { client } = context.request.body;
106
+ if (!client || typeof client !== 'object') {
107
+ throw new Error('client property should be a part of callback body.');
108
+ }
109
+ const { group: domainId, key: dataSetId } = client;
110
+ if (!domainId || !dataSetId) {
111
+ throw new Error(`group(${domainId}) and key(${dataSetId}) properties should not be empty`);
112
+ }
113
+ await (0, shell_1.getDataSource)().transaction(async (tx) => {
114
+ const domain = await tx.getRepository(shell_1.Domain).findOneBy({ id: domainId });
115
+ if (!domain) {
116
+ throw new Error(`domain(${domainId}) not found`);
117
+ }
118
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
119
+ const dataSet = await tx
120
+ .getRepository(data_set_js_1.DataSet)
121
+ .findOne({ where: { domain: { id: (0, typeorm_1.In)(domainIds) }, id: dataSetId } });
122
+ // do what you gotta do
123
+ });
124
+ context.status = 200;
125
+ });
126
+ });
127
+ process.on('bootstrap-module-global-private-route', (app, globalPrivateRouter) => {
128
+ /*
129
+ * can add global private routes to application (auth required, tenancy not required)
130
+ */
131
+ });
132
+ process.on('bootstrap-module-domain-public-route', (app, domainPublicRouter) => {
133
+ /*
134
+ * can add domain public routes to application (auth not required, tenancy required)
135
+ */
136
+ });
137
+ process.on('bootstrap-module-domain-private-route', (app, domainPrivateRouter) => {
138
+ /*
139
+ * can add domain private routes to application (auth required, tenancy required)
140
+ */
141
+ domainPrivateRouter.get('/data-report/jasper', async (context, next) => {
142
+ context.body = await (0, jasper_report_js_1.renderJasperReport)(context);
143
+ });
144
+ domainPrivateRouter.get('/data-report/shiny', async (context, next) => {
145
+ await (0, shiny_report_js_1.renderShinyReport)(context);
146
+ });
147
+ domainPrivateRouter.get('/data-report/:reportType', async (context, next) => {
148
+ let { reportType } = context.params;
149
+ context.body = `${reportType} Not Implemented.`;
150
+ });
151
+ });
152
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport { Domain, getDataSource, getDomainIdsWithAncestors } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { runScenario } from '@things-factory/integration-base'\nimport { ScheduleRegisterRequest } from '@things-factory/scheduler-client'\n\nimport { createDataSample } from './controllers/create-data-sample.js'\nimport { renderJasperReport } from './controllers/jasper-report.js'\nimport { renderShinyReport } from './controllers/shiny-report.js'\nimport { issueDataCollectionTask } from './controllers/issue-data-collection-task.js'\nimport { DataSensor } from './service/data-sensor/data-sensor.js'\nimport { DataSet } from './service/data-set/data-set.js'\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {\n /*\n * can add global public routes to application (auth not required, tenancy not required)\n *\n * ex) routes.get('/path', async(context, next) => {})\n * ex) routes.post('/path', async(context, next) => {})\n */\n\n globalPublicRouter.post('/sensor-data', async (context, next) => {\n // 데이타 검증\n const { deviceId, data, rawData, timestamp = Date.now() } = context.request.body\n if (!deviceId) {\n throw new Error(`The deviceId(${deviceId}) property are mandatory`)\n }\n\n // make new data-sample\n await getDataSource().transaction(async tx => {\n // find sensor through deviceId\n const sensor = await tx.getRepository(DataSensor).findOne({\n where: { deviceId },\n relations: ['domain', 'appliance', 'dataSet', 'decoder']\n })\n\n if (!sensor) {\n throw new Error(`Sensor having given deviceId(${deviceId}) not found`)\n }\n\n if (!sensor.active) {\n throw new Error(`State of the sensor given deviceId(${deviceId}) is not active`)\n }\n\n if (!sensor.appliance) {\n throw new Error(`Appliance of the sensor given deviceId(${deviceId}) is not set up`)\n }\n\n const domain = sensor.domain\n const dataSet = sensor.dataSet\n\n /* \n 원칙적으로 user 인증정보를 가지고 요청해야 하지만, 인증정보를 보낼 수 없는 상황이라고 전제하여 처리한다.\n 앞으로, 보완되어야 한다.\n */\n const user: User =\n context.user ||\n (await tx.getRepository(User).findOne({\n where: {\n reference: sensor.appliance.id,\n userType: 'appliance'\n }\n }))\n\n context.state = {\n user,\n ...context.state,\n domain,\n tx\n }\n\n var decoded\n if (sensor.decoder) {\n const { name: scenarioName } = sensor.decoder\n const variables = {\n dataSensor: sensor,\n source: deviceId,\n data,\n rawData,\n timestamp\n }\n\n decoded = (await runScenario(null, scenarioName, variables, context))?.result\n }\n\n if (dataSet) {\n await createDataSample(\n {\n dataSet,\n data,\n rawData,\n source: deviceId,\n collectedAt: new Date(timestamp),\n ...decoded\n },\n context\n )\n }\n\n context.status = 200\n context.body = {\n data,\n ...decoded\n }\n })\n })\n\n /* When a callback occurs from the scheduler when a scheduled dataset is on schedule, data collection task for the dataset should be issued. */\n globalPublicRouter.post('/callback-schedule-for-dataset', async (context, next) => {\n const { client } = context.request.body as ScheduleRegisterRequest\n\n if (!client || typeof client !== 'object') {\n throw new Error('client property should be a part of callback body.')\n }\n\n const { group: domainId, key: dataSetId } = client\n\n if (!domainId || !dataSetId) {\n throw new Error(`group(${domainId}) and key(${dataSetId}) properties should not be empty`)\n }\n\n await issueDataCollectionTask(domainId, dataSetId, context)\n\n context.status = 200\n })\n\n /* When a callback occurs from the scheduler when a scheduled summary is on schedule, data summary procedure for the dataset should be executed. */\n globalPublicRouter.post('/callback-schedule-for-data-summary', async (context, next) => {\n const { client } = context.request.body as ScheduleRegisterRequest\n\n if (!client || typeof client !== 'object') {\n throw new Error('client property should be a part of callback body.')\n }\n\n const { group: domainId, key: dataSetId } = client\n\n if (!domainId || !dataSetId) {\n throw new Error(`group(${domainId}) and key(${dataSetId}) properties should not be empty`)\n }\n\n await getDataSource().transaction(async tx => {\n const domain = await tx.getRepository(Domain).findOneBy({ id: domainId })\n\n if (!domain) {\n throw new Error(`domain(${domainId}) not found`)\n }\n\n const domainIds = await getDomainIdsWithAncestors(domain)\n const dataSet = await tx\n .getRepository(DataSet)\n .findOne({ where: { domain: { id: In(domainIds) }, id: dataSetId } })\n\n // do what you gotta do\n })\n\n context.status = 200\n })\n})\n\nprocess.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {\n /*\n * can add global private routes to application (auth required, tenancy not required)\n */\n})\n\nprocess.on('bootstrap-module-domain-public-route' as any, (app, domainPublicRouter) => {\n /*\n * can add domain public routes to application (auth not required, tenancy required)\n */\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n /*\n * can add domain private routes to application (auth required, tenancy required)\n */\n domainPrivateRouter.get('/data-report/jasper', async (context, next) => {\n context.body = await renderJasperReport(context)\n })\n\n domainPrivateRouter.get('/data-report/shiny', async (context, next) => {\n await renderShinyReport(context)\n })\n\n domainPrivateRouter.get('/data-report/:reportType', async (context, next) => {\n let { reportType } = context.params\n context.body = `${reportType} Not Implemented.`\n })\n})\n"]}
@@ -0,0 +1,16 @@
1
+ import { DataArchive } from './data-archive.js';
2
+ import { DataArchivePatch, NewDataArchive } from './data-archive-type.js';
3
+ export declare class DataArchiveMutation {
4
+ /**
5
+ * It may use 'func-[dev]-data-set-download' in https://github.com/operatochef/serverless
6
+ * This function requests athena query and save the result as csv.gz in s3
7
+ */
8
+ generatePresignedUrl(patch: DataArchivePatch, context: ResolverContext): Promise<DataArchive>;
9
+ createDataArchive(dataArchive: NewDataArchive, context: ResolverContext): Promise<DataArchive>;
10
+ updateDataArchive(id: string, patch: DataArchivePatch, context: ResolverContext): Promise<DataArchive>;
11
+ updateMultipleDataArchive(patches: DataArchivePatch[], context: any): Promise<DataArchive[]>;
12
+ deleteDataArchive(id: string, context: ResolverContext): Promise<boolean>;
13
+ deleteDataArchives(ids: string[], context: ResolverContext): Promise<boolean>;
14
+ importDataArchives(dataArchives: DataArchive[], context: ResolverContext): Promise<boolean>;
15
+ copyDataArchives(ids: string[], context: ResolverContext): Promise<DataArchive[]>;
16
+ }
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataArchiveMutation = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const i18next_1 = tslib_1.__importDefault(require("i18next"));
6
+ const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
7
+ const type_graphql_1 = require("type-graphql");
8
+ const typeorm_1 = require("typeorm");
9
+ const config_resolver_js_1 = require("../../utils/config-resolver.js");
10
+ const data_archive_js_1 = require("./data-archive.js");
11
+ const data_archive_type_js_1 = require("./data-archive-type.js");
12
+ const { config } = require('@things-factory/env');
13
+ const crypto = require('crypto');
14
+ let DataArchiveMutation = class DataArchiveMutation {
15
+ /**
16
+ * It may use 'func-[dev]-data-set-download' in https://github.com/operatochef/serverless
17
+ * This function requests athena query and save the result as csv.gz in s3
18
+ */
19
+ async generatePresignedUrl(patch, context) {
20
+ const { domain, user, tx, notify, lng } = context.state;
21
+ // const dataArchiveRepo = tx.getRepository(DataArchive)
22
+ const t = i18next_1.default.getFixedT(lng, 'translations');
23
+ const { dataset: { endpoint, datasource: { database } } } = config.get('dataArchive');
24
+ const body = JSON.stringify({
25
+ domain: domain?.subdomain,
26
+ database,
27
+ ...patch?.requestParams
28
+ });
29
+ const url = (0, config_resolver_js_1.getEndpointUrl)(endpoint);
30
+ const fetched = await (0, node_fetch_1.default)(`${url}`, {
31
+ method: 'POST',
32
+ headers: { 'Content-Type': 'application/json' },
33
+ body
34
+ });
35
+ const message = {
36
+ receivers: [user.id],
37
+ mode: 'in-app',
38
+ title: '',
39
+ body: '',
40
+ url: ''
41
+ };
42
+ if (fetched.ok) {
43
+ const response = await fetched.json();
44
+ patch.downloadUrl = response['presignedUrl'];
45
+ patch.status = 'done';
46
+ message['title'] = t('title.data-archive downloads ready');
47
+ message['url'] = patch.downloadUrl;
48
+ }
49
+ else {
50
+ const error = await fetched.text();
51
+ console.log(error);
52
+ patch.status = 'error';
53
+ message['title'] = t('title.data-archive request failed');
54
+ // may not user-friendly message
55
+ message['body'] = error;
56
+ }
57
+ const result = await this.updateDataArchive(patch.id, patch, context);
58
+ notify && notify(message);
59
+ return result;
60
+ }
61
+ async createDataArchive(dataArchive, context) {
62
+ const { domain, user, tx } = context.state;
63
+ const dataArchiveRepo = tx.getRepository(data_archive_js_1.DataArchive);
64
+ const result = await dataArchiveRepo.save({
65
+ ...dataArchive,
66
+ domain,
67
+ creator: user,
68
+ updater: user
69
+ });
70
+ return result;
71
+ }
72
+ async updateDataArchive(id, patch, context) {
73
+ const { domain, user, tx } = context.state;
74
+ const dataArchiveRepo = tx.getRepository(data_archive_js_1.DataArchive);
75
+ const dataArchive = await dataArchiveRepo.findOne({
76
+ where: { domain: { id: domain.id }, id },
77
+ relations: ['domain', 'creator', 'updater']
78
+ });
79
+ const result = await dataArchiveRepo.save({
80
+ ...dataArchive,
81
+ ...patch,
82
+ updater: user
83
+ });
84
+ return result;
85
+ }
86
+ async updateMultipleDataArchive(patches, context) {
87
+ const { domain, user, tx } = context.state;
88
+ const dataArchiveRepo = tx.getRepository(data_archive_js_1.DataArchive);
89
+ let results = [];
90
+ const _createRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === '+');
91
+ const _updateRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === 'M');
92
+ if (_createRecords.length > 0) {
93
+ const cuFlag = '+';
94
+ for (let i = 0; i < _createRecords.length; i++) {
95
+ const newRecord = _createRecords[i];
96
+ const result = await dataArchiveRepo.save({
97
+ ...newRecord,
98
+ domain,
99
+ creator: user,
100
+ updater: user
101
+ });
102
+ results.push({
103
+ ...result,
104
+ cuFlag
105
+ });
106
+ }
107
+ }
108
+ if (_updateRecords.length > 0) {
109
+ const cuFlag = 'M';
110
+ for (let i = 0; i < _updateRecords.length; i++) {
111
+ const newRecord = _updateRecords[i];
112
+ const dataArchive = await dataArchiveRepo.findOne(newRecord.id, {
113
+ relations: ['domain', 'creator', 'updater']
114
+ });
115
+ const result = await dataArchiveRepo.save({
116
+ ...dataArchive,
117
+ ...newRecord,
118
+ updater: user
119
+ });
120
+ results.push({
121
+ ...result,
122
+ cuFlag
123
+ });
124
+ }
125
+ }
126
+ return results;
127
+ }
128
+ async deleteDataArchive(id, context) {
129
+ const { domain, tx } = context.state;
130
+ await tx.getRepository(data_archive_js_1.DataArchive).delete({ domain: { id: domain.id }, id });
131
+ return true;
132
+ }
133
+ async deleteDataArchives(ids, context) {
134
+ const { domain, tx } = context.state;
135
+ await tx.getRepository(data_archive_js_1.DataArchive).delete({
136
+ domain: { id: domain.id },
137
+ id: (0, typeorm_1.In)(ids)
138
+ });
139
+ return true;
140
+ }
141
+ async importDataArchives(dataArchives, context) {
142
+ const { domain, tx } = context.state;
143
+ const dataArchiveRepo = tx.getRepository(data_archive_js_1.DataArchive);
144
+ await Promise.all(dataArchives.map(async (dataArchive) => {
145
+ const createdDataArchive = await dataArchiveRepo.save({
146
+ domain,
147
+ ...dataArchive
148
+ });
149
+ }));
150
+ return true;
151
+ }
152
+ async copyDataArchives(ids, context) {
153
+ const { domain, user, tx } = context.state;
154
+ const dataArchiveRepo = tx.getRepository(data_archive_js_1.DataArchive);
155
+ const originals = await dataArchiveRepo.find({
156
+ where: {
157
+ id: (0, typeorm_1.In)(ids),
158
+ domain: { id: domain.id }
159
+ },
160
+ relations: ['domain']
161
+ });
162
+ if (originals.length == 0) {
163
+ return [];
164
+ }
165
+ var newCopys = originals.map(dataArchive => {
166
+ let dataArchiveId = crypto.randomUUID();
167
+ return {
168
+ ...dataArchive,
169
+ id: dataArchiveId,
170
+ domain,
171
+ creator: user,
172
+ updater: user,
173
+ updatedAt: undefined,
174
+ createdAt: undefined
175
+ };
176
+ });
177
+ var copiedDataArchives = await dataArchiveRepo.save(newCopys);
178
+ return copiedDataArchives;
179
+ }
180
+ };
181
+ exports.DataArchiveMutation = DataArchiveMutation;
182
+ tslib_1.__decorate([
183
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
184
+ (0, type_graphql_1.Directive)('@transaction'),
185
+ (0, type_graphql_1.Mutation)(returns => data_archive_js_1.DataArchive, {
186
+ description: 'Generates a presigned URL for downloading archived data. This mutation initiates the data export process and notifies users when the download is ready.'
187
+ }),
188
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('patch')),
189
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
190
+ tslib_1.__metadata("design:type", Function),
191
+ tslib_1.__metadata("design:paramtypes", [data_archive_type_js_1.DataArchivePatch, Object]),
192
+ tslib_1.__metadata("design:returntype", Promise)
193
+ ], DataArchiveMutation.prototype, "generatePresignedUrl", null);
194
+ tslib_1.__decorate([
195
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
196
+ (0, type_graphql_1.Directive)('@transaction'),
197
+ (0, type_graphql_1.Mutation)(returns => data_archive_js_1.DataArchive, {
198
+ description: 'Creates a new data archive record for storing historical data exports. This mutation tracks the archive request and download status.'
199
+ }),
200
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('dataArchive')),
201
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
202
+ tslib_1.__metadata("design:type", Function),
203
+ tslib_1.__metadata("design:paramtypes", [data_archive_type_js_1.NewDataArchive, Object]),
204
+ tslib_1.__metadata("design:returntype", Promise)
205
+ ], DataArchiveMutation.prototype, "createDataArchive", null);
206
+ tslib_1.__decorate([
207
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
208
+ (0, type_graphql_1.Directive)('@transaction'),
209
+ (0, type_graphql_1.Mutation)(returns => data_archive_js_1.DataArchive, {
210
+ description: 'Updates a data archive record with new status, download URL, and request parameters. This mutation tracks the progress of data export operations.'
211
+ }),
212
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
213
+ tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
214
+ tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
215
+ tslib_1.__metadata("design:type", Function),
216
+ tslib_1.__metadata("design:paramtypes", [String, data_archive_type_js_1.DataArchivePatch, Object]),
217
+ tslib_1.__metadata("design:returntype", Promise)
218
+ ], DataArchiveMutation.prototype, "updateDataArchive", null);
219
+ tslib_1.__decorate([
220
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
221
+ (0, type_graphql_1.Directive)('@transaction'),
222
+ (0, type_graphql_1.Mutation)(returns => [data_archive_js_1.DataArchive], {
223
+ description: 'Updates multiple data archive records in a single operation. This mutation supports batch processing for efficient archive management.'
224
+ }),
225
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('patches', type => [data_archive_type_js_1.DataArchivePatch])),
226
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
227
+ tslib_1.__metadata("design:type", Function),
228
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
229
+ tslib_1.__metadata("design:returntype", Promise)
230
+ ], DataArchiveMutation.prototype, "updateMultipleDataArchive", null);
231
+ tslib_1.__decorate([
232
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
233
+ (0, type_graphql_1.Directive)('@transaction'),
234
+ (0, type_graphql_1.Mutation)(returns => Boolean, {
235
+ description: 'Deletes a data archive record and removes the associated download files. This mutation cleans up completed or failed archive requests.'
236
+ }),
237
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
238
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
239
+ tslib_1.__metadata("design:type", Function),
240
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
241
+ tslib_1.__metadata("design:returntype", Promise)
242
+ ], DataArchiveMutation.prototype, "deleteDataArchive", null);
243
+ tslib_1.__decorate([
244
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
245
+ (0, type_graphql_1.Directive)('@transaction'),
246
+ (0, type_graphql_1.Mutation)(returns => Boolean, {
247
+ description: 'Deletes multiple data archive records in a single operation. This mutation supports batch deletion for efficient cleanup of archive requests.'
248
+ }),
249
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
250
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
251
+ tslib_1.__metadata("design:type", Function),
252
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
253
+ tslib_1.__metadata("design:returntype", Promise)
254
+ ], DataArchiveMutation.prototype, "deleteDataArchives", null);
255
+ tslib_1.__decorate([
256
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
257
+ (0, type_graphql_1.Directive)('@transaction'),
258
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To import multiple data-archives' }),
259
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('dataArchives', type => [data_archive_type_js_1.DataArchivePatch])),
260
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
261
+ tslib_1.__metadata("design:type", Function),
262
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
263
+ tslib_1.__metadata("design:returntype", Promise)
264
+ ], DataArchiveMutation.prototype, "importDataArchives", null);
265
+ tslib_1.__decorate([
266
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "mutation", domainOwnerGranted: true)'),
267
+ (0, type_graphql_1.Directive)('@transaction'),
268
+ (0, type_graphql_1.Mutation)(returns => [data_archive_js_1.DataArchive], { description: 'To copy multiple data-archives' }),
269
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
270
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
271
+ tslib_1.__metadata("design:type", Function),
272
+ tslib_1.__metadata("design:paramtypes", [Array, Object]),
273
+ tslib_1.__metadata("design:returntype", Promise)
274
+ ], DataArchiveMutation.prototype, "copyDataArchives", null);
275
+ exports.DataArchiveMutation = DataArchiveMutation = tslib_1.__decorate([
276
+ (0, type_graphql_1.Resolver)(data_archive_js_1.DataArchive)
277
+ ], DataArchiveMutation);
278
+ //# sourceMappingURL=data-archive-mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-archive-mutation.js","sourceRoot":"","sources":["../../../server/service/data-archive/data-archive-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import i18next from 'i18next'\nimport fetch from 'node-fetch'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { getEndpointUrl } from '../../utils/config-resolver.js'\nimport { DataArchive } from './data-archive.js'\nimport { DataArchivePatch, NewDataArchive } from './data-archive-type.js'\n\nconst { config } = require('@things-factory/env')\nconst crypto = require('crypto')\n\n@Resolver(DataArchive)\nexport class DataArchiveMutation {\n /**\n * It may use 'func-[dev]-data-set-download' in https://github.com/operatochef/serverless\n * This function requests athena query and save the result as csv.gz in s3\n */\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataArchive, {\n description:\n 'Generates a presigned URL for downloading archived data. This mutation initiates the data export process and notifies users when the download is ready.'\n })\n async generatePresignedUrl(\n @Arg('patch') patch: DataArchivePatch,\n @Ctx() context: ResolverContext\n ): Promise<DataArchive> {\n const { domain, user, tx, notify, lng } = context.state\n // const dataArchiveRepo = tx.getRepository(DataArchive)\n const t = i18next.getFixedT(lng, 'translations')\n const {\n dataset: {\n endpoint,\n datasource: { database }\n }\n } = config.get('dataArchive')\n\n const body = JSON.stringify({\n domain: domain?.subdomain,\n database,\n ...patch?.requestParams\n })\n\n const url = getEndpointUrl(endpoint)\n\n const fetched = await fetch(`${url}`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body\n })\n\n const message = {\n receivers: [user.id],\n mode: 'in-app',\n title: '',\n body: '',\n url: ''\n }\n\n if (fetched.ok) {\n const response = await fetched.json()\n patch.downloadUrl = response['presignedUrl']\n patch.status = 'done'\n\n message['title'] = t('title.data-archive downloads ready')\n message['url'] = patch.downloadUrl\n } else {\n const error = await fetched.text()\n console.log(error)\n patch.status = 'error'\n\n message['title'] = t('title.data-archive request failed')\n // may not user-friendly message\n message['body'] = error\n }\n\n const result = await this.updateDataArchive(patch.id, patch, context)\n\n notify && notify(message)\n\n return result\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataArchive, {\n description:\n 'Creates a new data archive record for storing historical data exports. This mutation tracks the archive request and download status.'\n })\n async createDataArchive(\n @Arg('dataArchive') dataArchive: NewDataArchive,\n @Ctx() context: ResolverContext\n ): Promise<DataArchive> {\n const { domain, user, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n const result = await dataArchiveRepo.save({\n ...dataArchive,\n domain,\n creator: user,\n updater: user\n })\n\n return result\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataArchive, {\n description:\n 'Updates a data archive record with new status, download URL, and request parameters. This mutation tracks the progress of data export operations.'\n })\n async updateDataArchive(\n @Arg('id') id: string,\n @Arg('patch') patch: DataArchivePatch,\n @Ctx() context: ResolverContext\n ): Promise<DataArchive> {\n const { domain, user, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n const dataArchive = await dataArchiveRepo.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'creator', 'updater']\n })\n\n const result = await dataArchiveRepo.save({\n ...dataArchive,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [DataArchive], {\n description:\n 'Updates multiple data archive records in a single operation. This mutation supports batch processing for efficient archive management.'\n })\n async updateMultipleDataArchive(\n @Arg('patches', type => [DataArchivePatch]) patches: DataArchivePatch[],\n @Ctx() context: any\n ): Promise<DataArchive[]> {\n const { domain, user, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n\n if (_createRecords.length > 0) {\n const cuFlag = '+'\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await dataArchiveRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({\n ...result,\n cuFlag\n })\n }\n }\n\n if (_updateRecords.length > 0) {\n const cuFlag = 'M'\n for (let i = 0; i < _updateRecords.length; i++) {\n const newRecord = _updateRecords[i]\n const dataArchive = await dataArchiveRepo.findOne(newRecord.id, {\n relations: ['domain', 'creator', 'updater']\n })\n\n const result = await dataArchiveRepo.save({\n ...dataArchive,\n ...newRecord,\n updater: user\n })\n\n results.push({\n ...result,\n cuFlag\n })\n }\n }\n\n return results\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, {\n description:\n 'Deletes a data archive record and removes the associated download files. This mutation cleans up completed or failed archive requests.'\n })\n async deleteDataArchive(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(DataArchive).delete({ domain: { id: domain.id }, id })\n return true\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, {\n description:\n 'Deletes multiple data archive records in a single operation. This mutation supports batch deletion for efficient cleanup of archive requests.'\n })\n async deleteDataArchives(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(DataArchive).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To import multiple data-archives' })\n async importDataArchives(\n @Arg('dataArchives', type => [DataArchivePatch]) dataArchives: DataArchive[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n await Promise.all(\n dataArchives.map(async (dataArchive: DataArchive) => {\n const createdDataArchive: DataArchive = await dataArchiveRepo.save({\n domain,\n ...dataArchive\n })\n })\n )\n\n return true\n }\n\n @Directive('@privilege(category: \"data-archive\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [DataArchive], { description: 'To copy multiple data-archives' })\n async copyDataArchives(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<DataArchive[]> {\n const { domain, user, tx } = context.state\n const dataArchiveRepo = tx.getRepository(DataArchive)\n\n const originals = await dataArchiveRepo.find({\n where: {\n id: In(ids),\n domain: { id: domain.id }\n },\n relations: ['domain']\n })\n\n if (originals.length == 0) {\n return []\n }\n\n var newCopys = originals.map(dataArchive => {\n let dataArchiveId = crypto.randomUUID()\n\n return {\n ...dataArchive,\n id: dataArchiveId,\n domain,\n creator: user,\n updater: user,\n updatedAt: undefined,\n createdAt: undefined\n }\n })\n\n var copiedDataArchives = await dataArchiveRepo.save(newCopys)\n\n return copiedDataArchives\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { User } from '@things-factory/auth-base';
2
+ import { Domain, ListParam } from '@things-factory/shell';
3
+ import { DataArchive } from './data-archive.js';
4
+ import { DataArchiveList } from './data-archive-type.js';
5
+ export declare class DataArchiveQuery {
6
+ dataArchive(id: string, context: ResolverContext): Promise<DataArchive>;
7
+ dataArchives(params: ListParam, context: ResolverContext): Promise<DataArchiveList>;
8
+ domain(dataArchive: DataArchive): Promise<Domain>;
9
+ updater(dataArchive: DataArchive): Promise<User>;
10
+ creator(dataArchive: DataArchive): Promise<User>;
11
+ }
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataArchiveQuery = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const type_graphql_1 = require("type-graphql");
6
+ const typeorm_1 = require("typeorm");
7
+ const auth_base_1 = require("@things-factory/auth-base");
8
+ const shell_1 = require("@things-factory/shell");
9
+ const data_archive_js_1 = require("./data-archive.js");
10
+ const data_archive_type_js_1 = require("./data-archive-type.js");
11
+ var parser = require('cron-parser');
12
+ let DataArchiveQuery = class DataArchiveQuery {
13
+ async dataArchive(id, context) {
14
+ const { domain } = context.state;
15
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
16
+ return await (0, shell_1.getRepository)(data_archive_js_1.DataArchive).findOne({
17
+ where: { domain: { id: (0, typeorm_1.In)(domainIds) }, id }
18
+ });
19
+ }
20
+ async dataArchives(params, context) {
21
+ const { domain } = context.state;
22
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
23
+ const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
24
+ repository: (0, shell_1.getRepository)(data_archive_js_1.DataArchive),
25
+ params,
26
+ domain: undefined,
27
+ alias: 'dataArchive',
28
+ searchables: []
29
+ });
30
+ queryBuilder.andWhere('dataArchive.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds });
31
+ const [items, total] = await queryBuilder.getManyAndCount();
32
+ return { items, total };
33
+ }
34
+ async domain(dataArchive) {
35
+ return dataArchive.domainId && (await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: dataArchive.domainId }));
36
+ }
37
+ async updater(dataArchive) {
38
+ return dataArchive.updaterId && (await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: dataArchive.updaterId }));
39
+ }
40
+ async creator(dataArchive) {
41
+ return dataArchive.creatorId && (await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: dataArchive.creatorId }));
42
+ }
43
+ };
44
+ exports.DataArchiveQuery = DataArchiveQuery;
45
+ tslib_1.__decorate([
46
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "query", domainOwnerGranted: true)'),
47
+ (0, type_graphql_1.Query)(returns => data_archive_js_1.DataArchive, {
48
+ description: 'Retrieves a single data archive by its unique identifier. This query fetches detailed information about a data archive request including its status, download URL, and associated dataset information for data export purposes.'
49
+ }),
50
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
51
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
52
+ tslib_1.__metadata("design:type", Function),
53
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
54
+ tslib_1.__metadata("design:returntype", Promise)
55
+ ], DataArchiveQuery.prototype, "dataArchive", null);
56
+ tslib_1.__decorate([
57
+ (0, type_graphql_1.Directive)('@privilege(category: "data-archive", privilege: "query", domainOwnerGranted: true)'),
58
+ (0, type_graphql_1.Query)(returns => data_archive_type_js_1.DataArchiveList, {
59
+ description: 'Retrieves multiple data archives with pagination support. This query is used for listing and managing data export requests, allowing users to track the status of their data download requests and access completed archives.'
60
+ }),
61
+ tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
62
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
63
+ tslib_1.__metadata("design:type", Function),
64
+ tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
65
+ tslib_1.__metadata("design:returntype", Promise)
66
+ ], DataArchiveQuery.prototype, "dataArchives", null);
67
+ tslib_1.__decorate([
68
+ (0, type_graphql_1.FieldResolver)(type => shell_1.Domain, {
69
+ description: 'Retrieves the domain that this data archive belongs to. This field resolver provides access to the organizational context and settings associated with the archive request.'
70
+ }),
71
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
72
+ tslib_1.__metadata("design:type", Function),
73
+ tslib_1.__metadata("design:paramtypes", [data_archive_js_1.DataArchive]),
74
+ tslib_1.__metadata("design:returntype", Promise)
75
+ ], DataArchiveQuery.prototype, "domain", null);
76
+ tslib_1.__decorate([
77
+ (0, type_graphql_1.FieldResolver)(type => auth_base_1.User, {
78
+ description: 'Retrieves the user who last updated this data archive. This field resolver identifies the person responsible for the most recent modifications to the archive request.'
79
+ }),
80
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
81
+ tslib_1.__metadata("design:type", Function),
82
+ tslib_1.__metadata("design:paramtypes", [data_archive_js_1.DataArchive]),
83
+ tslib_1.__metadata("design:returntype", Promise)
84
+ ], DataArchiveQuery.prototype, "updater", null);
85
+ tslib_1.__decorate([
86
+ (0, type_graphql_1.FieldResolver)(type => auth_base_1.User, {
87
+ description: 'Retrieves the user who created this data archive request. This field resolver identifies the person responsible for initiating the data export and download process.'
88
+ }),
89
+ tslib_1.__param(0, (0, type_graphql_1.Root)()),
90
+ tslib_1.__metadata("design:type", Function),
91
+ tslib_1.__metadata("design:paramtypes", [data_archive_js_1.DataArchive]),
92
+ tslib_1.__metadata("design:returntype", Promise)
93
+ ], DataArchiveQuery.prototype, "creator", null);
94
+ exports.DataArchiveQuery = DataArchiveQuery = tslib_1.__decorate([
95
+ (0, type_graphql_1.Resolver)(data_archive_js_1.DataArchive)
96
+ ], DataArchiveQuery);
97
+ //# sourceMappingURL=data-archive-query.js.map