@saltcorn/data 0.6.1-beta.3 → 0.6.2-beta.2

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 (555) hide show
  1. package/dist/base-plugin/actions.d.ts +141 -0
  2. package/dist/base-plugin/actions.d.ts.map +1 -0
  3. package/dist/base-plugin/actions.js +551 -0
  4. package/dist/base-plugin/actions.js.map +1 -0
  5. package/dist/base-plugin/base.test.d.ts +2 -0
  6. package/dist/base-plugin/base.test.d.ts.map +1 -0
  7. package/dist/base-plugin/base.test.js +15 -0
  8. package/dist/base-plugin/base.test.js.map +1 -0
  9. package/dist/base-plugin/fieldviews.d.ts +25 -0
  10. package/dist/base-plugin/fieldviews.d.ts.map +1 -0
  11. package/dist/base-plugin/fieldviews.js +159 -0
  12. package/dist/base-plugin/fieldviews.js.map +1 -0
  13. package/dist/base-plugin/fileviews.d.ts +52 -0
  14. package/dist/base-plugin/fileviews.d.ts.map +1 -0
  15. package/dist/base-plugin/fileviews.js +59 -0
  16. package/dist/base-plugin/fileviews.js.map +1 -0
  17. package/dist/base-plugin/index.d.ts +524 -0
  18. package/dist/base-plugin/index.d.ts.map +1 -0
  19. package/{base-plugin → dist/base-plugin}/index.js +22 -24
  20. package/dist/base-plugin/index.js.map +1 -0
  21. package/dist/base-plugin/types.d.ts +383 -0
  22. package/dist/base-plugin/types.d.ts.map +1 -0
  23. package/dist/base-plugin/types.js +1080 -0
  24. package/dist/base-plugin/types.js.map +1 -0
  25. package/dist/base-plugin/viewtemplates/edit.d.ts +116 -0
  26. package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -0
  27. package/dist/base-plugin/viewtemplates/edit.js +561 -0
  28. package/dist/base-plugin/viewtemplates/edit.js.map +1 -0
  29. package/dist/base-plugin/viewtemplates/feed.d.ts +73 -0
  30. package/dist/base-plugin/viewtemplates/feed.d.ts.map +1 -0
  31. package/dist/base-plugin/viewtemplates/feed.js +348 -0
  32. package/dist/base-plugin/viewtemplates/feed.js.map +1 -0
  33. package/dist/base-plugin/viewtemplates/filter.d.ts +46 -0
  34. package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -0
  35. package/dist/base-plugin/viewtemplates/filter.js +267 -0
  36. package/dist/base-plugin/viewtemplates/filter.js.map +1 -0
  37. package/dist/base-plugin/viewtemplates/list.d.ts +99 -0
  38. package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -0
  39. package/dist/base-plugin/viewtemplates/list.js +471 -0
  40. package/dist/base-plugin/viewtemplates/list.js.map +1 -0
  41. package/dist/base-plugin/viewtemplates/listshowlist.d.ts +41 -0
  42. package/dist/base-plugin/viewtemplates/listshowlist.d.ts.map +1 -0
  43. package/dist/base-plugin/viewtemplates/listshowlist.js +248 -0
  44. package/dist/base-plugin/viewtemplates/listshowlist.js.map +1 -0
  45. package/dist/base-plugin/viewtemplates/room.d.ts +140 -0
  46. package/dist/base-plugin/viewtemplates/room.d.ts.map +1 -0
  47. package/dist/base-plugin/viewtemplates/room.js +469 -0
  48. package/dist/base-plugin/viewtemplates/room.js.map +1 -0
  49. package/dist/base-plugin/viewtemplates/show.d.ts +101 -0
  50. package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -0
  51. package/dist/base-plugin/viewtemplates/show.js +562 -0
  52. package/dist/base-plugin/viewtemplates/show.js.map +1 -0
  53. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +108 -0
  54. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -0
  55. package/dist/base-plugin/viewtemplates/viewable_fields.js +563 -0
  56. package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -0
  57. package/dist/contracts.d.ts +49 -0
  58. package/dist/contracts.d.ts.map +1 -0
  59. package/dist/contracts.js +212 -0
  60. package/dist/contracts.js.map +1 -0
  61. package/dist/coverage/lcov-report/block-navigation.d.ts +2 -0
  62. package/dist/coverage/lcov-report/block-navigation.d.ts.map +1 -0
  63. package/dist/coverage/lcov-report/block-navigation.js +66 -0
  64. package/dist/coverage/lcov-report/block-navigation.js.map +1 -0
  65. package/dist/coverage/lcov-report/prettify.d.ts +1 -0
  66. package/dist/coverage/lcov-report/prettify.d.ts.map +1 -0
  67. package/dist/coverage/lcov-report/prettify.js +478 -0
  68. package/dist/coverage/lcov-report/prettify.js.map +1 -0
  69. package/dist/coverage/lcov-report/sorter.d.ts +2 -0
  70. package/dist/coverage/lcov-report/sorter.d.ts.map +1 -0
  71. package/dist/coverage/lcov-report/sorter.js +141 -0
  72. package/dist/coverage/lcov-report/sorter.js.map +1 -0
  73. package/dist/db/connect.d.ts +40 -0
  74. package/dist/db/connect.d.ts.map +1 -0
  75. package/dist/db/connect.js +150 -0
  76. package/dist/db/connect.js.map +1 -0
  77. package/dist/db/db.test.d.ts +2 -0
  78. package/dist/db/db.test.d.ts.map +1 -0
  79. package/dist/db/db.test.js +28 -0
  80. package/dist/db/db.test.js.map +1 -0
  81. package/dist/db/fixtures.d.ts +8 -0
  82. package/dist/db/fixtures.d.ts.map +1 -0
  83. package/dist/db/fixtures.js +300 -0
  84. package/dist/db/fixtures.js.map +1 -0
  85. package/dist/db/index.d.ts +3 -0
  86. package/dist/db/index.d.ts.map +1 -0
  87. package/dist/db/index.js +41 -0
  88. package/dist/db/index.js.map +1 -0
  89. package/dist/db/reset_schema.d.ts +13 -0
  90. package/dist/db/reset_schema.d.ts.map +1 -0
  91. package/{db → dist/db}/reset_schema.js +45 -55
  92. package/dist/db/reset_schema.js.map +1 -0
  93. package/dist/db/state.d.ts +56 -0
  94. package/dist/db/state.d.ts.map +1 -0
  95. package/dist/db/state.js +608 -0
  96. package/dist/db/state.js.map +1 -0
  97. package/dist/index.d.ts +2 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/{index.js → dist/index.js} +2 -1
  100. package/dist/index.js.map +1 -0
  101. package/dist/migrate.d.ts +12 -0
  102. package/dist/migrate.d.ts.map +1 -0
  103. package/dist/migrate.js +94 -0
  104. package/dist/migrate.js.map +1 -0
  105. package/dist/migrations/202005141503.d.ts +2 -0
  106. package/dist/migrations/202005141503.d.ts.map +1 -0
  107. package/{migrations → dist/migrations}/202005141503.js +2 -1
  108. package/dist/migrations/202005141503.js.map +1 -0
  109. package/dist/migrations/202005241712.d.ts +2 -0
  110. package/dist/migrations/202005241712.d.ts.map +1 -0
  111. package/{migrations → dist/migrations}/202005241712.js +2 -1
  112. package/dist/migrations/202005241712.js.map +1 -0
  113. package/dist/migrations/202005251037.d.ts +2 -0
  114. package/dist/migrations/202005251037.d.ts.map +1 -0
  115. package/{migrations → dist/migrations}/202005251037.js +2 -1
  116. package/dist/migrations/202005251037.js.map +1 -0
  117. package/dist/migrations/202005282134.d.ts +2 -0
  118. package/dist/migrations/202005282134.d.ts.map +1 -0
  119. package/{migrations → dist/migrations}/202005282134.js +2 -1
  120. package/dist/migrations/202005282134.js.map +1 -0
  121. package/dist/migrations/202006022156.d.ts +2 -0
  122. package/dist/migrations/202006022156.d.ts.map +1 -0
  123. package/{migrations → dist/migrations}/202006022156.js +2 -1
  124. package/dist/migrations/202006022156.js.map +1 -0
  125. package/dist/migrations/202006051507.d.ts +2 -0
  126. package/dist/migrations/202006051507.d.ts.map +1 -0
  127. package/{migrations → dist/migrations}/202006051507.js +2 -1
  128. package/dist/migrations/202006051507.js.map +1 -0
  129. package/dist/migrations/202006240906.d.ts +2 -0
  130. package/dist/migrations/202006240906.d.ts.map +1 -0
  131. package/{migrations → dist/migrations}/202006240906.js +2 -1
  132. package/dist/migrations/202006240906.js.map +1 -0
  133. package/dist/migrations/202007091707.d.ts +2 -0
  134. package/dist/migrations/202007091707.d.ts.map +1 -0
  135. package/{migrations → dist/migrations}/202007091707.js +2 -1
  136. package/dist/migrations/202007091707.js.map +1 -0
  137. package/dist/migrations/202007202144.d.ts +2 -0
  138. package/dist/migrations/202007202144.d.ts.map +1 -0
  139. package/{migrations → dist/migrations}/202007202144.js +2 -1
  140. package/dist/migrations/202007202144.js.map +1 -0
  141. package/dist/migrations/202008031500.d.ts +2 -0
  142. package/dist/migrations/202008031500.d.ts.map +1 -0
  143. package/dist/migrations/202008031500.js +4 -0
  144. package/dist/migrations/202008031500.js.map +1 -0
  145. package/dist/migrations/202008051415.d.ts +2 -0
  146. package/dist/migrations/202008051415.d.ts.map +1 -0
  147. package/{migrations → dist/migrations}/202008051415.js +2 -1
  148. package/dist/migrations/202008051415.js.map +1 -0
  149. package/dist/migrations/202008121149.d.ts +3 -0
  150. package/dist/migrations/202008121149.d.ts.map +1 -0
  151. package/{migrations → dist/migrations}/202008121149.js +2 -2
  152. package/dist/migrations/202008121149.js.map +1 -0
  153. package/dist/migrations/202009112140.d.ts +3 -0
  154. package/dist/migrations/202009112140.d.ts.map +1 -0
  155. package/{migrations → dist/migrations}/202009112140.js +2 -2
  156. package/dist/migrations/202009112140.js.map +1 -0
  157. package/dist/migrations/202009181655.d.ts +2 -0
  158. package/dist/migrations/202009181655.d.ts.map +1 -0
  159. package/dist/migrations/202009181655.js +7 -0
  160. package/dist/migrations/202009181655.js.map +1 -0
  161. package/dist/migrations/202009221105.d.ts +2 -0
  162. package/dist/migrations/202009221105.d.ts.map +1 -0
  163. package/dist/migrations/202009221105.js +4 -0
  164. package/dist/migrations/202009221105.js.map +1 -0
  165. package/dist/migrations/202009231331.d.ts +2 -0
  166. package/dist/migrations/202009231331.d.ts.map +1 -0
  167. package/{migrations → dist/migrations}/202009231331.js +2 -1
  168. package/dist/migrations/202009231331.js.map +1 -0
  169. package/dist/migrations/202009301531.d.ts +2 -0
  170. package/dist/migrations/202009301531.d.ts.map +1 -0
  171. package/dist/migrations/202009301531.js +8 -0
  172. package/dist/migrations/202009301531.js.map +1 -0
  173. package/dist/migrations/202010231444.d.ts +2 -0
  174. package/dist/migrations/202010231444.d.ts.map +1 -0
  175. package/dist/migrations/202010231444.js +4 -0
  176. package/dist/migrations/202010231444.js.map +1 -0
  177. package/dist/migrations/202010251412.d.ts +2 -0
  178. package/dist/migrations/202010251412.d.ts.map +1 -0
  179. package/dist/migrations/202010251412.js +10 -0
  180. package/dist/migrations/202010251412.js.map +1 -0
  181. package/dist/migrations/202011021749.d.ts +2 -0
  182. package/dist/migrations/202011021749.d.ts.map +1 -0
  183. package/{migrations → dist/migrations}/202011021749.js +2 -1
  184. package/dist/migrations/202011021749.js.map +1 -0
  185. package/dist/migrations/202011051353.d.ts +2 -0
  186. package/dist/migrations/202011051353.d.ts.map +1 -0
  187. package/{migrations → dist/migrations}/202011051353.js +2 -1
  188. package/dist/migrations/202011051353.js.map +1 -0
  189. package/dist/migrations/202011111127.d.ts +2 -0
  190. package/dist/migrations/202011111127.d.ts.map +1 -0
  191. package/{migrations → dist/migrations}/202011111127.js +2 -1
  192. package/dist/migrations/202011111127.js.map +1 -0
  193. package/dist/migrations/202012011203.d.ts +2 -0
  194. package/dist/migrations/202012011203.d.ts.map +1 -0
  195. package/{migrations → dist/migrations}/202012011203.js +2 -1
  196. package/dist/migrations/202012011203.js.map +1 -0
  197. package/dist/migrations/202012100841.d.ts +2 -0
  198. package/dist/migrations/202012100841.d.ts.map +1 -0
  199. package/{migrations → dist/migrations}/202012100841.js +2 -1
  200. package/dist/migrations/202012100841.js.map +1 -0
  201. package/dist/migrations/202012281835.d.ts +2 -0
  202. package/dist/migrations/202012281835.d.ts.map +1 -0
  203. package/{migrations → dist/migrations}/202012281835.js +2 -1
  204. package/dist/migrations/202012281835.js.map +1 -0
  205. package/dist/migrations/202101061051.d.ts +2 -0
  206. package/dist/migrations/202101061051.d.ts.map +1 -0
  207. package/{migrations → dist/migrations}/202101061051.js +2 -1
  208. package/dist/migrations/202101061051.js.map +1 -0
  209. package/dist/migrations/202101141128.d.ts +2 -0
  210. package/dist/migrations/202101141128.d.ts.map +1 -0
  211. package/dist/migrations/202101141128.js +4 -0
  212. package/dist/migrations/202101141128.js.map +1 -0
  213. package/dist/migrations/202102091312.d.ts +3 -0
  214. package/dist/migrations/202102091312.d.ts.map +1 -0
  215. package/dist/migrations/202102091312.js +19 -0
  216. package/dist/migrations/202102091312.js.map +1 -0
  217. package/dist/migrations/202102101624.d.ts +2 -0
  218. package/dist/migrations/202102101624.d.ts.map +1 -0
  219. package/dist/migrations/202102101624.js +7 -0
  220. package/dist/migrations/202102101624.js.map +1 -0
  221. package/dist/migrations/202102172148.d.ts +2 -0
  222. package/dist/migrations/202102172148.d.ts.map +1 -0
  223. package/{migrations → dist/migrations}/202102172148.js +2 -2
  224. package/dist/migrations/202102172148.js.map +1 -0
  225. package/dist/migrations/202102261650.d.ts +2 -0
  226. package/dist/migrations/202102261650.d.ts.map +1 -0
  227. package/dist/migrations/202102261650.js +7 -0
  228. package/dist/migrations/202102261650.js.map +1 -0
  229. package/dist/migrations/202106102347.d.ts +2 -0
  230. package/dist/migrations/202106102347.d.ts.map +1 -0
  231. package/{migrations → dist/migrations}/202106102347.js +2 -3
  232. package/dist/migrations/202106102347.js.map +1 -0
  233. package/dist/migrations/202106112120.d.ts +2 -0
  234. package/dist/migrations/202106112120.d.ts.map +1 -0
  235. package/{migrations → dist/migrations}/202106112120.js +2 -3
  236. package/dist/migrations/202106112120.js.map +1 -0
  237. package/dist/migrations/202106120012.d.ts +2 -0
  238. package/dist/migrations/202106120012.d.ts.map +1 -0
  239. package/{migrations → dist/migrations}/202106120012.js +2 -3
  240. package/dist/migrations/202106120012.js.map +1 -0
  241. package/dist/migrations/202106120220.d.ts +2 -0
  242. package/dist/migrations/202106120220.d.ts.map +1 -0
  243. package/{migrations → dist/migrations}/202106120220.js +2 -4
  244. package/dist/migrations/202106120220.js.map +1 -0
  245. package/dist/migrations/202106121701.d.ts +2 -0
  246. package/dist/migrations/202106121701.d.ts.map +1 -0
  247. package/{migrations → dist/migrations}/202106121701.js +2 -3
  248. package/dist/migrations/202106121701.js.map +1 -0
  249. package/dist/migrations/202106121703.d.ts +3 -0
  250. package/dist/migrations/202106121703.d.ts.map +1 -0
  251. package/{migrations → dist/migrations}/202106121703.js +2 -3
  252. package/dist/migrations/202106121703.js.map +1 -0
  253. package/dist/migrations/202106251126.d.ts +2 -0
  254. package/dist/migrations/202106251126.d.ts.map +1 -0
  255. package/dist/migrations/202106251126.js +6 -0
  256. package/dist/migrations/202106251126.js.map +1 -0
  257. package/dist/migrations/202107281619.d.ts +2 -0
  258. package/dist/migrations/202107281619.d.ts.map +1 -0
  259. package/{migrations → dist/migrations}/202107281619.js +2 -1
  260. package/dist/migrations/202107281619.js.map +1 -0
  261. package/dist/migrations/202107302158.d.ts +3 -0
  262. package/dist/migrations/202107302158.d.ts.map +1 -0
  263. package/{migrations → dist/migrations}/202107302158.js +2 -3
  264. package/dist/migrations/202107302158.js.map +1 -0
  265. package/dist/migrations/202108022257.d.ts +2 -0
  266. package/dist/migrations/202108022257.d.ts.map +1 -0
  267. package/{migrations → dist/migrations}/202108022257.js +3 -4
  268. package/dist/migrations/202108022257.js.map +1 -0
  269. package/dist/migrations/202109201624.d.ts +2 -0
  270. package/dist/migrations/202109201624.d.ts.map +1 -0
  271. package/{migrations → dist/migrations}/202109201624.js +2 -1
  272. package/dist/migrations/202109201624.js.map +1 -0
  273. package/dist/migrations/202109301031.d.ts +3 -0
  274. package/dist/migrations/202109301031.d.ts.map +1 -0
  275. package/{migrations → dist/migrations}/202109301031.js +2 -2
  276. package/dist/migrations/202109301031.js.map +1 -0
  277. package/dist/migrations/202111290253.d.ts +3 -0
  278. package/dist/migrations/202111290253.d.ts.map +1 -0
  279. package/dist/migrations/202111290253.js +5 -0
  280. package/dist/migrations/202111290253.js.map +1 -0
  281. package/dist/models/backup.d.ts +22 -0
  282. package/dist/models/backup.d.ts.map +1 -0
  283. package/{models → dist/models}/backup.js +95 -192
  284. package/dist/models/backup.js.map +1 -0
  285. package/dist/models/config.d.ts +177 -0
  286. package/dist/models/config.d.ts.map +1 -0
  287. package/dist/models/config.js +683 -0
  288. package/dist/models/config.js.map +1 -0
  289. package/dist/models/crash.d.ts +74 -0
  290. package/dist/models/crash.d.ts.map +1 -0
  291. package/dist/models/crash.js +118 -0
  292. package/dist/models/crash.js.map +1 -0
  293. package/dist/models/discovery.d.ts +28 -0
  294. package/dist/models/discovery.d.ts.map +1 -0
  295. package/dist/models/discovery.js +163 -0
  296. package/dist/models/discovery.js.map +1 -0
  297. package/dist/models/email.d.ts +16 -0
  298. package/dist/models/email.d.ts.map +1 -0
  299. package/dist/models/email.js +90 -0
  300. package/dist/models/email.js.map +1 -0
  301. package/dist/models/eventlog.d.ts +77 -0
  302. package/dist/models/eventlog.d.ts.map +1 -0
  303. package/dist/models/eventlog.js +132 -0
  304. package/dist/models/eventlog.js.map +1 -0
  305. package/dist/models/expression.d.ts +54 -0
  306. package/dist/models/expression.d.ts.map +1 -0
  307. package/dist/models/expression.js +274 -0
  308. package/dist/models/expression.js.map +1 -0
  309. package/dist/models/field.d.ts +217 -0
  310. package/dist/models/field.d.ts.map +1 -0
  311. package/dist/models/field.js +619 -0
  312. package/dist/models/field.js.map +1 -0
  313. package/dist/models/fieldrepeat.d.ts +49 -0
  314. package/dist/models/fieldrepeat.d.ts.map +1 -0
  315. package/dist/models/fieldrepeat.js +88 -0
  316. package/dist/models/fieldrepeat.js.map +1 -0
  317. package/dist/models/file.d.ts +122 -0
  318. package/dist/models/file.d.ts.map +1 -0
  319. package/dist/models/file.js +224 -0
  320. package/dist/models/file.js.map +1 -0
  321. package/dist/models/form.d.ts +82 -0
  322. package/dist/models/form.d.ts.map +1 -0
  323. package/dist/models/form.js +163 -0
  324. package/dist/models/form.js.map +1 -0
  325. package/dist/models/index.d.ts +1 -0
  326. package/dist/models/index.d.ts.map +1 -0
  327. package/{models → dist/models}/index.js +42 -42
  328. package/dist/models/index.js.map +1 -0
  329. package/dist/models/layout.d.ts +34 -0
  330. package/dist/models/layout.d.ts.map +1 -0
  331. package/dist/models/layout.js +153 -0
  332. package/dist/models/layout.js.map +1 -0
  333. package/dist/models/library.d.ts +50 -0
  334. package/dist/models/library.d.ts.map +1 -0
  335. package/dist/models/library.js +129 -0
  336. package/dist/models/library.js.map +1 -0
  337. package/dist/models/pack.d.ts +89 -0
  338. package/dist/models/pack.d.ts.map +1 -0
  339. package/dist/models/pack.js +383 -0
  340. package/dist/models/pack.js.map +1 -0
  341. package/dist/models/page.d.ts +101 -0
  342. package/dist/models/page.d.ts.map +1 -0
  343. package/dist/models/page.js +223 -0
  344. package/dist/models/page.js.map +1 -0
  345. package/dist/models/plugin.d.ts +100 -0
  346. package/dist/models/plugin.d.ts.map +1 -0
  347. package/dist/models/plugin.js +204 -0
  348. package/dist/models/plugin.js.map +1 -0
  349. package/dist/models/random.d.ts +24 -0
  350. package/dist/models/random.d.ts.map +1 -0
  351. package/dist/models/random.js +186 -0
  352. package/dist/models/random.js.map +1 -0
  353. package/dist/models/role.d.ts +42 -0
  354. package/dist/models/role.d.ts.map +1 -0
  355. package/dist/models/role.js +64 -0
  356. package/dist/models/role.js.map +1 -0
  357. package/dist/models/scheduler.d.ts +18 -0
  358. package/dist/models/scheduler.d.ts.map +1 -0
  359. package/dist/models/scheduler.js +159 -0
  360. package/dist/models/scheduler.js.map +1 -0
  361. package/dist/models/table.d.ts +326 -0
  362. package/dist/models/table.d.ts.map +1 -0
  363. package/dist/models/table.js +1006 -0
  364. package/dist/models/table.js.map +1 -0
  365. package/dist/models/table_constraints.d.ts +69 -0
  366. package/dist/models/table_constraints.d.ts.map +1 -0
  367. package/dist/models/table_constraints.js +118 -0
  368. package/dist/models/table_constraints.js.map +1 -0
  369. package/dist/models/tenant.d.ts +55 -0
  370. package/dist/models/tenant.d.ts.map +1 -0
  371. package/{models → dist/models}/tenant.js +40 -63
  372. package/dist/models/tenant.js.map +1 -0
  373. package/dist/models/trigger.d.ts +133 -0
  374. package/dist/models/trigger.d.ts.map +1 -0
  375. package/dist/models/trigger.js +292 -0
  376. package/dist/models/trigger.js.map +1 -0
  377. package/dist/models/user.d.ts +235 -0
  378. package/dist/models/user.d.ts.map +1 -0
  379. package/dist/models/user.js +434 -0
  380. package/dist/models/user.js.map +1 -0
  381. package/dist/models/view.d.ts +204 -0
  382. package/dist/models/view.d.ts.map +1 -0
  383. package/dist/models/view.js +497 -0
  384. package/dist/models/view.js.map +1 -0
  385. package/dist/models/workflow.d.ts +48 -0
  386. package/dist/models/workflow.d.ts.map +1 -0
  387. package/dist/models/workflow.js +190 -0
  388. package/dist/models/workflow.js.map +1 -0
  389. package/dist/plugin-helper.d.ts +145 -0
  390. package/dist/plugin-helper.d.ts.map +1 -0
  391. package/dist/plugin-helper.js +1158 -0
  392. package/dist/plugin-helper.js.map +1 -0
  393. package/dist/plugin-testing.d.ts +3 -0
  394. package/dist/plugin-testing.d.ts.map +1 -0
  395. package/dist/plugin-testing.js +120 -0
  396. package/dist/plugin-testing.js.map +1 -0
  397. package/dist/tests/actions.test.d.ts +2 -0
  398. package/dist/tests/actions.test.d.ts.map +1 -0
  399. package/dist/tests/actions.test.js +205 -0
  400. package/dist/tests/actions.test.js.map +1 -0
  401. package/dist/tests/auxtest.test.d.ts +2 -0
  402. package/dist/tests/auxtest.test.d.ts.map +1 -0
  403. package/dist/tests/auxtest.test.js +48 -0
  404. package/dist/tests/auxtest.test.js.map +1 -0
  405. package/dist/tests/backup.test.d.ts +2 -0
  406. package/dist/tests/backup.test.d.ts.map +1 -0
  407. package/dist/tests/backup.test.js +88 -0
  408. package/dist/tests/backup.test.js.map +1 -0
  409. package/dist/tests/calc.test.d.ts +2 -0
  410. package/dist/tests/calc.test.d.ts.map +1 -0
  411. package/dist/tests/calc.test.js +231 -0
  412. package/dist/tests/calc.test.js.map +1 -0
  413. package/dist/tests/config.test.d.ts +2 -0
  414. package/dist/tests/config.test.d.ts.map +1 -0
  415. package/dist/tests/config.test.js +83 -0
  416. package/dist/tests/config.test.js.map +1 -0
  417. package/dist/tests/discover.test.d.ts +2 -0
  418. package/dist/tests/discover.test.d.ts.map +1 -0
  419. package/dist/tests/discover.test.js +106 -0
  420. package/dist/tests/discover.test.js.map +1 -0
  421. package/dist/tests/exact_views.test.d.ts +2 -0
  422. package/dist/tests/exact_views.test.d.ts.map +1 -0
  423. package/dist/tests/exact_views.test.js +511 -0
  424. package/dist/tests/exact_views.test.js.map +1 -0
  425. package/dist/tests/field.test.d.ts +2 -0
  426. package/dist/tests/field.test.d.ts.map +1 -0
  427. package/dist/tests/field.test.js +237 -0
  428. package/dist/tests/field.test.js.map +1 -0
  429. package/dist/tests/form.test.d.ts +2 -0
  430. package/dist/tests/form.test.d.ts.map +1 -0
  431. package/dist/tests/form.test.js +191 -0
  432. package/dist/tests/form.test.js.map +1 -0
  433. package/dist/tests/mocks.d.ts +111 -0
  434. package/dist/tests/mocks.d.ts.map +1 -0
  435. package/dist/tests/mocks.js +165 -0
  436. package/dist/tests/mocks.js.map +1 -0
  437. package/dist/tests/models.test.d.ts +2 -0
  438. package/dist/tests/models.test.d.ts.map +1 -0
  439. package/dist/tests/models.test.js +210 -0
  440. package/dist/tests/models.test.js.map +1 -0
  441. package/dist/tests/pack.test.d.ts +2 -0
  442. package/dist/tests/pack.test.d.ts.map +1 -0
  443. package/dist/tests/pack.test.js +331 -0
  444. package/dist/tests/pack.test.js.map +1 -0
  445. package/dist/tests/plugin.test.d.ts +2 -0
  446. package/dist/tests/plugin.test.d.ts.map +1 -0
  447. package/dist/tests/plugin.test.js +53 -0
  448. package/dist/tests/plugin.test.js.map +1 -0
  449. package/dist/tests/random.test.d.ts +2 -0
  450. package/dist/tests/random.test.d.ts.map +1 -0
  451. package/dist/tests/random.test.js +138 -0
  452. package/dist/tests/random.test.js.map +1 -0
  453. package/dist/tests/table.test.d.ts +2 -0
  454. package/dist/tests/table.test.d.ts.map +1 -0
  455. package/dist/tests/table.test.js +1048 -0
  456. package/dist/tests/table.test.js.map +1 -0
  457. package/dist/tests/tenant.test.d.ts +2 -0
  458. package/dist/tests/tenant.test.d.ts.map +1 -0
  459. package/dist/tests/tenant.test.js +45 -0
  460. package/dist/tests/tenant.test.js.map +1 -0
  461. package/dist/tests/user.test.d.ts +2 -0
  462. package/dist/tests/user.test.d.ts.map +1 -0
  463. package/dist/tests/user.test.js +190 -0
  464. package/dist/tests/user.test.js.map +1 -0
  465. package/dist/tests/view.test.d.ts +2 -0
  466. package/dist/tests/view.test.d.ts.map +1 -0
  467. package/dist/tests/view.test.js +238 -0
  468. package/dist/tests/view.test.js.map +1 -0
  469. package/dist/tests/workflow.test.d.ts +2 -0
  470. package/dist/tests/workflow.test.d.ts.map +1 -0
  471. package/dist/tests/workflow.test.js +115 -0
  472. package/dist/tests/workflow.test.js.map +1 -0
  473. package/dist/tsconfig.ref.tsbuildinfo +1 -0
  474. package/dist/utils.d.ts +26 -0
  475. package/dist/utils.d.ts.map +1 -0
  476. package/dist/utils.js +124 -0
  477. package/dist/utils.js.map +1 -0
  478. package/package.json +37 -8
  479. package/base-plugin/actions.js +0 -629
  480. package/base-plugin/base.test.js +0 -15
  481. package/base-plugin/fieldviews.js +0 -192
  482. package/base-plugin/fileviews.js +0 -65
  483. package/base-plugin/types.js +0 -1025
  484. package/base-plugin/viewtemplates/edit.js +0 -665
  485. package/base-plugin/viewtemplates/feed.js +0 -434
  486. package/base-plugin/viewtemplates/filter.js +0 -311
  487. package/base-plugin/viewtemplates/list.js +0 -575
  488. package/base-plugin/viewtemplates/listshowlist.js +0 -292
  489. package/base-plugin/viewtemplates/room.js +0 -650
  490. package/base-plugin/viewtemplates/show.js +0 -689
  491. package/base-plugin/viewtemplates/viewable_fields.js +0 -714
  492. package/contracts.js +0 -311
  493. package/db/connect.js +0 -151
  494. package/db/db.test.js +0 -33
  495. package/db/fixtures.js +0 -303
  496. package/db/index.js +0 -60
  497. package/db/state.js +0 -674
  498. package/migrate.js +0 -99
  499. package/migrations/202008031500.js +0 -4
  500. package/migrations/202009181655.js +0 -6
  501. package/migrations/202009221105.js +0 -4
  502. package/migrations/202009301531.js +0 -7
  503. package/migrations/202010231444.js +0 -4
  504. package/migrations/202010251412.js +0 -9
  505. package/migrations/202101141128.js +0 -4
  506. package/migrations/202102091312.js +0 -19
  507. package/migrations/202102101624.js +0 -5
  508. package/migrations/202102261650.js +0 -6
  509. package/migrations/202106251126.js +0 -5
  510. package/models/config.js +0 -680
  511. package/models/crash.js +0 -126
  512. package/models/discovery.js +0 -195
  513. package/models/email.js +0 -92
  514. package/models/eventlog.js +0 -146
  515. package/models/expression.js +0 -264
  516. package/models/field.js +0 -740
  517. package/models/fieldrepeat.js +0 -96
  518. package/models/file.js +0 -227
  519. package/models/form.js +0 -168
  520. package/models/layout.js +0 -146
  521. package/models/library.js +0 -135
  522. package/models/pack.js +0 -466
  523. package/models/page.js +0 -251
  524. package/models/plugin.js +0 -219
  525. package/models/random.js +0 -206
  526. package/models/role.js +0 -94
  527. package/models/scheduler.js +0 -163
  528. package/models/table.js +0 -1203
  529. package/models/table_constraints.js +0 -133
  530. package/models/trigger.js +0 -327
  531. package/models/user.js +0 -503
  532. package/models/view.js +0 -618
  533. package/models/workflow.js +0 -205
  534. package/plugin-helper.js +0 -1291
  535. package/plugin-testing.js +0 -124
  536. package/tests/actions.test.js +0 -232
  537. package/tests/auxtest.test.js +0 -52
  538. package/tests/backup.test.js +0 -92
  539. package/tests/calc.test.js +0 -221
  540. package/tests/config.test.js +0 -91
  541. package/tests/discover.test.js +0 -114
  542. package/tests/exact_views.test.js +0 -526
  543. package/tests/field.test.js +0 -253
  544. package/tests/form.test.js +0 -198
  545. package/tests/mocks.js +0 -173
  546. package/tests/models.test.js +0 -221
  547. package/tests/pack.test.js +0 -350
  548. package/tests/plugin.test.js +0 -59
  549. package/tests/random.test.js +0 -154
  550. package/tests/table.test.js +0 -1091
  551. package/tests/tenant.test.js +0 -56
  552. package/tests/user.test.js +0 -196
  553. package/tests/view.test.js +0 -251
  554. package/tests/workflow.test.js +0 -119
  555. package/utils.js +0 -137
