nuudel-core 0.1.6 → 0.1.13

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 (301) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/build/main/lib/common/DelayedRender.js +38 -0
  3. package/build/main/lib/common/coreComponent.js +203 -0
  4. package/build/main/lib/components/Box/index.js +9 -0
  5. package/build/main/lib/components/Button/{index.jsx → index.js} +4 -5
  6. package/build/main/lib/components/Checkbox/index.js +9 -0
  7. package/build/main/lib/components/Choices/index.js +23 -0
  8. package/build/main/lib/components/ColorBox/index.js +45 -0
  9. package/build/main/lib/components/Container/{index.jsx → index.js} +3 -4
  10. package/build/main/lib/components/Dialog/{index.jsx → index.js} +3 -19
  11. package/build/main/lib/components/Divider/index.js +9 -0
  12. package/build/main/lib/components/Drawer/{index.jsx → index.js} +5 -10
  13. package/build/main/lib/components/Grid/index.js +9 -0
  14. package/build/main/lib/components/IFrame/index.js +81 -0
  15. package/build/main/lib/components/Image/{index.jsx → index.js} +4 -9
  16. package/build/main/lib/components/Link/index.js +53 -0
  17. package/build/main/lib/components/Map/index.d.ts +1 -0
  18. package/build/main/lib/components/Map/index.js +34 -0
  19. package/build/main/lib/components/Material/ErrorMessage.js +49 -0
  20. package/build/main/lib/components/Material/Snackbar.js +28 -0
  21. package/build/main/lib/components/Material/SuccessMessage.d.ts +1 -0
  22. package/build/main/lib/components/Material/SuccessMessage.js +46 -0
  23. package/build/main/lib/components/Material/styles.module.scss +14 -0
  24. package/build/main/lib/components/Menu/index.js +23 -0
  25. package/build/main/lib/components/MessageBar/{index.jsx → index.js} +8 -14
  26. package/build/main/lib/components/MessageBox/{index.jsx → index.js} +3 -19
  27. package/build/main/lib/components/MultiSelect/index.js +52 -0
  28. package/build/main/lib/components/NoSsr/index.js +13 -0
  29. package/build/main/lib/components/NumberFormatInput/{index.jsx → index.js} +4 -3
  30. package/build/main/lib/components/Rating/index.js +12 -0
  31. package/build/main/lib/components/ReCaptcha/index.js +56 -0
  32. package/build/main/lib/components/Select/{index.jsx → index.js} +3 -7
  33. package/build/main/lib/components/Slider/index.js +9 -0
  34. package/build/main/lib/components/Slideshow/index.js +77 -0
  35. package/build/main/lib/components/Slideshow/styles.module.scss +53 -0
  36. package/build/main/lib/components/Spinner/{index.jsx → index.js} +4 -9
  37. package/build/main/lib/components/Stepper/index.js +76 -0
  38. package/build/main/lib/components/Switch/index.js +23 -0
  39. package/build/main/lib/components/TagsInput/{index.jsx → index.js} +1 -1
  40. package/build/main/lib/components/Text/index.js +33 -0
  41. package/build/main/lib/components/TextField/{index.jsx → index.js} +3 -4
  42. package/build/main/lib/components/Tooltip/index.js +9 -0
  43. package/build/main/lib/components/Upload/Style.js +74 -0
  44. package/build/main/lib/components/Upload/{index.jsx → index.js} +17 -40
  45. package/build/main/lib/components/Upload/resizeImage.js +42 -0
  46. package/build/main/lib/components/styles.module.scss +17 -0
  47. package/build/main/lib/controls/formFields/DateFormField.js +22 -0
  48. package/build/main/lib/controls/formFields/{FileUploadField.jsx → FileUploadField.js} +3 -10
  49. package/build/main/lib/controls/formFields/FormField.js +18 -0
  50. package/build/main/lib/controls/formFields/LookupField.js +87 -0
  51. package/build/main/lib/controls/formFields/RNFieldBooleanEdit.js +22 -0
  52. package/build/main/lib/controls/formFields/RNFieldChoiceEdit.js +83 -0
  53. package/build/main/lib/controls/formFields/{RNFieldCore.jsx → RNFieldCore.js} +1 -1
  54. package/build/main/lib/controls/formFields/RNFieldDateEdit.js +30 -0
  55. package/build/main/lib/controls/formFields/RNFieldImageDisplay.js +42 -0
  56. package/build/main/lib/controls/formFields/RNFieldImageEdit.js +17 -0
  57. package/build/main/lib/controls/formFields/RNFieldLookupDisplay.js +23 -0
  58. package/build/main/lib/controls/formFields/RNFieldLookupEdit.js +29 -0
  59. package/build/main/lib/controls/formFields/RNFieldNumberEdit.js +33 -0
  60. package/build/main/lib/controls/formFields/RNFieldObjectDisplay.js +17 -0
  61. package/build/main/lib/controls/formFields/RNFieldObjectEdit.js +25 -0
  62. package/build/main/lib/controls/formFields/RNFieldTextDisplay.js +18 -0
  63. package/build/main/lib/controls/formFields/RNFieldTextEdit.js +25 -0
  64. package/build/main/lib/controls/formFields/RNFieldUrlDisplay.js +33 -0
  65. package/build/main/lib/controls/formFields/RNFieldUrlEdit.js +23 -0
  66. package/build/main/lib/controls/formFields/{RNFormField.jsx → RNFormField.js} +5 -16
  67. package/build/main/lib/controls/formFields/styles.module.scss +92 -0
  68. package/build/main/lib/forms/DetailForm/DetailForm.js +412 -0
  69. package/build/main/lib/forms/DetailForm/IFormProps.js +3 -0
  70. package/build/main/lib/forms/Forms/{index.jsx → index.js} +3 -3
  71. package/build/main/lib/hocs/withApollo/index.js +116 -0
  72. package/build/main/lib/hocs/withApollo/{resolvers.jsx → resolvers.js} +1 -1
  73. package/build/main/lib/hocs/withContext/{index.jsx → index.js} +3 -4
  74. package/build/main/lib/hocs/withReducer/index.js +27 -0
  75. package/build/main/lib/hocs/withRedux/index.js +57 -0
  76. package/build/main/lib/redux/reducers/{index.jsx → index.js} +1 -1
  77. package/build/main/lib/redux/reduxCore.js +21 -0
  78. package/build/main/lib/redux/store/{index.jsx → index.js} +1 -1
  79. package/build/main/lib/services/ListFormService.js +819 -0
  80. package/build/main/lib/services/{graphqlSchema.jsx → graphqlSchema.js} +1 -1
  81. package/build/main/lib/theme/styles/styles.module.scss +180 -0
  82. package/build/module/lib/common/DelayedRender.js +32 -0
  83. package/build/module/lib/common/coreComponent.js +205 -0
  84. package/build/module/lib/components/Box/index.js +5 -0
  85. package/build/module/lib/components/Button/{index.jsx → index.js} +4 -5
  86. package/build/module/lib/components/Checkbox/index.js +5 -0
  87. package/build/module/lib/components/Choices/index.js +5 -0
  88. package/build/module/lib/components/ColorBox/index.js +40 -0
  89. package/build/module/lib/components/Container/{index.jsx → index.js} +3 -4
  90. package/build/module/lib/components/Dialog/{index.jsx → index.js} +3 -19
  91. package/build/module/lib/components/Divider/index.js +5 -0
  92. package/build/module/lib/components/Drawer/{index.jsx → index.js} +5 -10
  93. package/build/module/lib/components/Grid/index.js +5 -0
  94. package/build/module/lib/components/IFrame/index.js +79 -0
  95. package/build/module/lib/components/Image/index.js +20 -0
  96. package/build/module/lib/components/Link/index.js +35 -0
  97. package/build/module/lib/components/Map/index.d.ts +1 -0
  98. package/build/module/lib/components/Map/index.js +29 -0
  99. package/build/module/lib/components/Material/ErrorMessage.js +32 -0
  100. package/build/module/lib/components/Material/Snackbar.js +22 -0
  101. package/build/module/lib/components/Material/SuccessMessage.d.ts +1 -0
  102. package/build/module/lib/components/Material/SuccessMessage.js +39 -0
  103. package/build/module/lib/components/Material/styles.module.scss +14 -0
  104. package/build/module/lib/components/Menu/index.js +5 -0
  105. package/build/module/lib/components/MessageBar/{index.jsx → index.js} +8 -14
  106. package/build/module/lib/components/MessageBox/{index.jsx → index.js} +3 -19
  107. package/build/module/lib/components/MultiSelect/index.js +46 -0
  108. package/build/module/lib/components/NoSsr/index.js +8 -0
  109. package/build/module/lib/components/NumberFormatInput/index.js +12 -0
  110. package/build/module/lib/components/Rating/index.js +5 -0
  111. package/build/module/lib/components/ReCaptcha/index.js +54 -0
  112. package/build/module/lib/components/Select/{index.jsx → index.js} +3 -7
  113. package/build/module/lib/components/Slider/index.js +5 -0
  114. package/build/module/lib/components/Slideshow/index.js +51 -0
  115. package/build/module/lib/components/Slideshow/styles.module.scss +53 -0
  116. package/build/module/lib/components/Spinner/{index.jsx → index.js} +4 -9
  117. package/build/module/lib/components/Stepper/index.js +60 -0
  118. package/build/module/lib/components/Switch/index.js +5 -0
  119. package/build/module/lib/components/TagsInput/index.js +3 -0
  120. package/build/module/lib/components/Text/index.js +7 -0
  121. package/build/module/lib/components/TextField/{index.jsx → index.js} +4 -5
  122. package/build/module/lib/components/Tooltip/index.js +5 -0
  123. package/build/module/lib/components/Upload/Style.js +71 -0
  124. package/build/module/lib/components/Upload/{index.jsx → index.js} +17 -40
  125. package/build/module/lib/components/Upload/resizeImage.js +35 -0
  126. package/build/module/lib/components/styles.module.scss +17 -0
  127. package/build/module/lib/controls/formFields/DateFormField.js +17 -0
  128. package/build/module/lib/controls/formFields/{FileUploadField.jsx → FileUploadField.js} +3 -10
  129. package/build/module/lib/controls/formFields/FormField.js +13 -0
  130. package/build/module/lib/controls/formFields/LookupField.js +79 -0
  131. package/build/module/lib/controls/formFields/RNFieldBooleanEdit.js +17 -0
  132. package/build/module/lib/controls/formFields/RNFieldChoiceEdit.js +77 -0
  133. package/build/module/lib/controls/formFields/RNFieldCore.js +18 -0
  134. package/build/module/lib/controls/formFields/RNFieldDateEdit.js +22 -0
  135. package/build/module/lib/controls/formFields/RNFieldImageDisplay.js +37 -0
  136. package/build/module/lib/controls/formFields/RNFieldImageEdit.js +11 -0
  137. package/build/module/lib/controls/formFields/RNFieldLookupDisplay.js +18 -0
  138. package/build/module/lib/controls/formFields/RNFieldLookupEdit.js +23 -0
  139. package/build/module/lib/controls/formFields/RNFieldNumberEdit.js +27 -0
  140. package/build/module/lib/controls/formFields/RNFieldObjectDisplay.js +12 -0
  141. package/build/module/lib/controls/formFields/RNFieldObjectEdit.js +19 -0
  142. package/build/module/lib/controls/formFields/RNFieldTextDisplay.js +13 -0
  143. package/build/module/lib/controls/formFields/RNFieldTextEdit.js +19 -0
  144. package/build/module/lib/controls/formFields/RNFieldUrlDisplay.js +25 -0
  145. package/build/module/lib/controls/formFields/RNFieldUrlEdit.js +17 -0
  146. package/build/module/lib/controls/formFields/{RNFormField.jsx → RNFormField.js} +5 -16
  147. package/build/module/lib/controls/formFields/styles.module.scss +92 -0
  148. package/build/module/lib/forms/DetailForm/DetailForm.js +406 -0
  149. package/build/module/lib/forms/DetailForm/IFormProps.js +2 -0
  150. package/build/module/lib/forms/Forms/index.js +14 -0
  151. package/build/module/lib/hocs/withApollo/index.js +111 -0
  152. package/build/module/lib/hocs/withApollo/resolvers.js +45 -0
  153. package/build/module/lib/hocs/withContext/{index.jsx → index.js} +4 -5
  154. package/build/module/lib/hocs/withReducer/index.js +25 -0
  155. package/build/module/lib/hocs/withRedux/index.js +55 -0
  156. package/build/module/lib/redux/reducers/index.js +9 -0
  157. package/build/module/lib/redux/reduxCore.js +16 -0
  158. package/build/module/lib/redux/store/index.js +8 -0
  159. package/build/module/lib/services/ListFormService.js +813 -0
  160. package/build/module/lib/services/graphqlSchema.js +25 -0
  161. package/build/module/lib/theme/styles/styles.module.scss +180 -0
  162. package/package.json +14 -9
  163. package/build/main/lib/common/DelayedRender.jsx +0 -38
  164. package/build/main/lib/common/coreComponent.jsx +0 -203
  165. package/build/main/lib/components/Box/index.jsx +0 -12
  166. package/build/main/lib/components/Checkbox/index.jsx +0 -12
  167. package/build/main/lib/components/Choices/index.jsx +0 -28
  168. package/build/main/lib/components/ColorBox/index.jsx +0 -45
  169. package/build/main/lib/components/Divider/index.jsx +0 -12
  170. package/build/main/lib/components/Grid/index.jsx +0 -12
  171. package/build/main/lib/components/IFrame/index.jsx +0 -99
  172. package/build/main/lib/components/Link/index.jsx +0 -64
  173. package/build/main/lib/components/Map/index.jsx +0 -59
  174. package/build/main/lib/components/Material/ErrorMessage.jsx +0 -66
  175. package/build/main/lib/components/Material/Snackbar.jsx +0 -36
  176. package/build/main/lib/components/Material/SuccessMessage.jsx +0 -50
  177. package/build/main/lib/components/Menu/index.jsx +0 -31
  178. package/build/main/lib/components/MultiSelect/index.jsx +0 -63
  179. package/build/main/lib/components/NoSsr/index.jsx +0 -12
  180. package/build/main/lib/components/Rating/index.jsx +0 -12
  181. package/build/main/lib/components/ReCaptcha/index.jsx +0 -80
  182. package/build/main/lib/components/Slider/index.jsx +0 -12
  183. package/build/main/lib/components/Slideshow/index.jsx +0 -93
  184. package/build/main/lib/components/Stepper/index.jsx +0 -86
  185. package/build/main/lib/components/Switch/index.jsx +0 -26
  186. package/build/main/lib/components/Text/index.jsx +0 -42
  187. package/build/main/lib/components/Tooltip/index.jsx +0 -12
  188. package/build/main/lib/components/Upload/Style.jsx +0 -74
  189. package/build/main/lib/components/Upload/resizeImage.jsx +0 -42
  190. package/build/main/lib/controls/formFields/DateFormField.jsx +0 -22
  191. package/build/main/lib/controls/formFields/FormField.jsx +0 -35
  192. package/build/main/lib/controls/formFields/LookupField.jsx +0 -97
  193. package/build/main/lib/controls/formFields/MultiSelectField.d.ts +0 -22
  194. package/build/main/lib/controls/formFields/MultiSelectField.jsx +0 -63
  195. package/build/main/lib/controls/formFields/RNFieldBooleanEdit.jsx +0 -24
  196. package/build/main/lib/controls/formFields/RNFieldChoiceEdit.jsx +0 -92
  197. package/build/main/lib/controls/formFields/RNFieldDateEdit.jsx +0 -30
  198. package/build/main/lib/controls/formFields/RNFieldImageDisplay.jsx +0 -42
  199. package/build/main/lib/controls/formFields/RNFieldImageEdit.jsx +0 -17
  200. package/build/main/lib/controls/formFields/RNFieldLookupDisplay.jsx +0 -30
  201. package/build/main/lib/controls/formFields/RNFieldLookupEdit.jsx +0 -29
  202. package/build/main/lib/controls/formFields/RNFieldNumberEdit.jsx +0 -33
  203. package/build/main/lib/controls/formFields/RNFieldObjectDisplay.jsx +0 -17
  204. package/build/main/lib/controls/formFields/RNFieldObjectEdit.jsx +0 -25
  205. package/build/main/lib/controls/formFields/RNFieldTextDisplay.jsx +0 -18
  206. package/build/main/lib/controls/formFields/RNFieldTextEdit.jsx +0 -25
  207. package/build/main/lib/controls/formFields/RNFieldUrlDisplay.jsx +0 -35
  208. package/build/main/lib/controls/formFields/RNFieldUrlEdit.jsx +0 -23
  209. package/build/main/lib/forms/DetailForm/DetailForm.jsx +0 -445
  210. package/build/main/lib/forms/DetailForm/IFormProps.jsx +0 -3
  211. package/build/main/lib/forms/Material/ErrorMessage.d.ts +0 -4
  212. package/build/main/lib/forms/Material/ErrorMessage.jsx +0 -66
  213. package/build/main/lib/forms/Material/Snackbar.d.ts +0 -2
  214. package/build/main/lib/forms/Material/Snackbar.jsx +0 -36
  215. package/build/main/lib/forms/Material/SuccessMessage.d.ts +0 -6
  216. package/build/main/lib/forms/Material/SuccessMessage.jsx +0 -50
  217. package/build/main/lib/forms/Upload/Style.d.ts +0 -1
  218. package/build/main/lib/forms/Upload/Style.jsx +0 -74
  219. package/build/main/lib/forms/Upload/index.d.ts +0 -14
  220. package/build/main/lib/forms/Upload/index.jsx +0 -233
  221. package/build/main/lib/forms/Upload/resizeImage.d.ts +0 -2
  222. package/build/main/lib/forms/Upload/resizeImage.jsx +0 -49
  223. package/build/main/lib/hocs/withApollo/index.jsx +0 -136
  224. package/build/main/lib/hocs/withReducer/index.jsx +0 -47
  225. package/build/main/lib/hocs/withRedux/index.jsx +0 -59
  226. package/build/main/lib/redux/reduxCore.jsx +0 -21
  227. package/build/main/lib/services/ListFormService.jsx +0 -819
  228. package/build/module/lib/common/DelayedRender.jsx +0 -32
  229. package/build/module/lib/common/coreComponent.jsx +0 -205
  230. package/build/module/lib/components/Box/index.jsx +0 -5
  231. package/build/module/lib/components/Checkbox/index.jsx +0 -5
  232. package/build/module/lib/components/Choices/index.jsx +0 -7
  233. package/build/module/lib/components/ColorBox/index.jsx +0 -40
  234. package/build/module/lib/components/Divider/index.jsx +0 -5
  235. package/build/module/lib/components/Grid/index.jsx +0 -5
  236. package/build/module/lib/components/IFrame/index.jsx +0 -78
  237. package/build/module/lib/components/Image/index.jsx +0 -25
  238. package/build/module/lib/components/Link/index.jsx +0 -46
  239. package/build/module/lib/components/Map/index.jsx +0 -35
  240. package/build/module/lib/components/Material/ErrorMessage.jsx +0 -49
  241. package/build/module/lib/components/Material/Snackbar.jsx +0 -30
  242. package/build/module/lib/components/Material/SuccessMessage.jsx +0 -43
  243. package/build/module/lib/components/Menu/index.jsx +0 -10
  244. package/build/module/lib/components/MultiSelect/index.jsx +0 -57
  245. package/build/module/lib/components/NoSsr/index.jsx +0 -7
  246. package/build/module/lib/components/NumberFormatInput/index.jsx +0 -11
  247. package/build/module/lib/components/Rating/index.jsx +0 -5
  248. package/build/module/lib/components/ReCaptcha/index.jsx +0 -59
  249. package/build/module/lib/components/Slider/index.jsx +0 -5
  250. package/build/module/lib/components/Slideshow/index.jsx +0 -67
  251. package/build/module/lib/components/Stepper/index.jsx +0 -67
  252. package/build/module/lib/components/Switch/index.jsx +0 -5
  253. package/build/module/lib/components/TagsInput/index.jsx +0 -3
  254. package/build/module/lib/components/Text/index.jsx +0 -13
  255. package/build/module/lib/components/Tooltip/index.jsx +0 -5
  256. package/build/module/lib/components/Upload/Style.jsx +0 -71
  257. package/build/module/lib/components/Upload/resizeImage.jsx +0 -35
  258. package/build/module/lib/controls/formFields/DateFormField.jsx +0 -17
  259. package/build/module/lib/controls/formFields/FormField.jsx +0 -30
  260. package/build/module/lib/controls/formFields/LookupField.jsx +0 -89
  261. package/build/module/lib/controls/formFields/MultiSelectField.d.ts +0 -22
  262. package/build/module/lib/controls/formFields/MultiSelectField.jsx +0 -57
  263. package/build/module/lib/controls/formFields/RNFieldBooleanEdit.jsx +0 -19
  264. package/build/module/lib/controls/formFields/RNFieldChoiceEdit.jsx +0 -86
  265. package/build/module/lib/controls/formFields/RNFieldCore.jsx +0 -18
  266. package/build/module/lib/controls/formFields/RNFieldDateEdit.jsx +0 -22
  267. package/build/module/lib/controls/formFields/RNFieldImageDisplay.jsx +0 -37
  268. package/build/module/lib/controls/formFields/RNFieldImageEdit.jsx +0 -11
  269. package/build/module/lib/controls/formFields/RNFieldLookupDisplay.jsx +0 -25
  270. package/build/module/lib/controls/formFields/RNFieldLookupEdit.jsx +0 -23
  271. package/build/module/lib/controls/formFields/RNFieldNumberEdit.jsx +0 -27
  272. package/build/module/lib/controls/formFields/RNFieldObjectDisplay.jsx +0 -12
  273. package/build/module/lib/controls/formFields/RNFieldObjectEdit.jsx +0 -19
  274. package/build/module/lib/controls/formFields/RNFieldTextDisplay.jsx +0 -13
  275. package/build/module/lib/controls/formFields/RNFieldTextEdit.jsx +0 -19
  276. package/build/module/lib/controls/formFields/RNFieldUrlDisplay.jsx +0 -27
  277. package/build/module/lib/controls/formFields/RNFieldUrlEdit.jsx +0 -17
  278. package/build/module/lib/forms/DetailForm/DetailForm.jsx +0 -439
  279. package/build/module/lib/forms/DetailForm/IFormProps.jsx +0 -2
  280. package/build/module/lib/forms/Forms/index.jsx +0 -14
  281. package/build/module/lib/forms/Material/ErrorMessage.d.ts +0 -4
  282. package/build/module/lib/forms/Material/ErrorMessage.jsx +0 -49
  283. package/build/module/lib/forms/Material/Snackbar.d.ts +0 -2
  284. package/build/module/lib/forms/Material/Snackbar.jsx +0 -30
  285. package/build/module/lib/forms/Material/SuccessMessage.d.ts +0 -6
  286. package/build/module/lib/forms/Material/SuccessMessage.jsx +0 -43
  287. package/build/module/lib/forms/Upload/Style.d.ts +0 -1
  288. package/build/module/lib/forms/Upload/Style.jsx +0 -71
  289. package/build/module/lib/forms/Upload/index.d.ts +0 -14
  290. package/build/module/lib/forms/Upload/index.jsx +0 -197
  291. package/build/module/lib/forms/Upload/resizeImage.d.ts +0 -2
  292. package/build/module/lib/forms/Upload/resizeImage.jsx +0 -42
  293. package/build/module/lib/hocs/withApollo/index.jsx +0 -112
  294. package/build/module/lib/hocs/withApollo/resolvers.jsx +0 -45
  295. package/build/module/lib/hocs/withReducer/index.jsx +0 -26
  296. package/build/module/lib/hocs/withRedux/index.jsx +0 -57
  297. package/build/module/lib/redux/reducers/index.jsx +0 -9
  298. package/build/module/lib/redux/reduxCore.jsx +0 -16
  299. package/build/module/lib/redux/store/index.jsx +0 -8
  300. package/build/module/lib/services/ListFormService.jsx +0 -813
  301. package/build/module/lib/services/graphqlSchema.jsx +0 -25
