@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/library.js DELETED
@@ -1,135 +0,0 @@
1
- /**
2
- * Library Database Access Layer
3
- * @category saltcorn-data
4
- * @module models/library
5
- * @subcategory models
6
- */
7
- const db = require("../db");
8
- const { contract, is } = require("contractis");
9
- const { traverseSync } = require("./layout");
10
-
11
- /**
12
- * Library Class
13
- * @category saltcorn-data
14
- */
15
- class Library {
16
- /**
17
- * Library constructor
18
- * @param {object} o
19
- */
20
- constructor(o) {
21
- this.id = o.id;
22
- this.name = o.name;
23
- this.icon = o.icon;
24
- this.layout =
25
- typeof o.layout === "string" ? JSON.parse(o.layout) : o.layout;
26
- }
27
-
28
- /**
29
- * @param {object} lib_in
30
- */
31
- static async create(lib_in) {
32
- const lib = new Library(lib_in);
33
- await db.insert("_sc_library", {
34
- name: lib.name,
35
- icon: lib.icon,
36
- layout: lib.layout,
37
- });
38
- }
39
-
40
- /**
41
- * @type {...*}
42
- */
43
- get toJson() {
44
- const { id, ...rest } = this;
45
- return rest;
46
- }
47
-
48
- /**
49
- * @param {*} where
50
- * @param {*} selectopts
51
- * @returns {Library[]}
52
- */
53
- static async find(where, selectopts) {
54
- const us = await db.select("_sc_library", where, selectopts);
55
- return us.map((u) => new Library(u));
56
- }
57
-
58
- /**
59
- * @param {*} where
60
- * @returns {Library}
61
- */
62
- static async findOne(where) {
63
- const u = await db.selectMaybeOne("_sc_library", where);
64
- return u ? new Library(u) : u;
65
- }
66
-
67
- /**
68
- * @param {*} what
69
- * @returns {object}
70
- */
71
- suitableFor(what) {
72
- let notPage, notShow, notEdit, notFilter;
73
- if (!this.layout) return false;
74
- const layout = this.layout.layout ? this.layout.layout : this.layout;
75
- traverseSync(layout, {
76
- search_bar() {
77
- //eg: search - only page and filter
78
- notShow = true;
79
- notEdit = true;
80
- },
81
- dropdown_filter() {
82
- notShow = true;
83
- notEdit = true;
84
- notPage = true;
85
- },
86
- toggle_filter() {
87
- notShow = true;
88
- notEdit = true;
89
- notPage = true;
90
- },
91
- field() {
92
- notFilter = true;
93
- notPage = true;
94
- },
95
- view_link() {
96
- notFilter = true;
97
- notEdit = true;
98
- },
99
- aggregation() {
100
- notFilter = true;
101
- notEdit = true;
102
- notPage = true;
103
- },
104
- join_field() {
105
- notFilter = true;
106
- notEdit = true;
107
- notPage = true;
108
- },
109
- });
110
- return {
111
- page: !notPage,
112
- show: !notShow,
113
- edit: !notEdit,
114
- filter: !notFilter,
115
- }[what];
116
- }
117
-
118
- /**
119
- * @returns {Promise<void>}
120
- */
121
- async delete() {
122
- const schema = db.getTenantSchemaPrefix();
123
- await db.query(`delete FROM ${schema}_sc_library WHERE id = $1`, [this.id]);
124
- }
125
-
126
- /**
127
- * @param {*} row
128
- * @returns {Promise<void>}
129
- */
130
- async update(row) {
131
- await db.update("_sc_library", row, this.id);
132
- }
133
- }
134
-
135
- module.exports = Library;
package/models/pack.js DELETED
@@ -1,466 +0,0 @@
1
- /**
2
- * @category saltcorn-data
3
- * @module models/pack
4
- * @subcategory models
5
- */
6
- const Table = require("./table");
7
- const db = require("../db");
8
- const View = require("./view");
9
- const User = require("./user");
10
- const Field = require("./field");
11
- const Trigger = require("./trigger");
12
- const { getState } = require("../db/state");
13
- const fetch = require("node-fetch");
14
- const { contract, is } = require("contractis");
15
- const Page = require("./page");
16
- const { is_pack, is_plugin } = require("../contracts");
17
- const TableConstraint = require("./table_constraints");
18
- const { tr } = require("@saltcorn/markup/tags");
19
- const Role = require("./role");
20
- const Library = require("./library");
21
-
22
- const pack_fun = is.fun(is.str, is.promise(is.obj()));
23
-
24
- /**
25
- * @function
26
- * @param {string} name
27
- * @returns {Promise<object>}
28
- */
29
- const table_pack = contract(pack_fun, async (name) => {
30
- const table = await Table.findOne({ name });
31
- const fields = await table.getFields();
32
- const strip_ids = (o) => {
33
- delete o.id;
34
- delete o.table_id;
35
- return o;
36
- };
37
- //const triggers = await Trigger.find({ table_id: table.id });
38
- const constraints = await TableConstraint.find({ table_id: table.id });
39
-
40
- return {
41
- name: table.name,
42
- min_role_read: table.min_role_read,
43
- min_role_write: table.min_role_write,
44
- versioned: table.versioned,
45
- ownership_formula: table.ownership_formula,
46
- fields: fields.map((f) => strip_ids(f.toJson)),
47
- //triggers: triggers.map((tr) => tr.toJson),
48
- constraints: constraints.map((c) => c.toJson),
49
- ownership_field_name: table.owner_fieldname_from_fields(fields),
50
- };
51
- });
52
-
53
- /**
54
- * @function
55
- * @param {string} name
56
- * @returns {Promise<object>}
57
- */
58
- const view_pack = contract(pack_fun, async (name) => {
59
- const view = await View.findOne({ name });
60
- const table = await Table.findOne({ id: view.table_id });
61
-
62
- return {
63
- name: view.name,
64
- viewtemplate: view.viewtemplate,
65
- configuration: view.configuration,
66
- min_role: view.min_role,
67
- table: table ? table.name : null,
68
- menu_label: view.menu_label,
69
- default_render_page: view.default_render_page,
70
- };
71
- });
72
-
73
- /**
74
- * @function
75
- * @param {string} name
76
- * @returns {Promise<object>}
77
- */
78
- const plugin_pack = contract(pack_fun, async (name) => {
79
- const Plugin = require("./plugin");
80
- const plugin = await Plugin.findOne({ name });
81
-
82
- return {
83
- name: plugin.name,
84
- source: plugin.source,
85
- location: plugin.location,
86
- configuration: plugin.configuration,
87
- deploy_private_key: plugin.deploy_private_key,
88
- };
89
- });
90
-
91
- /**
92
- * @function
93
- * @param {string} name
94
- * @returns {Promise<object>}
95
- */
96
- const page_pack = contract(pack_fun, async (name) => {
97
- const page = await Page.findOne({ name });
98
- const root_page_for_roles = await page.is_root_page_for_roles();
99
- return {
100
- name: page.name,
101
- title: page.title,
102
- description: page.description,
103
- min_role: page.min_role,
104
- layout: page.layout,
105
- fixed_states: page.fixed_states,
106
- menu_label: page.menu_label,
107
- root_page_for_roles,
108
- };
109
- });
110
-
111
- /**
112
- * @function
113
- * @param {string} name
114
- * @returns {Promise<object>}
115
- */
116
- const library_pack = contract(pack_fun, async (name) => {
117
- const lib = await Library.findOne({ name });
118
- return lib.toJson;
119
- });
120
-
121
- /**
122
- * @function
123
- * @param {string} name
124
- * @returns {Promise<object>}
125
- */
126
- const trigger_pack = contract(pack_fun, async (name) => {
127
- const trig = await Trigger.findOne({ name });
128
- return trig.toJson;
129
- });
130
-
131
- /**
132
- * @function
133
- * @param {string} role
134
- * @returns {Promise<object>}
135
- */
136
- const role_pack = contract(pack_fun, async (role) => {
137
- return await Role.findOne({ role });
138
- });
139
-
140
- /**
141
- * @function
142
- * @param {string} pack
143
- * @returns {Promise<boolean|object>}
144
- */
145
- const can_install_pack = contract(
146
- is.fun(
147
- is_pack,
148
- is.promise(
149
- is.or(
150
- is.eq(true),
151
- is.obj({ error: is.maybe(is.str), warning: is.maybe(is.str) })
152
- )
153
- )
154
- ),
155
- async (pack) => {
156
- const warns = [];
157
- const allTables = (await Table.find()).map((t) =>
158
- db.sqlsanitize(t.name.toLowerCase())
159
- );
160
- const allViews = (await View.find()).map((t) => t.name);
161
- const allPages = (await Page.find()).map((t) => t.name);
162
- const packTables = (pack.tables || []).map((t) =>
163
- db.sqlsanitize(t.name.toLowerCase())
164
- );
165
- const matchTables = allTables.filter((dbt) =>
166
- packTables.some((pt) => pt === dbt && pt !== "users")
167
- );
168
- const matchViews = allViews.filter((dbt) =>
169
- (pack.views || []).some((pt) => pt.name === dbt)
170
- );
171
- const matchPages = allPages.filter((dbt) =>
172
- (pack.pages || []).some((pt) => pt.name === dbt)
173
- );
174
-
175
- if (matchTables.length > 0)
176
- return {
177
- error: "Tables already exist: " + matchTables.join(),
178
- };
179
- pack.tables.forEach((t) => {
180
- if (t.name === "users")
181
- t.fields.forEach((f) => {
182
- if (f.required) {
183
- warns.push(
184
- `User field '${f.name}' is required in pack, but there are existing users. You must set a value for each user and then change the field to be required. Got to <a href="/list/users">users table data</a>.`
185
- );
186
- }
187
- });
188
- });
189
- matchViews.forEach((v) => {
190
- warns.push(`Clashing view ${v}.`);
191
- });
192
- matchPages.forEach((p) => {
193
- warns.push(`Clashing page ${p}.`);
194
- });
195
- if (warns.length > 0) return { warning: warns.join(" ") };
196
- else return true;
197
- }
198
- );
199
-
200
- /**
201
- * @function
202
- * @param {string} pack
203
- * @param {string} name
204
- * @returns {Promise<void>}
205
- */
206
- const uninstall_pack = contract(
207
- is.fun([is_pack, is.str], is.promise(is.undefined)),
208
- async (pack, name) => {
209
- for (const pageSpec of pack.pages || []) {
210
- const page = await Page.findOne({ name: pageSpec.name });
211
- if (page) await page.delete();
212
- }
213
- for (const viewSpec of pack.views) {
214
- const view = await View.findOne({ name: viewSpec.name });
215
- if (view) await view.delete();
216
- }
217
- for (const tableSpec of pack.tables) {
218
- const table = await Table.findOne({ name: tableSpec.name });
219
- if (table && table.name === "users") continue;
220
- if (table) {
221
- const fields = await table.getFields();
222
- for (const field of fields) {
223
- if (field.is_fkey) await field.delete();
224
- }
225
- const triggers = await Trigger.find({ table_id: table.id });
226
- for (const trigger of triggers) {
227
- await trigger.delete();
228
- }
229
- }
230
- }
231
- for (const tableSpec of pack.tables) {
232
- const table = await Table.findOne({ name: tableSpec.name });
233
- if (table && table.name !== "users") await table.delete();
234
- }
235
-
236
- if (name) {
237
- const existPacks = getState().getConfigCopy("installed_packs", []);
238
-
239
- await getState().setConfig(
240
- "installed_packs",
241
- existPacks.filter((p) => p !== name)
242
- );
243
- }
244
- }
245
- );
246
-
247
- /**
248
- * @function
249
- * @param {object} item
250
- * @returns {Promise<void>}
251
- */
252
- const add_to_menu = contract(
253
- is.fun(
254
- is.obj({ label: is.str, type: is.one_of(["View", "Page"]) }),
255
- is.promise(is.undefined)
256
- ),
257
- async (item) => {
258
- const current_menu = getState().getConfigCopy("menu_items", []);
259
- current_menu.push(item);
260
- await getState().setConfig("menu_items", current_menu);
261
- }
262
- );
263
-
264
- /**
265
- * @function
266
- * @param {string} pack
267
- * @param {string} [name]
268
- * @param {function} loadAndSaveNewPlugin
269
- * @param {boolean} [bare_tables = false]
270
- * @returns {Promise<void>}
271
- */
272
- const install_pack = contract(
273
- is.fun(
274
- [is_pack, is.maybe(is.str), is.fun(is_plugin, is.undefined)],
275
- is.promise(is.undefined)
276
- ),
277
- async (pack, name, loadAndSaveNewPlugin, bare_tables = false) => {
278
- const Plugin = require("./plugin");
279
- const existingPlugins = await Plugin.find({});
280
- for (const plugin of pack.plugins) {
281
- if (!existingPlugins.some((ep) => ep.name === plugin.name)) {
282
- const p = new Plugin(plugin);
283
- await loadAndSaveNewPlugin(p);
284
- }
285
- }
286
- for (const role of pack.roles || []) {
287
- await Role.create(role);
288
- }
289
- for (const lib of pack.library || []) {
290
- await Library.create(lib);
291
- }
292
- for (const tableSpec of pack.tables) {
293
- if (tableSpec.name !== "users") {
294
- const table = await Table.create(tableSpec.name, tableSpec);
295
- const [tbl_pk] = await table.getFields();
296
- //set pk
297
- const pack_pk = tableSpec.fields.find((f) => f.primary_key);
298
- if (pack_pk) {
299
- await tbl_pk.update(pack_pk);
300
- }
301
- }
302
- }
303
- for (const tableSpec of pack.tables) {
304
- const table = await Table.findOne({ name: tableSpec.name });
305
- const exfields = await table.getFields();
306
- for (const field of tableSpec.fields) {
307
- const exfield = exfields.find((f) => f.name === field.name);
308
- if (!((table.name === "users" && field.name === "email") || exfield)) {
309
- if (table.name === "users" && field.required)
310
- await Field.create(
311
- { table, ...field, required: false },
312
- bare_tables
313
- );
314
- else await Field.create({ table, ...field }, bare_tables);
315
- }
316
- }
317
- for (const trigger of tableSpec.triggers || [])
318
- await Trigger.create({ table, ...trigger }); //legacy, not in new packs
319
- for (const constraint of tableSpec.constraints || [])
320
- await TableConstraint.create({ table, ...constraint });
321
- if (tableSpec.ownership_field_name) {
322
- const owner_field = await Field.findOne({
323
- table_id: table.id,
324
- name: tableSpec.ownership_field_name,
325
- });
326
- await table.update({ ownership_field_id: owner_field.id });
327
- }
328
- }
329
- for (const viewSpec of pack.views) {
330
- const {
331
- table,
332
- on_menu,
333
- menu_label,
334
- on_root_page,
335
- ...viewNoTable
336
- } = viewSpec;
337
- const vtable = await Table.findOne({ name: table });
338
- await View.create({
339
- ...viewNoTable,
340
- table_id: vtable ? vtable.id : null,
341
- });
342
- if (menu_label)
343
- await add_to_menu({
344
- label: menu_label,
345
- type: "View",
346
- viewname: viewSpec.name,
347
- min_role: viewSpec.min_role || 10,
348
- });
349
- }
350
- for (const triggerSpec of pack.triggers || []) {
351
- await Trigger.create(triggerSpec);
352
- }
353
-
354
- for (const pageFullSpec of pack.pages || []) {
355
- const { root_page_for_roles, menu_label, ...pageSpec } = pageFullSpec;
356
- await Page.create(pageSpec);
357
- for (const role of root_page_for_roles || []) {
358
- const current_root = getState().getConfigCopy(role + "_home", "");
359
- if (!current_root || current_root === "")
360
- await getState().setConfig(role + "_home", pageSpec.name);
361
- }
362
- if (menu_label)
363
- await add_to_menu({
364
- label: menu_label,
365
- type: "Page",
366
- pagename: pageSpec.name,
367
- min_role: pageSpec.min_role,
368
- });
369
- }
370
- if (name) {
371
- const existPacks = getState().getConfigCopy("installed_packs", []);
372
- await getState().setConfig("installed_packs", [...existPacks, name]);
373
- }
374
- }
375
- );
376
-
377
- /**
378
- * @function
379
- * @param {Date} date
380
- * @param {string} [hours = 24]
381
- * @returns {boolean}
382
- */
383
- const is_stale = contract(
384
- is.fun([is.or(is.class("Date"), is.str), is.maybe(is.posint)], is.bool),
385
- (date, hours = 24) => {
386
- const oneday = 60 * 60 * hours * 1000;
387
- const now = new Date();
388
- return new Date(date) < now - oneday;
389
- }
390
- );
391
-
392
- /**
393
- * @function
394
- * @returns {object[]}
395
- */
396
- const fetch_available_packs = contract(
397
- is.fun([], is.promise(is.array(is.obj({ name: is.str })))),
398
- async () => {
399
- const stored = getState().getConfigCopy("available_packs", false);
400
- const stored_at = getState().getConfigCopy(
401
- "available_packs_fetched_at",
402
- false
403
- );
404
- //console.log("in fetch", stored_at, stored)
405
- if (!stored || !stored_at || is_stale(stored_at)) {
406
- const from_api = await fetch_available_packs_from_store();
407
- await getState().setConfig("available_packs", from_api);
408
- await getState().setConfig("available_packs_fetched_at", new Date());
409
- return from_api;
410
- } else return stored;
411
- }
412
- );
413
-
414
- /**
415
- * @function
416
- * @returns {Promise<object[]>}
417
- */
418
- const fetch_available_packs_from_store = contract(
419
- is.fun([], is.promise(is.array(is.obj({ name: is.str })))),
420
- async () => {
421
- //console.log("fetch packs");
422
- const response = await fetch(
423
- "http://store.saltcorn.com/api/packs?fields=name,description"
424
- );
425
-
426
- const json = await response.json();
427
- return json.success;
428
- }
429
- );
430
-
431
- /**
432
- * @function
433
- * @param {string} name
434
- * @returns {Promise<object|null>}
435
- */
436
- const fetch_pack_by_name = contract(
437
- is.fun(
438
- is.str,
439
- is.promise(is.maybe(is.obj({ name: is.str, pack: is.obj() })))
440
- ),
441
- async (name) => {
442
- const response = await fetch(
443
- "http://store.saltcorn.com/api/packs?name=" + encodeURIComponent(name)
444
- );
445
- const json = await response.json();
446
- if (json.success.length == 1) return json.success[0];
447
- else return null;
448
- }
449
- );
450
-
451
- module.exports = {
452
- table_pack,
453
- view_pack,
454
- plugin_pack,
455
- page_pack,
456
- role_pack,
457
- library_pack,
458
- trigger_pack,
459
- install_pack,
460
- fetch_available_packs,
461
- fetch_pack_by_name,
462
- is_stale,
463
- can_install_pack,
464
- uninstall_pack,
465
- add_to_menu,
466
- };