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