@@ -1,819 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ListFormService = void 0;
7
- const nuudel_utils_1 = require("nuudel-utils");
8
- const client_1 = require("@apollo/client");
9
- const graphql_tag_1 = __importDefault(require("graphql-tag"));
10
- const graphql_1 = require("graphql");
11
- const graphql_2_json_schema_1 = require("graphql-2-json-schema");
12
- const withApollo_1 = require("../hocs/withApollo");
13
- const graphqlSchema_1 = require("../services/graphqlSchema");
14
- const nuudel_utils_2 = require("nuudel-utils");
15
- const helper_1 = require("../common/helper");
16
- let client = (0, withApollo_1.createClient)();
17
- let schema = null;
18
- const getFieldSchemasForForm = (listname, formType = nuudel_utils_1.ControlMode.Display) => {
19
- return new Promise(async (resolve, reject) => {
20
- let schemas = [];
21
- let columns = await get_columns(formType, listname);
22
- columns.forEach((obj) => {
23
- let Hidden = false, DefaultValue = null, max = 0, ReadOnlyField = false;
24
- if (obj.key === '_id') {
25
- Hidden = true;
26
- ReadOnlyField = true;
27
- }
28
- else if (obj.key.startsWith('_') ||
29
- obj.key === 'createdAt' ||
30
- obj.key === 'updatedAt') {
31
- Hidden = true;
32
- }
33
- if (formType === nuudel_utils_1.ControlMode.New) {
34
- switch (obj.Type) {
35
- case 'string':
36
- DefaultValue = '';
37
- if (obj.FieldType === 'Choice') {
38
- DefaultValue = null;
39
- }
40
- break;
41
- case 'objectId':
42
- DefaultValue = null;
43
- max = 24;
44
- break;
45
- case 'boolean':
46
- DefaultValue = false;
47
- break;
48
- case 'number':
49
- DefaultValue = 0;
50
- max = 16;
51
- break;
52
- case 'array':
53
- DefaultValue = [];
54
- break;
55
- case 'date':
56
- if (!obj.Required) {
57
- DefaultValue = new Date();
58
- }
59
- break;
60
- case 'object':
61
- DefaultValue = null;
62
- if (obj.FieldType === 'Object') {
63
- DefaultValue = [];
64
- }
65
- break;
66
- default:
67
- break;
68
- }
69
- }
70
- schemas.push({
71
- InternalName: obj.key,
72
- Title: obj.Title,
73
- DisplayName: obj.Title,
74
- Type: obj.Type,
75
- FieldType: obj.FieldType,
76
- Required: obj.Required,
77
- ReadOnlyField: ReadOnlyField,
78
- Description: obj.Description,
79
- MaxLength: max > 0 ? max : 255,
80
- ListName: listname,
81
- Hidden: Hidden,
82
- Disable: false,
83
- DefaultValue: DefaultValue,
84
- Choices: obj.Choices,
85
- ChoiceCount: obj.Choices.length,
86
- keyboardType: obj.keyboardType,
87
- JsonOption: obj.json,
88
- ParentObject: obj.ParentObject,
89
- IsArray: obj.IsArray,
90
- _Children: obj.Children,
91
- });
92
- });
93
- resolve(schemas);
94
- });
95
- };
96
- const get_enum = (obj) => {
97
- let choices = [];
98
- if (obj.anyOf) {
99
- obj.anyOf.forEach((item) => {
100
- choices.push({
101
- id: item.title,
102
- name: item.title,
103
- });
104
- });
105
- }
106
- return choices;
107
- };
108
- const get_columns = async (formType, listname, ParentObject = '') => {
109
- var _a, _b;
110
- let columns = [];
111
- if (!schema) {
112
- try {
113
- schema = await (0, graphqlSchema_1.GetSchema)(withApollo_1.URL);
114
- }
115
- catch (e) {
116
- return columns;
117
- }
118
- }
119
- const introspection = (0, graphql_1.graphqlSync)(schema, (0, graphql_1.getIntrospectionQuery)()).data;
120
- const types = (0, graphql_2_json_schema_1.fromIntrospectionQuery)(introspection, {});
121
- let obj = undefined;
122
- if (formType === nuudel_utils_1.ControlMode.Edit) {
123
- obj =
124
- (_b = (_a = types.properties.Mutation.properties['update' + listname]) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b.arguments;
125
- }
126
- else if (formType === nuudel_utils_1.ControlMode.New) {
127
- obj = types.definitions[listname + 'Input'];
128
- }
129
- else if (formType === nuudel_utils_1.ControlMode.Display) {
130
- obj = types.definitions[listname];
131
- }
132
- else {
133
- obj = types.definitions[listname];
134
- }
135
- if (!obj) {
136
- window.location.href = '/404';
137
- return columns;
138
- }
139
- let fields = obj.properties;
140
- let flds = Object.keys(fields);
141
- for (let i = 0; i < flds.length; i++) {
142
- let key = flds[i];
143
- let Type = 'object', FieldType = 'Text', Description = '', Choices = [], Children = [], json = undefined, IsArray = false, keyboardType = 'default', Required = false;
144
- if (obj.required &&
145
- (obj.required instanceof Array || Array.isArray(obj.required))) {
146
- Required = obj.required.indexOf(key) >= 0;
147
- }
148
- if (types.definitions[listname] &&
149
- types.definitions[listname].properties[key] &&
150
- types.definitions[listname].properties[key].description) {
151
- Description = types.definitions[listname].properties[key].description;
152
- let arr = Description.match(/\{[^{}]*\}/gm);
153
- Description = Description.replace(/\{[^{}]*\}/gm, '');
154
- if (arr !== null && arr.length > 0) {
155
- json = JSON.parse(arr[0].replace(/\'/g, '"'));
156
- }
157
- }
158
- if (fields[key].type) {
159
- Type = fields[key].type;
160
- switch (Type) {
161
- case 'string':
162
- FieldType = 'Text';
163
- break;
164
- case 'boolean':
165
- FieldType = 'Boolean';
166
- break;
167
- case 'number':
168
- FieldType = 'Number';
169
- break;
170
- case 'array':
171
- FieldType = 'MultiChoice';
172
- break;
173
- default:
174
- break;
175
- }
176
- }
177
- switch (fields[key].$ref) {
178
- case '#/definitions/String':
179
- Type = 'string';
180
- FieldType = 'Text';
181
- break;
182
- case '#/definitions/Note':
183
- Type = 'string';
184
- FieldType = 'Note';
185
- break;
186
- case '#/definitions/ObjectId':
187
- Type = 'objectId';
188
- FieldType = !!json && !!json.list ? 'Lookup' : 'Text';
189
- break;
190
- case '#/definitions/Float':
191
- Type = 'number';
192
- FieldType = 'Number';
193
- keyboardType = 'decimal-pad';
194
- break;
195
- case '#/definitions/Int':
196
- Type = 'number';
197
- FieldType = 'Number';
198
- keyboardType = 'numeric';
199
- break;
200
- case '#/definitions/Boolean':
201
- Type = 'boolean';
202
- FieldType = 'Boolean';
203
- break;
204
- case '#/definitions/DateTime':
205
- Type = 'date';
206
- FieldType = 'DateTime';
207
- break;
208
- case '#/definitions/Link':
209
- Type = 'string';
210
- FieldType = 'Link';
211
- break;
212
- case '#/definitions/Lookup':
213
- Type = 'string';
214
- FieldType = 'Lookup';
215
- break;
216
- case '#/definitions/Image':
217
- case '#/definitions/ImageInput':
218
- Type = 'object';
219
- FieldType = 'Image';
220
- break;
221
- default:
222
- if (fields[key].type === 'array') {
223
- IsArray = true;
224
- Type = 'array';
225
- if (fields[key].items.$ref === '#/definitions/Lookup') {
226
- FieldType = 'LookupMulti';
227
- }
228
- else if (fields[key].items.$ref.startsWith('#/definitions/Image')) {
229
- FieldType = 'Image';
230
- }
231
- else if (fields[key].items.$ref.startsWith('#/definitions/')) {
232
- let enumName = types.definitions[listname].properties[key].items.$ref.substring(14);
233
- if ('ObjectId' === enumName) {
234
- FieldType = !!json && !!json.list ? 'LookupMulti' : 'Text';
235
- }
236
- else if (types.definitions[enumName].type === 'object') {
237
- Type = 'object';
238
- FieldType = 'Object';
239
- Children = await getFieldSchemasForForm(enumName, nuudel_utils_1.ControlMode.Display);
240
- Children = Children.filter((c) => !c.Title.startsWith('_'));
241
- }
242
- else {
243
- Choices = get_enum(types.definitions[enumName]);
244
- FieldType = 'MultiChoice';
245
- }
246
- }
247
- }
248
- else if (fields[key].$ref.startsWith('#/definitions/')) {
249
- let enumName = fields[key].$ref.substring(14);
250
- if (types.definitions[enumName].type === 'object') {
251
- Type = 'object';
252
- FieldType = '';
253
- let objs = await get_columns(nuudel_utils_1.ControlMode.Display, enumName, !!ParentObject ? ParentObject + '.' + key : key);
254
- objs = objs.filter((c) => !c.Title.startsWith('_'));
255
- columns.push(...objs);
256
- }
257
- else {
258
- Choices = get_enum(types.definitions[enumName]);
259
- Type = 'string';
260
- FieldType = 'Choice';
261
- }
262
- }
263
- break;
264
- }
265
- columns.push({
266
- key: !!ParentObject ? ParentObject + '.' + key : key,
267
- Title: key,
268
- Type,
269
- FieldType,
270
- Required,
271
- Description,
272
- keyboardType,
273
- Choices,
274
- json,
275
- ParentObject,
276
- IsArray,
277
- Children,
278
- });
279
- }
280
- return columns;
281
- };
282
- const getDataAll = (listname, columns, client, variables = {}) => {
283
- if (!listname || columns.length === 0) {
284
- return Promise.resolve({});
285
- }
286
- return new Promise(async (resolve, reject) => {
287
- listname = (0, nuudel_utils_2.capitalizeFirstLetter)(listname);
288
- let query = `query GetAllUser($sort: String, $limit: Int, $filter: String){
289
- getAll${listname} (limit: $limit, filter: $filter, sort: $sort){
290
- _id,
291
- ${typeof columns === 'string' ? columns : columns.join(', ')}
292
- }
293
- }`;
294
- let r = null;
295
- try {
296
- r = await client.query({
297
- query: (0, graphql_tag_1.default) `
298
- ${query}
299
- `,
300
- variables: Object.assign({ filter: '{}', sort: '{}', limit: 0 }, variables),
301
- fetchPolicy: 'no-cache',
302
- });
303
- }
304
- catch (error) {
305
- return reject(error);
306
- }
307
- if (r && r.data) {
308
- return resolve(r.data[`getAll${listname}`]);
309
- }
310
- else {
311
- return reject(r.error);
312
- }
313
- });
314
- };
315
- const addQuery = (listname, data, fieldsSchema) => {
316
- if (!fieldsSchema || fieldsSchema.length === 0) {
317
- return { query: '', inputs: {} };
318
- }
319
- let values = GetArrayValues(fieldsSchema, data, {});
320
- let keys = getSeletorsKey(GetJsonValues(listname === 'User'
321
- ? values.filter((v) => v.InternalName !== 'password')
322
- : values, true));
323
- let inputs = ArrayToObj(GetJsonValues(values));
324
- listname = (0, nuudel_utils_2.capitalizeFirstLetter)(listname);
325
- let query = `mutation Add${listname}($data: ${listname}Input!) {
326
- add${listname}(input${listname}: $data) {
327
- _id,
328
- ${keys}
329
- }
330
- }`;
331
- return { query, inputs };
332
- };
333
- const editQuery = (listname, itemId, data, originalData, fieldsSchema) => {
334
- if (!fieldsSchema || fieldsSchema.length === 0) {
335
- return '';
336
- }
337
- let values = GetArrayValues(fieldsSchema, data, originalData, true);
338
- let keys = getSeletorsKey(GetJsonValues(values, true));
339
- let formValues = GetJsonValues(values);
340
- formValues.push({ _id: itemId });
341
- let args = JSON.stringify(ArrayToObj(formValues));
342
- args = args
343
- .substring(1, args.length - 1)
344
- .replace(/\\"/g, '\uFFFF')
345
- .replace(/\"([^"]+)\":/g, '$1:')
346
- .replace(/\uFFFF/g, '\\"')
347
- .replace(/\"\{([^\{\}\"]*)\}\"/g, '$1');
348
- listname = (0, nuudel_utils_2.capitalizeFirstLetter)(listname);
349
- let query = `mutation {
350
- update${listname}(${args}) {
351
- _id
352
- ,${keys}
353
- }
354
- }`;
355
- return query;
356
- };
357
- const byIdQuery = (listname, itemId, fieldsSchema, withQuery = true) => {
358
- if (!fieldsSchema || fieldsSchema.length === 0) {
359
- return '';
360
- }
361
- let keys = getSeletorsKey(GetJsonValues(fieldsSchema, true));
362
- listname = (0, nuudel_utils_2.capitalizeFirstLetter)(listname);
363
- let query = `get${listname}(_id: "${itemId}") {
364
- createdAt,
365
- updatedAt,
366
- ${keys}
367
- }`;
368
- return !withQuery ? query : `query { ${query} }`;
369
- };
370
- const plural = (listname) => {
371
- if (listname.endsWith('s') ||
372
- listname.endsWith('sh') ||
373
- listname.endsWith('ch') ||
374
- listname.endsWith('x') ||
375
- listname.endsWith('z')) {
376
- listname += 'e';
377
- }
378
- else if (listname.endsWith('y')) {
379
- listname = listname.substring(0, listname.length - 1) + 'ie';
380
- }
381
- else if (listname.endsWith('f') || listname.endsWith('fe')) {
382
- listname =
383
- listname.substring(0, listname.length - (listname.endsWith('fe') ? 2 : 1)) + 've';
384
- }
385
- return listname;
386
- };
387
- const listQuery = (listname, fieldsSchema) => {
388
- if (!fieldsSchema || fieldsSchema.length === 0) {
389
- return '';
390
- }
391
- listname = (0, nuudel_utils_2.capitalizeFirstLetter)(listname);
392
- let keys = getSeletorsKey(GetJsonValues(fieldsSchema, true));
393
- let query = `query Get${plural(listname)}s($filter: String!, $sort: String!, $total: Int!, $skip: Int!, $take: Int!) {
394
- get${plural(listname)}s(filter: $filter, sort: $sort, total: $total, skip: $skip, take: $take) {
395
- itemSummaries {
396
- ${keys}
397
- },
398
- next,
399
- limit,
400
- offset,
401
- total
402
- }
403
- }`;
404
- return query;
405
- };
406
- const viewItems = async (listname, variables = {}, fieldsSchema = []) => {
407
- if (!fieldsSchema || fieldsSchema.length === 0) {
408
- fieldsSchema = await getFieldSchemasForForm(listname, nuudel_utils_1.ControlMode.New);
409
- }
410
- let query = viewQuery(listname, fieldsSchema);
411
- variables = Object.assign({ filter: '{}', sort: '{}', limit: 0 }, variables);
412
- return executeQuery(query, listname, nuudel_utils_1.QueryType.View, variables);
413
- };
414
- const viewQuery = (listname, fieldsSchema, withQuery = true) => {
415
- if (!fieldsSchema || fieldsSchema.length === 0) {
416
- return '';
417
- }
418
- listname = (0, nuudel_utils_2.capitalizeFirstLetter)(listname);
419
- if (listname === 'User') {
420
- fieldsSchema = fieldsSchema.filter((item) => item.InternalName !== 'password');
421
- }
422
- let formValues = GetJsonValues(fieldsSchema, true);
423
- let keys = getSeletorsKey(formValues);
424
- let query = `getAll${listname}(filter: $filter, sort: $sort, limit: $limit) {
425
- _id,
426
- createdAt,
427
- updatedAt,
428
- ${keys}
429
- }`;
430
- return withQuery
431
- ? `query GetAll${listname}($filter: String!, $sort: String!, $limit: Int!) {
432
- ${query}
433
- }`
434
- : query;
435
- };
436
- const itemById = async (listname, itemId, fieldsSchema = []) => {
437
- if (!listname || !itemId || itemId === '') {
438
- return Promise.resolve({});
439
- }
440
- if (!fieldsSchema || fieldsSchema.length === 0) {
441
- fieldsSchema = await getFieldSchemasForForm(listname, nuudel_utils_1.ControlMode.Display);
442
- }
443
- let query = byIdQuery(listname, itemId, fieldsSchema);
444
- return executeQuery(query, listname, nuudel_utils_1.QueryType.byId);
445
- };
446
- const deleteItem = (listname, itemId) => {
447
- let mutate = `mutation {
448
- delete${listname}(
449
- _id: "${itemId}"
450
- ) {
451
- _id
452
- }
453
- }`;
454
- return executeQuery(mutate, listname, nuudel_utils_1.QueryType.Remove);
455
- };
456
- const updateItem = async (listname, itemId, data, originalData = {}, fieldsSchema = []) => {
457
- if (!fieldsSchema || fieldsSchema.length === 0) {
458
- fieldsSchema = await getFieldSchemasForForm(listname, nuudel_utils_1.ControlMode.Edit);
459
- }
460
- let query = editQuery(listname, itemId, data, originalData, fieldsSchema);
461
- return executeQuery(query, listname, nuudel_utils_1.QueryType.Edit);
462
- };
463
- const createItem = async (listname, data, fieldsSchema = []) => {
464
- if (!fieldsSchema || fieldsSchema.length === 0) {
465
- fieldsSchema = await getFieldSchemasForForm(listname, nuudel_utils_1.ControlMode.New);
466
- }
467
- let obj = addQuery(listname, data, fieldsSchema);
468
- return executeQuery(obj.query, listname, nuudel_utils_1.QueryType.Add, obj.inputs);
469
- };
470
- const manyResources = async (listnames, filter = '{}', sort = '{}', limit = 200, userId = null) => {
471
- let query = '';
472
- let fieldsSchema;
473
- for (let i = 0; i < listnames.length; i++) {
474
- fieldsSchema = await getFieldSchemasForForm(listnames[i], nuudel_utils_1.ControlMode.Display);
475
- query += viewQuery(listnames[i], fieldsSchema, false);
476
- }
477
- if (!!userId) {
478
- fieldsSchema = await getFieldSchemasForForm('User', nuudel_utils_1.ControlMode.Display);
479
- query += byIdQuery('User', userId, fieldsSchema, false);
480
- }
481
- query = `query GetLists($filter: String!, $sort: String!, $limit: Int!){${query}}`;
482
- return executeQuery(query, '', nuudel_utils_1.QueryType.Many, {
483
- filter,
484
- sort,
485
- limit,
486
- });
487
- };
488
- const ArrayToObj = (list) => {
489
- let obj = {};
490
- for (let i = 0; i < list.length; i++) {
491
- if (typeof list[i] === 'object') {
492
- let keys = Object.keys(list[i]);
493
- if (keys.length === 1) {
494
- let data = list[i][keys[0]];
495
- if (data instanceof Array && data.length > 0) {
496
- obj[keys[0]] = ArrayToObj(data);
497
- }
498
- else
499
- obj[keys[0]] = data;
500
- }
501
- else {
502
- return list;
503
- }
504
- }
505
- else {
506
- return list;
507
- }
508
- }
509
- return obj;
510
- };
511
- const getSeletorsKey = (data) => {
512
- let keys = JSON.stringify(data);
513
- keys = keys
514
- .substring(1, keys.length - 1)
515
- .replace(/\}|\{|\:|\"/g, '')
516
- .replace(/\]/g, '}')
517
- .replace(/\[/g, '{');
518
- return keys;
519
- };
520
- const GetJsonValues = (list, keys = false) => {
521
- let map = {}, roots = [];
522
- for (let i = 0; i < list.length; i++) {
523
- map[list[i].InternalName] = i;
524
- list[i].children = [];
525
- }
526
- for (let i = 0; i < list.length; i++) {
527
- let node = list[i];
528
- const field = {
529
- [node.Title]: node.children.length > 0
530
- ? node.children
531
- : keys
532
- ? node._Children.length > 0
533
- ? GetJsonValues(node._Children, keys)
534
- : ''
535
- : node.value,
536
- };
537
- if (!!node.ParentObject) {
538
- if (!map.hasOwnProperty(node.ParentObject)) {
539
- map[node.ParentObject] = list.length;
540
- list.push({
541
- InternalName: node.ParentObject,
542
- Title: node.ParentObject.split('.').pop(),
543
- value: '',
544
- _Children: [],
545
- ParentObject: node.ParentObject.substring(0, node.ParentObject.lastIndexOf('.')),
546
- children: [],
547
- });
548
- }
549
- list[map[node.ParentObject]].children.push(field);
550
- }
551
- else {
552
- roots.push(field);
553
- }
554
- }
555
- return roots;
556
- };
557
- const GetArrayValues = (fieldsSchema, data, originalData, IsUpdate = false) => {
558
- return fieldsSchema
559
- .filter((field) => !field.ReadOnlyField &&
560
- field.InternalName in data &&
561
- (data[field.InternalName] !== null ||
562
- originalData[field.InternalName] !== null))
563
- .map((field, index, arr) => {
564
- let val = data[field.InternalName] === null &&
565
- typeof originalData[field.InternalName] !== 'undefined'
566
- ? originalData[field.InternalName]
567
- : data[field.InternalName];
568
- if (IsUpdate) {
569
- if (field.FieldType === 'MultiChoice' && field.Choices.length > 0) {
570
- val = '{[' + val.toString() + ']}';
571
- }
572
- else if (field.FieldType === 'Choice') {
573
- val = '{' + val + '}';
574
- }
575
- else if (field.FieldType === 'Object' &&
576
- field._Children.length > 0 &&
577
- val instanceof Array &&
578
- val.length > 0) {
579
- val = val.map((item) => {
580
- for (let i = 0; i < field._Children.length; i++) {
581
- if (field._Children[i].FieldType === 'MultiChoice' &&
582
- field._Children[i].Choices.length > 0) {
583
- if (item.hasOwnProperty(field._Children[i].InternalName)) {
584
- item[field._Children[i].InternalName] =
585
- '{[' +
586
- item[field._Children[i].InternalName].toString() +
587
- ']}';
588
- }
589
- else if (field._Children[i].ParentObject &&
590
- item.hasOwnProperty(field._Children[i].ParentObject)) {
591
- const fldname = field._Children[i].InternalName.replace(field._Children[i].ParentObject + '.', '');
592
- item[field._Children[i].ParentObject][fldname] =
593
- '{[' +
594
- item[field._Children[i].ParentObject][fldname].toString() +
595
- ']}';
596
- }
597
- }
598
- else if (field._Children[i].FieldType === 'Choice') {
599
- if (item.hasOwnProperty(field._Children[i].InternalName)) {
600
- item[field._Children[i].InternalName] =
601
- '{' + item[field._Children[i].InternalName] + '}';
602
- }
603
- else if (field._Children[i].ParentObject &&
604
- item.hasOwnProperty(field._Children[i].ParentObject)) {
605
- const fldname = field._Children[i].InternalName.replace(field._Children[i].ParentObject + '.', '');
606
- item[field._Children[i].ParentObject][fldname] =
607
- '{' + item[field._Children[i].ParentObject][fldname] + '}';
608
- }
609
- }
610
- }
611
- return item;
612
- });
613
- }
614
- }
615
- return {
616
- InternalName: field.InternalName,
617
- Title: field.Title,
618
- value: val,
619
- ParentObject: field.ParentObject,
620
- _Children: field._Children,
621
- FieldType: field.FieldType,
622
- };
623
- });
624
- };
625
- const getErrorMessage = (err) => {
626
- let errorMessage = '';
627
- if (err instanceof client_1.ApolloError) {
628
- errorMessage = (0, helper_1.onError)(err);
629
- }
630
- else {
631
- errorMessage =
632
- err.errors && err.errors instanceof Array
633
- ? err.errors.length > 0 && err.errors[0].message
634
- ? err.errors[0].message
635
- : err.errors
636
- : err;
637
- }
638
- return errorMessage;
639
- };
640
- const testList = async (listname) => {
641
- let re = { list: listname }, Id = '';
642
- try {
643
- let item = await generateData(listname);
644
- Id = item._id;
645
- re['created'] = true;
646
- await updateItem(listname, Id, (0, nuudel_utils_2.traverse)(item));
647
- re['edited'] = true;
648
- await viewItems(listname, {
649
- limit: 1,
650
- filter: `{"_id": "${Id}"}`,
651
- });
652
- re['view'] = true;
653
- await deleteItem(listname, Id);
654
- re['deleted'] = true;
655
- }
656
- catch (e) {
657
- console.warn(e);
658
- if (Id && Object.keys(re).length < 4) {
659
- await deleteItem(listname, Id);
660
- re['deleted'] = true;
661
- }
662
- }
663
- return re;
664
- };
665
- const generateData = async (listname) => {
666
- let data = {};
667
- const chars = [...'abcdef0123456789'];
668
- const fieldsSchema = await getFieldSchemasForForm(listname, nuudel_utils_1.ControlMode.New);
669
- fieldsSchema.forEach((field) => {
670
- let val = null;
671
- switch (field.Type) {
672
- case 'string':
673
- val = [...Array(Math.floor(Math.random() * 10 + 4))]
674
- .map((_) => ((Math.random() * 36) | 0).toString(36))
675
- .join('');
676
- if (field.FieldType === 'Choice') {
677
- if (field.Choices.length > 0)
678
- val =
679
- field.Choices[Math.floor(Math.random() * field.Choices.length)]
680
- .id;
681
- else
682
- val = null;
683
- }
684
- else if (field.FieldType === 'Link') {
685
- val = 'http://www.' + val + '.com';
686
- }
687
- else if (field.FieldType === 'Image') {
688
- val = { uri: val };
689
- }
690
- break;
691
- case 'boolean':
692
- val = Math.random() >= 0.5;
693
- break;
694
- case 'number':
695
- val = Math.floor(Math.random() * 1000);
696
- break;
697
- case 'array':
698
- val = [];
699
- if (field.FieldType === 'MultiChoice' && field.Choices.length > 0) {
700
- val = [
701
- field.Choices[Math.floor(Math.random() * field.Choices.length)].id,
702
- ];
703
- }
704
- else if (field.FieldType === 'Image') {
705
- val = [{ uri: '', width: 100, height: 50 }];
706
- }
707
- break;
708
- case 'date':
709
- val = new Date(Date.now() + 86400000).toLocaleDateString('en-US');
710
- break;
711
- case 'object':
712
- val = null;
713
- if (field.FieldType === 'Object') {
714
- val = [];
715
- }
716
- else if (field.FieldType === 'Image') {
717
- val = { uri: '' };
718
- }
719
- break;
720
- case 'objectId':
721
- val = [...Array(24)]
722
- .map((i) => chars[(Math.random() * chars.length) | 0])
723
- .join('');
724
- break;
725
- default:
726
- break;
727
- }
728
- data[field.InternalName] = val;
729
- });
730
- return createItem(listname, data, fieldsSchema);
731
- };
732
- const executeQuery = (query, listname, type, variables = {}) => {
733
- if ((!listname && type !== nuudel_utils_1.QueryType.Many) || !query) {
734
- return Promise.resolve(type === nuudel_utils_1.QueryType.View ? [] : {});
735
- }
736
- return new Promise(async (resolve, reject) => {
737
- let r = null;
738
- let pre = '', post = '';
739
- if (typeof type === 'string') {
740
- pre = type;
741
- }
742
- switch (type) {
743
- case nuudel_utils_1.QueryType.Add:
744
- pre = 'add';
745
- break;
746
- case nuudel_utils_1.QueryType.Edit:
747
- pre = 'update';
748
- break;
749
- case nuudel_utils_1.QueryType.Remove:
750
- pre = 'delete';
751
- break;
752
- case nuudel_utils_1.QueryType.byId:
753
- pre = 'get';
754
- break;
755
- case nuudel_utils_1.QueryType.View:
756
- pre = 'getAll';
757
- break;
758
- case nuudel_utils_1.QueryType.List:
759
- pre = 'get';
760
- post = 's';
761
- break;
762
- default:
763
- break;
764
- }
765
- try {
766
- if (query.startsWith('query')) {
767
- r = await client.query({
768
- query: (0, graphql_tag_1.default) `
769
- ${query}
770
- `,
771
- variables: variables,
772
- fetchPolicy: 'no-cache',
773
- });
774
- }
775
- else {
776
- r = await client.mutate({
777
- mutation: (0, graphql_tag_1.default) `
778
- ${query}
779
- `,
780
- variables: {
781
- data: variables,
782
- },
783
- fetchPolicy: 'no-cache',
784
- });
785
- }
786
- }
787
- catch (error) {
788
- (0, helper_1.onErrors)(error);
789
- return reject(getErrorMessage(error));
790
- }
791
- if (r) {
792
- await (0, helper_1.clientError)(r);
793
- if (r.data)
794
- return resolve(!listname
795
- ? r.data
796
- : r.data[`${pre}${(0, nuudel_utils_2.getPlural)(listname, post)}${post}`]);
797
- else
798
- return resolve(type === nuudel_utils_1.QueryType.View ? [] : {});
799
- }
800
- else {
801
- return reject(getErrorMessage(r));
802
- }
803
- });
804
- };
805
- exports.ListFormService = {
806
- client,
807
- getFieldSchemasForForm,
808
- itemById,
809
- createItem,
810
- updateItem,
811
- deleteItem,
812
- viewItems,
813
- listQuery,
814
- executeQuery,
815
- getDataAll,
816
- generateData,
817
- manyResources,
818
- };
819
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlzdEZvcm1TZXJ2aWNlLmpzeCIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvTGlzdEZvcm1TZXJ2aWNlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQ0FBc0Q7QUFHdEQsMkNBQTJEO0FBQzNELDhEQUE4QjtBQUM5QixxQ0FNaUI7QUFDakIsaUVBQStEO0FBQy9ELG1EQUF1RDtBQUN2RCw2REFBc0Q7QUFDdEQsK0NBQTBFO0FBQzFFLDZDQUFrRTtBQWlCbEUsSUFBSSxNQUFNLEdBQXNCLElBQUEseUJBQVksR0FBRSxDQUFDO0FBQy9DLElBQUksTUFBTSxHQUFrQixJQUFJLENBQUM7QUFRakMsTUFBTSxzQkFBc0IsR0FBRyxDQUM3QixRQUFnQixFQUNoQixXQUF3QiwwQkFBVyxDQUFDLE9BQU8sRUFDbEIsRUFBRTtJQUMzQixPQUFPLElBQUksT0FBTyxDQUFpQixLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzNELElBQUksT0FBTyxHQUFtQixFQUFFLENBQUM7UUFDakMsSUFBSSxPQUFPLEdBQVUsTUFBTSxXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0QixJQUFJLE1BQU0sR0FBRyxLQUFLLEVBQ2hCLFlBQVksR0FBUSxJQUFJLEVBQ3hCLEdBQUcsR0FBVyxDQUFDLEVBQ2YsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFO2dCQUNyQixNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNkLGFBQWEsR0FBRyxJQUFJLENBQUM7YUFDdEI7aUJBQU0sSUFDTCxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxHQUFHLEtBQUssV0FBVztnQkFDdkIs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