@saltcorn/data 0.6.2-beta.1 → 0.6.2-beta.5

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 +610 -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 +180 -0
  286. package/dist/models/config.d.ts.map +1 -0
  287. package/dist/models/config.js +758 -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 +390 -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 +34 -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 -197
  482. package/base-plugin/fileviews.js +0 -65
  483. package/base-plugin/types.js +0 -1154
  484. package/base-plugin/viewtemplates/edit.js +0 -672
  485. package/base-plugin/viewtemplates/feed.js +0 -434
  486. package/base-plugin/viewtemplates/filter.js +0 -358
  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 -652
  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 -63
  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 -276
  516. package/models/field.js +0 -746
  517. package/models/fieldrepeat.js +0 -96
  518. package/models/file.js +0 -234
  519. package/models/form.js +0 -169
  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 -255
  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 -1211
  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 -622
  533. package/models/workflow.js +0 -205
  534. package/plugin-helper.js +0 -1311
  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 -243
  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
@@ -0,0 +1,758 @@
1
+ "use strict";
2
+ /**
3
+ * Config Variables
4
+ * @category saltcorn-data
5
+ * @module models/config
6
+ * @subcategory models
7
+ */
8
+ const db = require("../db");
9
+ const { contract, is } = require("contractis");
10
+ const latestVersion = require("latest-version");
11
+ const { getConfigFile, configFilePath } = require("../db/connect");
12
+ const fs = require("fs");
13
+ const moment = require("moment-timezone");
14
+ const allTimezones = moment.tz.names();
15
+ const defaultTimezone = moment.tz.guess();
16
+ /**
17
+ * Config variables types
18
+ * @namespace
19
+ * @category saltcorn-data
20
+ */
21
+ const configTypes = {
22
+ /** @type {object} */
23
+ site_name: {
24
+ type: "String",
25
+ label: "Site name",
26
+ default: "Saltcorn",
27
+ blurb: "A short string which is the name of your site",
28
+ },
29
+ /** @type {object} */
30
+ timezone: {
31
+ type: "String",
32
+ label: "Home Timezone",
33
+ default: defaultTimezone,
34
+ attributes: {
35
+ options: allTimezones,
36
+ },
37
+ },
38
+ /** @type {object} */
39
+ site_logo_id: {
40
+ type: "File",
41
+ label: "Site logo",
42
+ default: 0,
43
+ attributes: {
44
+ select_file_where: { min_role_read: 10, mime_super: "image" },
45
+ },
46
+ blurb: "Select a publicly accessible image file for the menu logo",
47
+ },
48
+ /** @type {object} */
49
+ favicon_id: {
50
+ type: "File",
51
+ label: "Favicon",
52
+ default: 0,
53
+ attributes: {
54
+ select_file_where: { min_role_read: 10, mime_super: "image" },
55
+ },
56
+ blurb: "Select a publicly accessible image file for the browser tab icon",
57
+ },
58
+ /** @type {object} */
59
+ base_url: {
60
+ type: "String",
61
+ label: "Base URL",
62
+ default: "",
63
+ onChange(val) {
64
+ const tenant = db.getTenantSchema();
65
+ const isRoot = tenant === db.connectObj.default_schema;
66
+ if (!isRoot && val) {
67
+ const { set_tenant_base_url } = require("../db/state");
68
+ set_tenant_base_url(tenant, val);
69
+ }
70
+ },
71
+ blurb: "The URL at which your site is available. For instance, https://example.com/",
72
+ },
73
+ /** @type {object} */
74
+ menu_items: { type: "hidden", label: "Menu items" },
75
+ /** @type {object} */
76
+ unrolled_menu_items: { type: "hidden", label: "Menu items" },
77
+ /** @type {object} */
78
+ globalSearch: { type: "hidden", label: "Global search" },
79
+ /** @type {object} */
80
+ available_packs: { type: "hidden", label: "Available packs" },
81
+ /** @type {object} */
82
+ available_packs_fetched_at: {
83
+ type: "Date",
84
+ label: "Available packs fetched",
85
+ },
86
+ /** @type {object} */
87
+ available_plugins: { type: "hidden", label: "Available plugins" },
88
+ /** @type {object} */
89
+ available_plugins_fetched_at: {
90
+ type: "Date",
91
+ label: "Available plugins fetched",
92
+ },
93
+ /** @type {object} */
94
+ home_page_by_role: { type: "hidden", label: "Home Page by Role" },
95
+ /** @type {object} */
96
+ exttables_min_role_read: {
97
+ type: "hidden",
98
+ label: "Home Page by Role",
99
+ default: {},
100
+ },
101
+ /** @type {object} */
102
+ public_home: { type: "String", label: "Public home page", default: "" },
103
+ /** @type {object} */
104
+ user_home: { type: "String", label: "User home page", default: "" },
105
+ /** @type {object} */
106
+ staff_home: { type: "String", label: "Staff home page", default: "" },
107
+ /** @type {object} */
108
+ admin_home: { type: "String", label: "Admin home page", default: "" },
109
+ /** @type {object} */
110
+ layout_by_role: { type: "hidden", label: "Layout by role", default: {} },
111
+ /** @type {object} */
112
+ allow_signup: {
113
+ type: "Bool",
114
+ label: "Allow signups",
115
+ default: true,
116
+ blurb: "Allow users to sign up for a new user account",
117
+ },
118
+ /** @type {object} */
119
+ allow_forgot: {
120
+ type: "Bool",
121
+ label: "Allow password reset",
122
+ default: false,
123
+ blurb: "Allow users to request a password reset email. Email must be configured.",
124
+ },
125
+ /** @type {object} */
126
+ login_menu: {
127
+ type: "Bool",
128
+ label: "Login in menu",
129
+ default: true,
130
+ blurb: "Show the login link in the menu",
131
+ },
132
+ /** @type {object} */
133
+ cookie_sessions: {
134
+ type: "Bool",
135
+ label: "Cookie sessions",
136
+ default: false,
137
+ root_only: true,
138
+ restart_required: true,
139
+ blurb: "Store sessions entirely in client cookies for higher performance",
140
+ },
141
+ /** @type {object} */
142
+ new_user_form: {
143
+ type: "View users",
144
+ label: "New user form",
145
+ default: "",
146
+ blurb: "A view to show to new users",
147
+ },
148
+ /** @type {object} */
149
+ user_settings_form: {
150
+ type: "View users",
151
+ label: "User settings form",
152
+ default: "",
153
+ blurb: "A view for users to change their custom user fields",
154
+ },
155
+ /** @type {object} */
156
+ login_form: {
157
+ type: "View users",
158
+ label: "Login view",
159
+ blurb: "A view with the login form",
160
+ default: "",
161
+ },
162
+ /** @type {object} */
163
+ signup_form: {
164
+ type: "View users",
165
+ label: "Signup view",
166
+ blurb: "A view with the signup form",
167
+ default: "",
168
+ },
169
+ /** @type {object} */
170
+ verification_view: {
171
+ type: "View users",
172
+ label: "Verification view",
173
+ blurb: "A view with the view to be emailed to users for email address verification",
174
+ default: "",
175
+ },
176
+ /** @type {object} */
177
+ elevate_verified: {
178
+ type: "Role",
179
+ label: "Elevate verified to role",
180
+ blurb: "Elevate users to a higher role when their email addresses have been verified",
181
+ },
182
+ /** @type {object} */
183
+ min_role_upload: {
184
+ type: "Role",
185
+ label: "Role to upload files",
186
+ default: "1",
187
+ required: true,
188
+ blurb: "User should have this role or higher to upload files with API (uploads through forms are not affected)",
189
+ },
190
+ /** @type {object} */
191
+ min_role_apikeygen: {
192
+ type: "Role",
193
+ label: "Role to generate API keys",
194
+ default: "1",
195
+ required: true,
196
+ blurb: "User should have this role or higher to generate API keys in their user settings",
197
+ },
198
+ /** @type {object} */
199
+ email_mask: {
200
+ type: "String",
201
+ label: "Email mask",
202
+ default: "",
203
+ blurb: "Emails used for signup must end with this string",
204
+ },
205
+ /** @type {object} */
206
+ installed_packs: { type: "String[]", label: "Installed packs", default: [] },
207
+ /** @type {object} */
208
+ log_sql: {
209
+ type: "Bool",
210
+ label: "Log SQL to stdout",
211
+ default: false,
212
+ onChange(val) {
213
+ db.set_sql_logging(val);
214
+ },
215
+ blurb: "Print all SQL statements to the standard output",
216
+ },
217
+ /** @type {object} */
218
+ multitenancy_enabled: {
219
+ type: "Bool",
220
+ root_only: true,
221
+ restart_required: true,
222
+ label: "Multitenancy enabled",
223
+ default: db.is_it_multi_tenant(),
224
+ onChange(val) {
225
+ set_multitenancy_cfg(val);
226
+ },
227
+ },
228
+ /** @type {object} */
229
+ role_to_create_tenant: {
230
+ type: "Role",
231
+ label: "Role to create tenants",
232
+ blurb: "Minimum user role required to create a new tenant",
233
+ default: "10",
234
+ },
235
+ /** @type {object} */
236
+ create_tenant_warning: {
237
+ type: "Bool",
238
+ label: "Create tenant warning",
239
+ default: true,
240
+ blurb: "Show a warning to users creating a tenant disclaiming warrenty of availability or security",
241
+ },
242
+ /** @type {object} */
243
+ tenant_template: {
244
+ type: "Tenant",
245
+ label: "New tenant template",
246
+ blurb: "Copy site structure for new tenants from this tenant",
247
+ },
248
+ /** @type {object} */
249
+ development_mode: {
250
+ type: "Bool",
251
+ label: "Development mode",
252
+ default: false,
253
+ blurb: "Disable JS/CSS asset caching, show full error to user on crash, enable editing field type",
254
+ },
255
+ /** @type {object} */
256
+ smtp_host: {
257
+ type: "String",
258
+ label: "SMTP host",
259
+ default: "",
260
+ blurb: "The host address of your SMTP server. For instance, smtp.postmarkapp.com",
261
+ },
262
+ /** @type {object} */
263
+ smtp_username: {
264
+ type: "String",
265
+ label: "SMTP username",
266
+ default: "",
267
+ blurb: "The user name to access SMTP server for sending emails.",
268
+ },
269
+ /** @type {object} */
270
+ smtp_password: {
271
+ type: "String",
272
+ label: "SMTP password",
273
+ default: "",
274
+ input_type: "password",
275
+ blurb: "The user password or app password to access SMTP server for sending emails. " +
276
+ "If your SMTP provider allows to create app password for using from application " +
277
+ "We recommends to use app password instead of user password.",
278
+ },
279
+ /** @type {object} */
280
+ smtp_port: {
281
+ type: "Integer",
282
+ label: "SMTP port",
283
+ default: "25",
284
+ blurb: "The port of your SMTP server",
285
+ },
286
+ /** @type {object} */
287
+ smtp_secure: {
288
+ type: "Bool",
289
+ label: "Force TLS",
290
+ default: false,
291
+ sublabel: "Always use TLS when connecting to server? If unchecked, TLS is used if server supports the STARTTLS extension. In most cases check this box if you are connecting to port 465. For port 587 or 25 keep it unchecked",
292
+ },
293
+ /** @type {object} */
294
+ email_from: {
295
+ type: "String",
296
+ label: "Email from address",
297
+ default: "",
298
+ blurb: "The email address from which emails are sent. For instance, hello@saltcorn.com",
299
+ },
300
+ /** @type {object} */
301
+ custom_ssl_certificate: {
302
+ type: "String",
303
+ fieldview: "textarea",
304
+ label: "Custom SSL certificate",
305
+ default: "",
306
+ hide_value: true,
307
+ },
308
+ /** @type {object} */
309
+ custom_ssl_private_key: {
310
+ type: "String",
311
+ fieldview: "textarea",
312
+ label: "Custom SSL private key",
313
+ hide_value: true,
314
+ default: "",
315
+ },
316
+ /** @type {object} */
317
+ letsencrypt: {
318
+ label: "LetsEncrypt enabled",
319
+ default: false,
320
+ type: "hidden",
321
+ root_only: true,
322
+ blurb: "Enable SSL certificate from Let's Encrypt for HTTPS traffic",
323
+ },
324
+ /** @type {object} */
325
+ timeout: {
326
+ type: "Integer",
327
+ label: "HTTP timeout (s)",
328
+ default: 120,
329
+ root_only: true,
330
+ restart_required: true,
331
+ sublabel: "Increase if you expect large uploads",
332
+ },
333
+ /** @type {object} */
334
+ latest_npm_version: {
335
+ type: "hidden",
336
+ label: "Latest npm version cache",
337
+ default: {},
338
+ },
339
+ /** @type {object} */
340
+ event_log_settings: {
341
+ type: "hidden",
342
+ label: "Event log settings",
343
+ default: {},
344
+ },
345
+ /** @type {object} */
346
+ custom_events: {
347
+ type: "hidden",
348
+ label: "Custom events",
349
+ default: [],
350
+ },
351
+ /** @type {object} */
352
+ page_custom_css: {
353
+ input_type: "code",
354
+ label: "Custom CSS",
355
+ default: "",
356
+ hide_value: true,
357
+ attributes: { mode: "text/css" },
358
+ },
359
+ /** @type {object} */
360
+ page_custom_html: {
361
+ input_type: "code",
362
+ label: "Custom HTML",
363
+ default: "",
364
+ hide_value: true,
365
+ attributes: { mode: "text/html" },
366
+ },
367
+ /** @type {object} */
368
+ custom_http_headers: {
369
+ input_type: "code",
370
+ label: "Custom HTTP headers",
371
+ blurb: "Format for each line: Header-Name: value",
372
+ default: "",
373
+ hide_value: true,
374
+ attributes: { mode: "message/http" },
375
+ },
376
+ /** @type {object} */
377
+ next_hourly_event: {
378
+ type: "Date",
379
+ label: "Next hourly event",
380
+ default: null,
381
+ },
382
+ /** @type {object} */
383
+ next_daily_event: {
384
+ type: "Date",
385
+ label: "Next daily event",
386
+ default: null,
387
+ },
388
+ /** @type {object} */
389
+ next_weekly_event: {
390
+ type: "Date",
391
+ label: "Next weekly event",
392
+ default: null,
393
+ },
394
+ /** @type {object} */
395
+ localizer_languages: {
396
+ type: "hidden",
397
+ label: "Localizer languages",
398
+ default: {},
399
+ },
400
+ /** @type {object} */
401
+ localizer_strings: {
402
+ type: "hidden",
403
+ label: "Localizer strings",
404
+ default: {},
405
+ },
406
+ cookie_duration: {
407
+ type: "Integer",
408
+ label: "Cookie duration (hours)",
409
+ sublabel: "Set to 0 for expration at the end of browser session",
410
+ default: 0,
411
+ },
412
+ cookie_duration_remember: {
413
+ type: "Integer",
414
+ label: "Cookie duration (hours) when remember ticked",
415
+ sublabel: "Set to 0 for expration at the end of browser session",
416
+ default: 30 * 24,
417
+ },
418
+ /** @type {object} */
419
+ storage_s3_enabled: {
420
+ type: "Bool",
421
+ label: "Use Amazon S3",
422
+ default: false,
423
+ sublabel: "Use Amazon S3 (or compatible) service to store files. If disabled, Saltcorn uses local disk. WARNING: Changing this may break your uploaded files!",
424
+ },
425
+ storage_s3_secure: {
426
+ type: "Bool",
427
+ label: "Use Amazon S3 Secure Connection.",
428
+ default: true,
429
+ sublabel: "Connect to Amazon S3 (or compatible) securely.",
430
+ },
431
+ /** @type {object} */
432
+ storage_s3_bucket: {
433
+ type: "String",
434
+ label: "Amazon S3 Bucket",
435
+ default: "",
436
+ blurb: "Name you selected for your S3 bucket in AWS.",
437
+ },
438
+ /** @type {object} */
439
+ storage_s3_path_prefix: {
440
+ type: "String",
441
+ label: "Amazon S3 Path Prefix",
442
+ default: "",
443
+ blurb: "Prefix you selected for your S3 bucket in AWS.",
444
+ },
445
+ /** @type {object} */
446
+ storage_s3_endpoint: {
447
+ type: "String",
448
+ label: "Amazon S3 Endpoint",
449
+ default: "s3.amazonaws.com",
450
+ blurb: "Hostname of your S3 Compatible Storage provider. Defaults to 's3.amazonaws.com'.",
451
+ },
452
+ /** @type {object} */
453
+ storage_s3_region: {
454
+ type: "String",
455
+ label: "Amazon S3 Region",
456
+ default: "us-east-1",
457
+ blurb: "AWS region you selected when creating your S3 bucket. Default ti 'us-east-1'.",
458
+ },
459
+ /** @type {object} */
460
+ storage_s3_access_key: {
461
+ type: "String",
462
+ label: "Amazon S3 Access Key ID",
463
+ default: "",
464
+ blurb: "Only required if you do not want to authenticate to S3 using an IAM role. Enter the Access Key ID provided by your Amazon EC2 administrator.",
465
+ },
466
+ /** @type {object} */
467
+ storage_s3_access_secret: {
468
+ type: "String",
469
+ input_type: "password",
470
+ label: "Amazon S3 Secret Access Key",
471
+ default: "",
472
+ blurb: "The secret access key associated with your Amazon S3 Access Key ID.",
473
+ },
474
+ };
475
+ // TODO move list of languages from code to configuration
476
+ const available_languages = {
477
+ en: "English",
478
+ fr: "français",
479
+ de: "Deutsch",
480
+ da: "dansk",
481
+ es: "Español",
482
+ no: "Norsk",
483
+ sv: "Svenska",
484
+ ru: "русский",
485
+ nl: "Nederlands",
486
+ pt: "Português",
487
+ ar: "العربية",
488
+ it: "Italiano",
489
+ };
490
+ /**
491
+ * Get Config variable value by key (contract)
492
+ * @function
493
+ * @param {string} key
494
+ * @param {object|undefined} def
495
+ * @returns {Promise<object>}
496
+ */
497
+ const getConfig = contract(is.fun([is.str, is.maybe(is.any)], is.promise(is.any)), async (key, def) => {
498
+ const cfg = await db.selectMaybeOne("_sc_config", { key });
499
+ if (cfg && typeof cfg.value === "string")
500
+ return JSON.parse(cfg.value).v;
501
+ else if (cfg)
502
+ return cfg.value.v;
503
+ else if (def)
504
+ return def;
505
+ else
506
+ return configTypes[key] ? configTypes[key].default : undefined;
507
+ });
508
+ /**
509
+ * Returns true if key is defined in fixed_configration for tenant
510
+ * @param {string} key
511
+ * @returns {boolean}
512
+ */
513
+ const isFixedConfig = (key) => typeof db.connectObj.fixed_configuration[key] !== "undefined" ||
514
+ (db.connectObj.inherit_configuration.includes(key) &&
515
+ db.getTenantSchema() !== db.connectObj.default_schema);
516
+ /**
517
+ * Get all config variables list
518
+ * @function
519
+ * @returns {Promise<object>}
520
+ */
521
+ const getAllConfig = contract(is.fun([], is.promise(is.objVals(is.any))), async () => {
522
+ const cfgs = await db.select("_sc_config");
523
+ var cfg = {};
524
+ cfgs.forEach(({ key, value }) => {
525
+ if (key === "testMigration")
526
+ //legacy invalid cfg
527
+ return;
528
+ try {
529
+ cfg[key] = typeof value === "string" ? JSON.parse(value).v : value.v;
530
+ }
531
+ catch (e) {
532
+ console.error("config parsing error", e, { key, value }, db.getTenantSchema());
533
+ }
534
+ });
535
+ return cfg;
536
+ });
537
+ /**
538
+ * Get all config variables list
539
+ * If variable is not defined that default value is used
540
+ * @function
541
+ * @returns {Promise<object>}
542
+ */
543
+ const getAllConfigOrDefaults = contract(is.fun([], is.promise(is.objVals(is.any))), async () => {
544
+ var cfgs = {};
545
+ const cfgInDB = await getAllConfig();
546
+ Object.entries(configTypes).forEach(([key, v]) => {
547
+ const value = typeof cfgInDB[key] === "undefined" ? v.default : cfgInDB[key];
548
+ if (!isFixedConfig(key))
549
+ cfgs[key] = { value, ...v };
550
+ });
551
+ return cfgs;
552
+ });
553
+ /**
554
+ * Set config variable value by key
555
+ * @function
556
+ * @param {string} key
557
+ * @param {object} value
558
+ * @returns {Promise<void>}
559
+ */
560
+ // TODO move db specific to pg/sqlite
561
+ const setConfig = contract(is.fun([is.str, is.any], is.promise(is.undefined)), async (key, value) => {
562
+ if (db.isSQLite)
563
+ await db.query(`insert into ${db.getTenantSchemaPrefix()}_sc_config(key, value) values($key, json($value))
564
+ on conflict (key) do update set value = json($value)`, { $key: key, $value: JSON.stringify({ v: value }) });
565
+ else
566
+ await db.query(`insert into ${db.getTenantSchemaPrefix()}_sc_config(key, value) values($1, $2)
567
+ on conflict (key) do update set value = $2`, [key, { v: value }]);
568
+ if (configTypes[key] && configTypes[key].onChange)
569
+ configTypes[key].onChange(value);
570
+ });
571
+ /**
572
+ * Delete config variable
573
+ * @function
574
+ * @param {string} key
575
+ * @returns {Promise<void>}
576
+ */
577
+ const deleteConfig = contract(is.fun(is.str, is.promise(is.undefined)), async (key) => {
578
+ await db.deleteWhere("_sc_config", { key });
579
+ });
580
+ /**
581
+ * Remove from menu
582
+ * @function
583
+ * @param {object} item
584
+ * @returns {Promise<void>}
585
+ */
586
+ const remove_from_menu = contract(is.fun(is.obj({
587
+ name: is.str,
588
+ type: is.one_of(["View", "Page"]),
589
+ }), is.promise(is.undefined)), async (item) => {
590
+ const { getState } = require("../db/state");
591
+ const current_menu = getState().getConfigCopy("menu_items", []);
592
+ const new_menu = current_menu.filter((menuitem) => !(item.type === menuitem.type &&
593
+ (item.type === "View"
594
+ ? menuitem.viewname === item.name
595
+ : menuitem.pagename === item.name)));
596
+ await save_menu_items(new_menu);
597
+ });
598
+ const save_menu_items = async (menu_items) => {
599
+ const { getState } = require("../db/state");
600
+ const Table = require("./table");
601
+ const { jsexprToWhere, get_expression_function } = require("./expression");
602
+ const unroll = async (items) => {
603
+ const unrolled_menu_items = [];
604
+ for (const item of items) {
605
+ if (item.type === "Dynamic") {
606
+ const table = Table.findOne({ name: item.dyn_table });
607
+ const fields = await table.getFields();
608
+ const where = item.dyn_include_fml
609
+ ? jsexprToWhere(item.dyn_include_fml)
610
+ : {};
611
+ const selopts = item.dyn_order
612
+ ? { orderBy: db.sqlsanitize(item.dyn_order) }
613
+ : {};
614
+ const rows = await table.getRows(where, selopts);
615
+ const fLabel = get_expression_function(item.dyn_label_fml, fields);
616
+ const fUrl = get_expression_function(item.dyn_url_fml, fields);
617
+ if (item.dyn_section_field) {
618
+ const section_field = fields.find((f) => f.name === item.dyn_section_field);
619
+ if (!section_field)
620
+ throw new InvalidConfiguration(`Dynamic menu section field ${item.dyn_section_field} not found`);
621
+ const sections = section_field.attributes.options
622
+ .split(",")
623
+ .map((s) => s.trim());
624
+ for (const section of sections) {
625
+ unrolled_menu_items.push({
626
+ ...item,
627
+ label: section,
628
+ type: "Header",
629
+ subitems: rows
630
+ .filter((r) => r[item.dyn_section_field] === section)
631
+ .map((row) => ({
632
+ ...item,
633
+ label: fLabel(row),
634
+ url: fUrl(row),
635
+ type: "Link",
636
+ })),
637
+ });
638
+ }
639
+ }
640
+ else
641
+ for (const row of rows) {
642
+ unrolled_menu_items.push({
643
+ ...item,
644
+ label: fLabel(row),
645
+ url: fUrl(row),
646
+ type: "Link",
647
+ });
648
+ }
649
+ }
650
+ else if (item.subitems && item.subitems.length > 0) {
651
+ const subitems = await unroll(item.subitems);
652
+ unrolled_menu_items.push({ ...item, subitems });
653
+ }
654
+ else
655
+ unrolled_menu_items.push(item);
656
+ }
657
+ return unrolled_menu_items;
658
+ };
659
+ await getState().setConfig("menu_items", menu_items);
660
+ await getState().setConfig("unrolled_menu_items", await unroll(menu_items));
661
+ };
662
+ /**
663
+ * Get latest npm version
664
+ * @param {string} pkg
665
+ * @returns {Promise<string>}
666
+ */
667
+ const get_latest_npm_version = async (pkg) => {
668
+ const { getState } = require("../db/state");
669
+ const { is_stale } = require("./pack");
670
+ const stored = getState().getConfig("latest_npm_version", {});
671
+ if (stored[pkg] && !is_stale(stored[pkg].time, 6)) {
672
+ return stored[pkg].version;
673
+ }
674
+ try {
675
+ const latest = await latestVersion(pkg);
676
+ const stored1 = getState().getConfigCopy("latest_npm_version", {});
677
+ await getState().setConfig("latest_npm_version", {
678
+ ...stored1,
679
+ [pkg]: { time: new Date(), version: latest },
680
+ });
681
+ return latest;
682
+ }
683
+ catch (e) {
684
+ if (stored[pkg])
685
+ return stored[pkg].version;
686
+ else
687
+ return "";
688
+ }
689
+ };
690
+ /**
691
+ * Ensure that string is finished with /
692
+ * @param {string} s
693
+ * @returns {string}
694
+ */
695
+ const ensure_final_slash = (s) => (s.endsWith("/") ? s : s + "/");
696
+ /**
697
+ * Get base url
698
+ * @param {object} req
699
+ * @returns {string}
700
+ */
701
+ const get_base_url = (req) => {
702
+ const { getState } = require("../db/state");
703
+ const cfg = getState().getConfig("base_url", "");
704
+ if (cfg)
705
+ return ensure_final_slash(cfg);
706
+ if (!req || !req.get)
707
+ return "/";
708
+ var ports = "";
709
+ const host = req.get("host");
710
+ if (typeof host === "string") {
711
+ const hosts = host.split(":");
712
+ if (hosts.length > 1)
713
+ ports = `:${hosts[1]}`;
714
+ }
715
+ return `${req.protocol}://${req.hostname}${ports}/`;
716
+ };
717
+ /**
718
+ * Check email mask
719
+ * @function
720
+ * @param {string} email
721
+ * @returns {boolean}
722
+ */
723
+ const check_email_mask = contract(is.fun(is.str, is.bool), (email) => {
724
+ const { getState } = require("../db/state");
725
+ const cfg = getState().getConfig("email_mask", "");
726
+ if (cfg) {
727
+ return email.endsWith(cfg);
728
+ }
729
+ else
730
+ return true;
731
+ });
732
+ /**
733
+ * Set multitenancy cfg flag
734
+ * @function
735
+ * @param {boolean} val
736
+ * @returns {void}
737
+ */
738
+ const set_multitenancy_cfg = contract(is.fun(is.bool, is.undefined), (val) => {
739
+ const cfg = getConfigFile();
740
+ cfg.multi_tenant = val;
741
+ fs.writeFileSync(configFilePath, JSON.stringify(cfg, null, 2));
742
+ });
743
+ module.exports = {
744
+ getConfig,
745
+ getAllConfig,
746
+ setConfig,
747
+ getAllConfigOrDefaults,
748
+ deleteConfig,
749
+ configTypes,
750
+ remove_from_menu,
751
+ available_languages,
752
+ isFixedConfig,
753
+ get_latest_npm_version,
754
+ get_base_url,
755
+ save_menu_items,
756
+ check_email_mask,
757
+ };
758
+ //# sourceMappingURL=config.js.map