package/models/user.js DELETED
@@ -1,503 +0,0 @@
1
- /**
2
- * @category saltcorn-data
3
- * @module models/user
4
- * @subcategory models
5
- */
6
- const db = require("../db");
7
- const bcrypt = require("bcryptjs");
8
- const { contract, is } = require("contractis");
9
- const { v4: uuidv4 } = require("uuid");
10
- const dumbPasswords = require("dumb-passwords");
11
- const validator = require("email-validator");
12
-
13
- /**
14
- * @param {object} o
15
- * @returns {*}
16
- */
17
- const safeUserFields = (o) => {
18
- const {
19
- email,
20
- password,
21
- language,
22
- _attributes,
23
- api_token,
24
- verification_token,
25
- verified_on,
26
- disabled,
27
- id,
28
- reset_password_token,
29
- reset_password_expiry,
30
- role_id,
31
- ...rest
32
- } = o;
33
- return rest;
34
- };
35
- /**
36
- * User
37
- * @category saltcorn-data
38
- */
39
- class User {
40
- /**
41
- * User constructor
42
- * @param {object} o
43
- */
44
- constructor(o) {
45
- this.email = o.email;
46
- this.password = o.password;
47
- this.language = o.language;
48
- this._attributes =
49
- typeof o._attributes === "string"
50
- ? JSON.parse(o._attributes)
51
- : o._attributes || {};
52
- this.api_token = o.api_token;
53
- this.verification_token = o.verification_token;
54
- this.verified_on = ["string", "number"].includes(typeof o.verified_on)
55
- ? new Date(o.verified_on)
56
- : o.verified_on;
57
- this.disabled = !!o.disabled;
58
- this.id = o.id ? +o.id : o.id;
59
- this.reset_password_token = o.reset_password_token || null;
60
- this.reset_password_expiry =
61
- (typeof o.reset_password_expiry === "string" &&
62
- o.reset_password_expiry.length > 0) ||
63
- typeof o.reset_password_expiry === "number"
64
- ? new Date(o.reset_password_expiry)
65
- : o.reset_password_expiry || null;
66
- this.role_id = o.role_id ? +o.role_id : 8;
67
-
68
- Object.assign(this, safeUserFields(o));
69
-
70
- contract.class(this);
71
- }
72
-
73
- /**
74
- * Get bcrypt hash for Password
75
- * @param pw - password string
76
- * @returns {Promise<string>}
77
- */
78
- static async hashPassword(pw) {
79
- return await bcrypt.hash(pw, 10);
80
- }
81
-
82
- /**
83
- * Check password
84
- * @param pw - password string
85
- * @returns {boolean}
86
- */
87
- checkPassword(pw) {
88
- return bcrypt.compareSync(pw, this.password);
89
- }
90
-
91
- /**
92
- * Change password
93
- * @param newpw - new password string
94
- * @param expireToken - if true than force reset password token
95
- * @returns {Promise<void>} no result
96
- */
97
- async changePasswordTo(newpw, expireToken) {
98
- const password = await User.hashPassword(newpw);
99
- this.password = password;
100
- const upd = { password };
101
- if (expireToken) upd.reset_password_token = null;
102
- await db.update("users", upd, this.id);
103
- }
104
-
105
- /**
106
- * Find or Create User
107
- * @param k
108
- * @param v
109
- * @param {object} [uo = {}]
110
- * @returns {Promise<{session_object: {_attributes: {}}, _attributes: {}}|User|*|boolean|{error: string}|User>}
111
- */
112
- static async findOrCreateByAttribute(k, v, uo = {}) {
113
- const u = await User.findOne({ _attributes: { json: [k, v] } });
114
- if (u) return u;
115
- else {
116
- const { getState } = require("../db/state");
117
- const email_mask = getState().getConfig("email_mask");
118
- if (email_mask && uo.email) {
119
- const { check_email_mask } = require("./config");
120
- if (!check_email_mask(uo.email)) {
121
- return false;
122
- }
123
- }
124
- const new_user_form = getState().getConfig("new_user_form");
125
- if (new_user_form) {
126
- // cannot create user, return pseudo-user
127
- const pseudoUser = { ...uo, _attributes: { [k]: v } };
128
- return { ...pseudoUser, session_object: pseudoUser };
129
- } else {
130
- const extra = {};
131
- if (!uo.password) extra.password = User.generate_password();
132
- return await User.create({ ...uo, ...extra, _attributes: { [k]: v } });
133
- }
134
- }
135
- }
136
-
137
- /**
138
- * Create user
139
- * @param uo - user object
140
- * @returns {Promise<{error: string}|User>}
141
- */
142
- static async create(uo) {
143
- const { email, password, passwordRepeat, role_id, ...rest } = uo;
144
- const u = new User({ email, password, role_id });
145
- if (User.unacceptable_password_reason(u.password))
146
- return {
147
- error:
148
- "Password not accepted: " +
149
- User.unacceptable_password_reason(u.password),
150
- };
151
- const hashpw = await User.hashPassword(u.password);
152
- const ex = await User.findOne({ email: u.email });
153
- if (ex) return { error: `User with this email already exists` };
154
- const id = await db.insert("users", {
155
- email: u.email,
156
- password: hashpw,
157
- role_id: u.role_id,
158
- ...rest,
159
- });
160
- u.id = id;
161
- return u;
162
- }
163
-
164
- /**
165
- * Create session object for user
166
- * @type {{role_id: number, language, id, email, tenant: *}}
167
- */
168
- get session_object() {
169
- const so = {
170
- email: this.email,
171
- id: this.id,
172
- role_id: this.role_id,
173
- language: this.language,
174
- tenant: db.getTenantSchema(),
175
- };
176
- Object.assign(so, safeUserFields(this));
177
- return so;
178
- }
179
-
180
- /**
181
- * Authenticate User
182
- * @param uo - user object
183
- * @returns {Promise<boolean|User>}
184
- */
185
- static async authenticate(uo) {
186
- const { password, ...uoSearch } = uo;
187
- const urows = await User.find(uoSearch, { limit: 2 });
188
- if (urows.length !== 1) return false;
189
- const [urow] = urows;
190
- if (urow.disabled) return false;
191
- const cmp = urow.checkPassword(password || "");
192
- if (cmp) return new User(urow);
193
- else return false;
194
- }
195
-
196
- /**
197
- * Find users list
198
- * @param where - where object
199
- * @param selectopts - select options
200
- * @returns {Promise<User[]>}
201
- */
202
- static async find(where, selectopts) {
203
- const us = await db.select("users", where, selectopts);
204
- return us.map((u) => new User(u));
205
- }
206
-
207
- /**
208
- * Find one user
209
- * @param where - where object
210
- * @returns {Promise<User|*>}
211
- */
212
- static async findOne(where) {
213
- const u = await db.selectMaybeOne("users", where);
214
- return u ? new User(u) : u;
215
- }
216
-
217
- /**
218
- * Check that user table is not empty in database
219
- * @deprecated use method count()
220
- * @returns {Promise<boolean>} true if there are users in db
221
- */
222
- static async nonEmpty() {
223
- const res = await db.count("users");
224
- return res > 0;
225
- }
226
-
227
- /**
228
- * Delete user based on session object
229
- * @returns {Promise<void>}
230
- */
231
- async delete() {
232
- const schema = db.getTenantSchemaPrefix();
233
- this.destroy_sessions();
234
- await db.query(`delete FROM ${schema}users WHERE id = $1`, [this.id]);
235
- }
236
-
237
- /**
238
- * Set language for User in database
239
- * @param language
240
- * @returns {Promise<void>}
241
- */
242
- async set_language(language) {
243
- await this.update({ language });
244
- }
245
-
246
- /**
247
- * Update User
248
- * @param row
249
- * @returns {Promise<void>}
250
- */
251
- async update(row) {
252
- await db.update("users", row, this.id);
253
- }
254
-
255
- /**
256
- * Get new reset token
257
- * @returns {Promise<*|string>}
258
- */
259
- async getNewResetToken() {
260
- const reset_password_token_uuid = uuidv4();
261
- const reset_password_expiry = new Date();
262
- reset_password_expiry.setDate(new Date().getDate() + 1);
263
- const reset_password_token = await bcrypt.hash(
264
- reset_password_token_uuid,
265
- 10
266
- );
267
- await db.update(
268
- "users",
269
- { reset_password_token, reset_password_expiry },
270
- this.id
271
- );
272
- return reset_password_token_uuid;
273
- }
274
-
275
- /**
276
- * Add new API token to user
277
- * @returns {Promise<string>}
278
- */
279
- async getNewAPIToken() {
280
- const api_token = uuidv4();
281
- await db.update("users", { api_token }, this.id);
282
- this.api_token = api_token;
283
- return api_token;
284
- }
285
-
286
- /**
287
- * Remove API token for user
288
- * @returns {Promise<string>}
289
- */
290
- async removeAPIToken() {
291
- const api_token = null;
292
- await db.update("users", { api_token }, this.id);
293
- this.api_token = api_token;
294
- return api_token;
295
- }
296
-
297
- /**
298
- * Validate password
299
- * @param pw
300
- * @returns {string}
301
- */
302
- static unacceptable_password_reason(pw) {
303
- if (typeof pw !== "string") return "Not a string";
304
- if (pw.length < 8) return "Too short";
305
- if (dumbPasswords.check(pw)) return "Too common";
306
- }
307
-
308
- /**
309
- * Validate email
310
- * @param email
311
- * @returns {boolean}
312
- */
313
- // TBD that validation works
314
- static valid_email(email) {
315
- return validator.validate(email);
316
- }
317
-
318
- /**
319
- * Verification with token
320
- * @param email - email sting
321
- * @param verification_token - verification token string
322
- * @returns {Promise<{error: string}|boolean>} true if verification passed, error string if not
323
- */
324
- static async verifyWithToken({ email, verification_token }) {
325
- if (
326
- typeof verification_token !== "string" ||
327
- typeof email !== "string" ||
328
- verification_token.length < 10 ||
329
- !email
330
- )
331
- return { error: "Invalid token" };
332
- const u = await User.findOne({ email, verification_token });
333
- if (!u) return { error: "Invalid token" };
334
- return await u.set_to_verified();
335
- }
336
-
337
- /**
338
- * @returns {Promise<boolean>}
339
- */
340
- async set_to_verified() {
341
- const upd = { verified_on: new Date() };
342
- const { getState } = require("../db/state");
343
-
344
- const elevate_verified = +getState().getConfig("elevate_verified");
345
- if (elevate_verified)
346
- upd.role_id = Math.min(elevate_verified, this.role_id);
347
- await db.update("users", upd, this.id);
348
- Object.assign(this, upd);
349
- const Trigger = require("./trigger");
350
- Trigger.emitEvent("UserVerified", null, this, this);
351
- return true;
352
- }
353
-
354
- /**
355
- * Reset password using token
356
- * @param email - email address string
357
- * @param reset_password_token - reset password token string
358
- * @param password
359
- * @returns {Promise<{error: string}|{success: boolean}>}
360
- */
361
- static async resetPasswordWithToken({
362
- email,
363
- reset_password_token,
364
- password,
365
- }) {
366
- if (
367
- typeof reset_password_token !== "string" ||
368
- typeof email !== "string" ||
369
- reset_password_token.length < 10
370
- )
371
- return {
372
- error: "Invalid token or invalid token length or incorrect email",
373
- };
374
- const u = await User.findOne({ email });
375
- if (u && new Date() < u.reset_password_expiry && u.reset_password_token) {
376
- const match = bcrypt.compareSync(
377
- reset_password_token,
378
- u.reset_password_token
379
- );
380
- if (match) {
381
- if (User.unacceptable_password_reason(password))
382
- return {
383
- error:
384
- "Password not accepted: " +
385
- User.unacceptable_password_reason(password),
386
- };
387
- await u.changePasswordTo(password, true);
388
- return { success: true };
389
- } else return { error: "User not found or expired token" };
390
- } else {
391
- return { error: "User not found or expired token" };
392
- }
393
- }
394
-
395
- /**
396
- * Count users in database
397
- * @param where
398
- * @returns {Promise<number>}
399
- */
400
- // TBD I think that method is simular to notEmppty() but more powerfull.
401
- // TBD use some rules for naming of methods - e.g. this method will have name count_users or countUsers because of methods relay on roles in this class
402
- static async count(where) {
403
- return await db.count("users", where || {});
404
- }
405
-
406
- /**
407
- * Get available roles
408
- * @returns {Promise<*>}
409
- */
410
- static async get_roles() {
411
- const rs = await db.select("_sc_roles", {}, { orderBy: "id" });
412
- return rs;
413
- }
414
-
415
- /**
416
- * Generate password
417
- * @returns {string}
418
- */
419
- static generate_password() {
420
- const candidate = is.str.generate().split(" ").join("");
421
- // TBD low performance impact - un
422
- if (candidate.length < 10) return User.generate_password();
423
- else return candidate;
424
- }
425
-
426
- /**
427
- * @returns {Promise<void>}
428
- */
429
- async destroy_sessions() {
430
- if (!db.isSQLite) {
431
- const schema = db.getTenantSchema();
432
-
433
- await db.query(
434
- `delete from _sc_session
435
- where sess->'passport'->'user'->>'id' = $1
436
- and sess->'passport'->'user'->>'tenant' = $2`,
437
- [`${this.id}`, schema]
438
- );
439
- }
440
- }
441
-
442
- /**
443
- * @param {object} req
444
- */
445
- relogin(req) {
446
- req.login(this.session_object, function (err) {
447
- if (err) req.flash("danger", err);
448
- });
449
- }
450
- }
451
-
452
- User.contract = {
453
- variables: {
454
- id: is.maybe(is.posint),
455
- email: is.str,
456
- //password: is.str,
457
- disabled: is.bool,
458
- language: is.maybe(is.str),
459
- _attributes: is.maybe(is.obj({})),
460
- role_id: is.posint,
461
- reset_password_token: is.maybe(
462
- is.and(
463
- is.str,
464
- is.sat((s) => s.length > 10)
465
- )
466
- ),
467
- reset_password_expiry: is.maybe(is.class("Date")),
468
- },
469
- methods: {
470
- delete: is.fun([], is.promise(is.undefined)),
471
- destroy_sessions: is.fun([], is.promise(is.undefined)),
472
- changePasswordTo: is.fun(is.str, is.promise(is.undefined)),
473
- checkPassword: is.fun(is.str, is.bool),
474
- },
475
- static_methods: {
476
- find: is.fun(is.maybe(is.obj()), is.promise(is.array(is.class("User")))),
477
- findOne: is.fun(is.obj(), is.promise(is.maybe(is.class("User")))),
478
- nonEmpty: is.fun([], is.promise(is.bool)),
479
- hashPassword: is.fun(is.str, is.promise(is.str)),
480
- authenticate: is.fun(
481
- is.objVals(is.str),
482
- is.promise(is.or(is.class("User"), is.eq(false)))
483
- ),
484
- verifyWithToken: is.fun(
485
- is.obj({ email: is.str, verification_token: is.str }),
486
- is.promise(is.any)
487
- ),
488
- resetPasswordWithToken: is.fun(
489
- is.obj({ email: is.str, reset_password_token: is.str, password: is.str }),
490
- is.promise(is.any)
491
- ),
492
- create: is.fun(
493
- is.obj({ email: is.str }),
494
- is.promise(is.or(is.obj({ error: is.str }), is.class("User")))
495
- ),
496
- get_roles: is.fun(
497
- [],
498
- is.promise(is.array(is.obj({ id: is.posint, role: is.str })))
499
- ),
500
- },
501
- };
502
-
503
- module.exports = User;