@saltcorn/data 0.6.2-beta.1 → 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 +32 -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,1080 @@
1
+ "use strict";
2
+ /**
3
+ * Embedded Types definition.
4
+ *
5
+ * More types can be added by plugin store mechanism https://store.saltcorn.com/
6
+ * @category saltcorn-data
7
+ * @module base-plugin/types
8
+ * @subcategory base-plugin
9
+ */
10
+ const moment = require("moment");
11
+ const { input, select, option, text, div, h3, a, i, button, textarea, span, img, text_attr, } = require("@saltcorn/markup/tags");
12
+ const { contract, is } = require("contractis");
13
+ const { radio_group, checkbox_group } = require("@saltcorn/markup/helpers");
14
+ const { getState } = require("../db/state");
15
+ const isdef = (x) => (typeof x === "undefined" || x === null ? false : true);
16
+ const eqStr = (x, y) => `${x}` === `${y}`;
17
+ const number_slider = (type) => ({
18
+ configFields: (field) => [
19
+ ...(!isdef(field.attributes.max) && !isdef(field.attributes.min)
20
+ ? [
21
+ { name: "min", type, required: false },
22
+ { name: "max", type, required: false },
23
+ ]
24
+ : []),
25
+ //{ name: "also_entry", type: "Bool", label: "Also entry" },
26
+ ],
27
+ isEdit: true,
28
+ run: (nm, v, attrs = {}, cls, required, field) => input({
29
+ type: "range",
30
+ class: ["form-control", cls],
31
+ name: text_attr(nm),
32
+ "data-fieldname": text_attr(field.name),
33
+ disabled: attrs.disabled,
34
+ onChange: attrs.onChange,
35
+ step: type === "Integer"
36
+ ? 1
37
+ : attrs.decimal_places
38
+ ? Math.pow(10, -attrs.decimal_places)
39
+ : "0.01",
40
+ id: `input${text_attr(nm)}`,
41
+ ...(attrs.max && { max: attrs.max }),
42
+ ...(attrs.min && { min: attrs.min }),
43
+ ...(isdef(v) && { value: text_attr(v) }),
44
+ }),
45
+ });
46
+ const progress_bar = (type) => ({
47
+ configFields: (field) => [
48
+ ...(!isdef(field.attributes.min)
49
+ ? [{ name: "min", type, required: true }]
50
+ : []),
51
+ ...(!isdef(field.attributes.max)
52
+ ? [{ name: "max", type, required: true }]
53
+ : []),
54
+ { name: "bar_color", type: "Color", label: "Bar color" },
55
+ { name: "bg_color", type: "Color", label: "Background color" },
56
+ { name: "px_height", type: "Integer", label: "Height in px" },
57
+ ],
58
+ isEdit: false,
59
+ run: (v, req, attrs = {}) => div({
60
+ style: {
61
+ width: "100%",
62
+ height: `${attrs.px_height || 8}px`,
63
+ backgroundColor: attrs.bg_color,
64
+ },
65
+ }, div({
66
+ style: {
67
+ width: `${(100 * (v - attrs.min)) / (attrs.max - attrs.min)}%`,
68
+ height: `${attrs.px_height || 8}px`,
69
+ backgroundColor: attrs.bar_color,
70
+ },
71
+ })),
72
+ });
73
+ const number_limit = (type, direction) => ({
74
+ isEdit: false,
75
+ isFilter: true,
76
+ run: (nm, v, attrs = {}, cls, required, field, state = {}) => input({
77
+ type: "number",
78
+ class: ["form-control", cls],
79
+ disabled: attrs.disabled,
80
+ onChange: `set_state_field('_${direction}_${nm}', this.value)`,
81
+ step: type === "Integer"
82
+ ? "1"
83
+ : attrs.decimal_places
84
+ ? Math.pow(10, -attrs.decimal_places)
85
+ : "0.01",
86
+ ...(attrs.max && { max: attrs.max }),
87
+ ...(attrs.min && { min: attrs.min }),
88
+ ...(isdef(state[`_${direction}_${nm}`]) && {
89
+ value: text_attr(state[`_${direction}_${nm}`]),
90
+ }),
91
+ }),
92
+ });
93
+ /**
94
+ * @param {string} v
95
+ * @param {string} optsStr
96
+ * @returns {string[]}
97
+ */
98
+ const getStrOptions = (v, optsStr) => typeof optsStr === "string"
99
+ ? optsStr
100
+ .split(",")
101
+ .map((o) => o.trim())
102
+ .map((o) => option({ value: text_attr(o), ...(eqStr(v, o) && { selected: true }) }, text_attr(o)))
103
+ : optsStr.map((o, ix) => o && typeof o.name !== "undefined" && typeof o.label !== "undefined"
104
+ ? option({
105
+ value: o.name,
106
+ ...((eqStr(v, o.name) ||
107
+ (ix === 0 && typeof v === "undefined" && o.disabled)) && {
108
+ selected: true,
109
+ }),
110
+ ...(o.disabled && { disabled: true }),
111
+ }, o.label)
112
+ : option({ value: o, ...(eqStr(v, o) && { selected: true }) }, o));
113
+ /**
114
+ * string type
115
+ * @namespace
116
+ * @category saltcorn-data
117
+ * @subcategory types / string
118
+ */
119
+ const string = {
120
+ /** @type {string} */
121
+ name: "String",
122
+ /** @type {string} */
123
+ sql_name: "text",
124
+ /**
125
+ * @param {object} param
126
+ * @returns {object}
127
+ */
128
+ attributes: ({ table }) => {
129
+ const strFields = table &&
130
+ table.fields.filter((f) => (f.type || {}).name === "String" &&
131
+ !(f.attributes && f.attributes.localizes_field));
132
+ const locales = Object.keys(getState().getConfig("localizer_languages", {}));
133
+ return [
134
+ {
135
+ name: "regexp",
136
+ type: "String",
137
+ required: false,
138
+ sublabel: "Match regular expression",
139
+ validator(s) {
140
+ if (!is_valid_regexp(s))
141
+ return "Not a valid Regular Expression";
142
+ },
143
+ },
144
+ {
145
+ name: "re_invalid_error",
146
+ type: "String",
147
+ required: false,
148
+ sublabel: "Error message when regular expression does not match",
149
+ },
150
+ {
151
+ name: "max_length",
152
+ type: "Integer",
153
+ required: false,
154
+ sublabel: "The maximum number of characters in the string",
155
+ },
156
+ {
157
+ name: "min_length",
158
+ type: "Integer",
159
+ required: false,
160
+ sublabel: "The minimum number of characters in the string",
161
+ },
162
+ {
163
+ name: "options",
164
+ type: "String",
165
+ required: false,
166
+ sublabel: 'Use this to restrict your field to a list of options (separated by commas). For instance, if the permissible values are "Red", "Green" and "Blue", enter "Red, Green, Blue" here. Leave blank if the string can hold any value.',
167
+ },
168
+ ...(table
169
+ ? [
170
+ {
171
+ name: "localizes_field",
172
+ label: "Translation of",
173
+ sublabel: "This is a translation of a different field in a different language",
174
+ type: "String",
175
+ attributes: {
176
+ options: strFields.map((f) => f.name),
177
+ },
178
+ },
179
+ {
180
+ name: "locale",
181
+ label: "Locale",
182
+ sublabel: "Language locale of translation",
183
+ input_type: "select",
184
+ options: locales,
185
+ showIf: { localizes_field: strFields.map((f) => f.name) },
186
+ },
187
+ ]
188
+ : []),
189
+ ];
190
+ },
191
+ /**
192
+ * @param {object} opts
193
+ * @param {string|undefined} opts.options
194
+ * @returns {boolean}
195
+ */
196
+ contract: ({ options }) => typeof options === "string"
197
+ ? is.one_of(options.split(","))
198
+ : typeof options === "undefined"
199
+ ? is.str
200
+ : is.one_of(options.map((o) => (typeof o === "string" ? o : o.name))),
201
+ /**
202
+ * @namespace
203
+ * @category saltcorn-data
204
+ * @subcategory types / string
205
+ */
206
+ fieldviews: {
207
+ /**
208
+ * @namespace
209
+ * @category saltcorn-data
210
+ * @subcategory types / string
211
+ */
212
+ as_text: { isEdit: false, run: (s) => text_attr(s || "") },
213
+ /**
214
+ * @namespace
215
+ * @category saltcorn-data
216
+ * @subcategory types / string
217
+ */
218
+ as_link: {
219
+ isEdit: false,
220
+ run: (s) => a({ href: text(s || "") }, text_attr(s || "")),
221
+ },
222
+ /**
223
+ * @namespace
224
+ * @category saltcorn-data
225
+ * @subcategory types / string
226
+ */
227
+ img_from_url: {
228
+ isEdit: false,
229
+ run: (s, req, attrs) => img({ src: text(s || ""), style: "width:100%" }),
230
+ },
231
+ /**
232
+ * @namespace
233
+ * @category saltcorn-data
234
+ * @subcategory types / string
235
+ */
236
+ as_header: { isEdit: false, run: (s) => h3(text_attr(s || "")) },
237
+ /**
238
+ * @namespace
239
+ * @category saltcorn-data
240
+ * @subcategory types / string
241
+ */
242
+ edit: {
243
+ isEdit: true,
244
+ configFields: (field) => [
245
+ ...(field.attributes.options &&
246
+ field.attributes.options.length > 0 &&
247
+ !field.required
248
+ ? [
249
+ {
250
+ name: "neutral_label",
251
+ label: "Neutral label",
252
+ type: "String",
253
+ },
254
+ {
255
+ name: "force_required",
256
+ label: "Required",
257
+ sublabel: "User must select a value, even if the table field is not required",
258
+ type: "Bool",
259
+ },
260
+ ]
261
+ : []),
262
+ {
263
+ name: "placeholder",
264
+ label: "Placeholder",
265
+ type: "String",
266
+ },
267
+ {
268
+ name: "input_type",
269
+ label: "Input type",
270
+ input_type: "select",
271
+ options: ["text", "email", "url", "tel", "password"],
272
+ },
273
+ ],
274
+ run: (nm, v, attrs, cls, required, field) => attrs.options && (attrs.options.length > 0 || !required)
275
+ ? select({
276
+ class: ["form-control", cls],
277
+ name: text_attr(nm),
278
+ "data-fieldname": text_attr(field.name),
279
+ id: `input${text_attr(nm)}`,
280
+ disabled: attrs.disabled,
281
+ onChange: attrs.onChange,
282
+ }, required || attrs.force_required
283
+ ? getStrOptions(v, attrs.options)
284
+ : [
285
+ option({ value: "" }, attrs.neutral_label || ""),
286
+ ...getStrOptions(v, attrs.options),
287
+ ])
288
+ : attrs.options
289
+ ? i("None available")
290
+ : attrs.calcOptions
291
+ ? select({
292
+ class: ["form-control", cls],
293
+ name: text_attr(nm),
294
+ disabled: attrs.disabled,
295
+ "data-fieldname": text_attr(field.name),
296
+ id: `input${text_attr(nm)}`,
297
+ onChange: attrs.onChange,
298
+ "data-selected": v,
299
+ "data-calc-options": encodeURIComponent(JSON.stringify(attrs.calcOptions)),
300
+ }, option({ value: "" }, ""))
301
+ : input({
302
+ type: attrs.input_type || "text",
303
+ disabled: attrs.disabled,
304
+ class: ["form-control", cls],
305
+ placeholder: attrs.placeholder,
306
+ onChange: attrs.onChange,
307
+ "data-fieldname": text_attr(field.name),
308
+ name: text_attr(nm),
309
+ id: `input${text_attr(nm)}`,
310
+ ...(isdef(v) && { value: text_attr(v) }),
311
+ }),
312
+ },
313
+ /**
314
+ * @namespace
315
+ * @category saltcorn-data
316
+ * @subcategory types / string
317
+ */
318
+ textarea: {
319
+ isEdit: true,
320
+ run: (nm, v, attrs, cls, required, field) => textarea({
321
+ class: ["form-control", cls],
322
+ name: text_attr(nm),
323
+ "data-fieldname": text_attr(field.name),
324
+ disabled: attrs.disabled,
325
+ onChange: attrs.onChange,
326
+ id: `input${text_attr(nm)}`,
327
+ rows: 5,
328
+ }, text(v) || ""),
329
+ },
330
+ /**
331
+ * @namespace
332
+ * @category saltcorn-data
333
+ * @subcategory types / string
334
+ */
335
+ radio_group: {
336
+ isEdit: true,
337
+ configFields: [
338
+ {
339
+ type: "Bool",
340
+ name: "inline",
341
+ label: "Inline",
342
+ },
343
+ ],
344
+ run: (nm, v, attrs, cls, required, field) => attrs.options
345
+ ? radio_group({
346
+ class: cls,
347
+ name: text_attr(nm),
348
+ disabled: attrs.disabled,
349
+ inline: attrs.inline,
350
+ onChange: attrs.onChange,
351
+ options: Array.isArray(attrs.options)
352
+ ? attrs.options
353
+ : attrs.options.split(",").map((o) => o.trim()),
354
+ value: v,
355
+ })
356
+ : i("None available"),
357
+ },
358
+ checkbox_group: {
359
+ isEdit: false,
360
+ isFilter: true,
361
+ configFields: [
362
+ {
363
+ type: "Bool",
364
+ name: "inline",
365
+ label: "Inline",
366
+ },
367
+ ],
368
+ run: (nm, v, attrs, cls, required, field) => attrs && attrs.options
369
+ ? checkbox_group({
370
+ class: cls,
371
+ name: text_attr(nm),
372
+ disabled: attrs.disabled,
373
+ inline: attrs.inline,
374
+ options: Array.isArray(attrs.options)
375
+ ? attrs.options
376
+ : attrs.options.split(",").map((o) => o.trim()),
377
+ value: v,
378
+ })
379
+ : i("None available"),
380
+ },
381
+ /**
382
+ * @namespace
383
+ * @category saltcorn-data
384
+ * @subcategory types / string
385
+ */
386
+ password: {
387
+ isEdit: true,
388
+ run: (nm, v, attrs, cls, required, field) => input({
389
+ type: "password",
390
+ disabled: attrs.disabled,
391
+ class: ["form-control", cls],
392
+ "data-fieldname": text_attr(field.name),
393
+ onChange: attrs.onChange,
394
+ name: text_attr(nm),
395
+ id: `input${text_attr(nm)}`,
396
+ ...(isdef(v) && { value: text_attr(v) }),
397
+ }),
398
+ },
399
+ },
400
+ /**
401
+ * @param {*} v
402
+ * @returns {string|undefined}
403
+ */
404
+ read: (v) => {
405
+ switch (typeof v) {
406
+ case "string":
407
+ //PG dislikes null bytes
408
+ return v.replace(/\0/g, "");
409
+ default:
410
+ return undefined;
411
+ }
412
+ },
413
+ /**
414
+ * @namespace
415
+ * @category saltcorn-data
416
+ * @subcategory types / string
417
+ */
418
+ presets: {
419
+ /**
420
+ * @param {object} opts
421
+ * @param {object} opts.req
422
+ * @returns {object}
423
+ */
424
+ IP: ({ req }) => req.ip,
425
+ /**
426
+ * @param {object} opts
427
+ * @param {object} opts.req
428
+ * @returns {object}
429
+ */
430
+ SessionID: ({ req }) => req.sessionID || req.cookies["express:sess"],
431
+ },
432
+ /**
433
+ * @param {object} param
434
+ * @returns {object|true}
435
+ */
436
+ validate: ({ min_length, max_length, regexp, re_invalid_error }) => (x) => {
437
+ if (!x || typeof x !== "string")
438
+ return true; //{ error: "Not a string" };
439
+ if (isdef(min_length) && x.length < min_length)
440
+ return { error: `Must be at least ${min_length} characters` };
441
+ if (isdef(max_length) && x.length > max_length)
442
+ return { error: `Must be at most ${max_length} characters` };
443
+ if (isdef(regexp) && !new RegExp(regexp).test(x))
444
+ return { error: re_invalid_error || `Does not match regular expression` };
445
+ return true;
446
+ },
447
+ /**
448
+ * @param {object} param
449
+ * @returns {object}
450
+ */
451
+ validate_attributes: ({ min_length, max_length, regexp }) => (!isdef(min_length) || !isdef(max_length) || max_length >= min_length) &&
452
+ (!isdef(regexp) || is_valid_regexp(regexp)),
453
+ };
454
+ /**
455
+ * @param {string} s
456
+ * @returns {boolean}
457
+ */
458
+ const is_valid_regexp = (s) => {
459
+ try {
460
+ new RegExp(s);
461
+ return true;
462
+ }
463
+ catch {
464
+ return false;
465
+ }
466
+ };
467
+ /**
468
+ * Integer type
469
+ * @namespace
470
+ * @category saltcorn-data
471
+ * @subcategory types / int
472
+ */
473
+ const int = {
474
+ /** @type {string} */
475
+ name: "Integer",
476
+ /** @type {string} */
477
+ sql_name: "int",
478
+ /**
479
+ * @param {object} opts
480
+ * @param {number} opts.min
481
+ * @param {number} opts.max
482
+ * @returns {boolean}
483
+ */
484
+ contract: ({ min, max }) => is.integer({ lte: max, gte: min }),
485
+ primaryKey: { sql_type: "serial" },
486
+ /**
487
+ * @namespace
488
+ * @category saltcorn-data
489
+ * @subcategory types / int
490
+ */
491
+ fieldviews: {
492
+ /**
493
+ * @namespace
494
+ * @category saltcorn-data
495
+ * @subcategory types / int
496
+ */
497
+ show: { isEdit: false, run: (s) => text(s) },
498
+ /**
499
+ * @namespace
500
+ * @category saltcorn-data
501
+ * @subcategory types / int
502
+ */
503
+ edit: {
504
+ isEdit: true,
505
+ run: (nm, v, attrs, cls, required, field) => input({
506
+ type: "number",
507
+ class: ["form-control", cls],
508
+ disabled: attrs.disabled,
509
+ "data-fieldname": text_attr(field.name),
510
+ name: text_attr(nm),
511
+ onChange: attrs.onChange,
512
+ id: `input${text_attr(nm)}`,
513
+ step: "1",
514
+ ...(attrs.max && { max: attrs.max }),
515
+ ...(attrs.min && { min: attrs.min }),
516
+ ...(isdef(v) && { value: text_attr(v) }),
517
+ }),
518
+ },
519
+ number_slider: number_slider("Integer"),
520
+ progress_bar: progress_bar("Integer"),
521
+ above_input: number_limit("Integer", "gte"),
522
+ below_input: number_limit("Integer", "lte"),
523
+ },
524
+ /** @type {object[]} */
525
+ attributes: [
526
+ { name: "min", type: "Integer", required: false },
527
+ { name: "max", type: "Integer", required: false },
528
+ ],
529
+ /**
530
+ * @param {object} param
531
+ * @returns {boolean}
532
+ */
533
+ validate_attributes: ({ min, max }) => !isdef(min) || !isdef(max) || max > min,
534
+ /**
535
+ * @param {object} v
536
+ * @returns {object}
537
+ */
538
+ read: (v) => {
539
+ switch (typeof v) {
540
+ case "number":
541
+ return Math.round(v);
542
+ case "string":
543
+ if (v === "")
544
+ return undefined;
545
+ const parsed = +v;
546
+ return isNaN(parsed) ? undefined : parsed;
547
+ default:
548
+ return undefined;
549
+ }
550
+ },
551
+ /**
552
+ * @param {object} param
553
+ * @returns {boolean}
554
+ */
555
+ validate: ({ min, max }) => (x) => {
556
+ if (isdef(min) && x < min)
557
+ return { error: `Must be ${min} or higher` };
558
+ if (isdef(max) && x > max)
559
+ return { error: `Must be ${max} or less` };
560
+ return true;
561
+ },
562
+ };
563
+ /**
564
+ * Color Type
565
+ * @namespace color
566
+ * @category saltcorn-data
567
+ * @subcategory types / color
568
+ */
569
+ const color = {
570
+ /** @type {string} */
571
+ name: "Color",
572
+ /** @type {string} */
573
+ sql_name: "text",
574
+ /**
575
+ * @returns {function}
576
+ */
577
+ contract: () => is.str,
578
+ /**
579
+ * @namespace
580
+ * @category saltcorn-data
581
+ * @subcategory types / color
582
+ */
583
+ fieldviews: {
584
+ /**
585
+ * @namespace
586
+ * @category saltcorn-data
587
+ * @subcategory types / color
588
+ */
589
+ show: {
590
+ isEdit: false,
591
+ run: (s) => s
592
+ ? div({
593
+ class: "color-type-show",
594
+ style: `background: ${s};`,
595
+ })
596
+ : "",
597
+ },
598
+ /**
599
+ * @namespace
600
+ * @category saltcorn-data
601
+ * @subcategory types / color
602
+ */
603
+ edit: {
604
+ isEdit: true,
605
+ run: (nm, v, attrs, cls, required, field) => input({
606
+ type: "color",
607
+ class: ["form-control", cls],
608
+ disabled: attrs.disabled,
609
+ onChange: attrs.onChange,
610
+ "data-fieldname": text_attr(field.name),
611
+ name: text_attr(nm),
612
+ id: `input${text_attr(nm)}`,
613
+ ...(isdef(v) && { value: text_attr(v) }),
614
+ }),
615
+ },
616
+ },
617
+ /** @type {object[]} */
618
+ attributes: [],
619
+ /**
620
+ * @param {object} v
621
+ * @returns {object}
622
+ */
623
+ read: (v) => {
624
+ switch (typeof v) {
625
+ case "string":
626
+ return v;
627
+ default:
628
+ return undefined;
629
+ }
630
+ },
631
+ /**
632
+ * @returns {boolean}
633
+ */
634
+ validate: () => (x) => {
635
+ return true;
636
+ },
637
+ };
638
+ /**
639
+ * Float type
640
+ * @namespace
641
+ * @category saltcorn-data
642
+ * @subcategory types / float
643
+ */
644
+ const float = {
645
+ /** @type {string} */
646
+ name: "Float",
647
+ /** @type {string} */
648
+ sql_name: "double precision",
649
+ /**
650
+ * @param {object} opts
651
+ * @param {number} opts.min
652
+ * @param {number} opts.max
653
+ * @returns {function}
654
+ */
655
+ contract: ({ min, max }) => is.number({ lte: max, gte: min }),
656
+ /**
657
+ * @namespace
658
+ * @category saltcorn-data
659
+ * @subcategory types / float
660
+ */
661
+ fieldviews: {
662
+ /**
663
+ * @namespace
664
+ * @category saltcorn-data
665
+ * @subcategory types / float
666
+ */
667
+ show: { isEdit: false, run: (s) => text(s) },
668
+ /**
669
+ * @namespace
670
+ * @category saltcorn-data
671
+ * @subcategory types / float
672
+ */
673
+ edit: {
674
+ isEdit: true,
675
+ run: (nm, v, attrs, cls, required, field) => input({
676
+ type: "number",
677
+ class: ["form-control", cls],
678
+ name: text_attr(nm),
679
+ "data-fieldname": text_attr(field.name),
680
+ disabled: attrs.disabled,
681
+ onChange: attrs.onChange,
682
+ step: attrs.decimal_places
683
+ ? Math.pow(10, -attrs.decimal_places)
684
+ : "0.01",
685
+ id: `input${text_attr(nm)}`,
686
+ ...(attrs.max && { max: attrs.max }),
687
+ ...(attrs.min && { min: attrs.min }),
688
+ ...(isdef(v) && { value: text_attr(v) }),
689
+ }),
690
+ },
691
+ number_slider: number_slider("Float"),
692
+ progress_bar: progress_bar("Float"),
693
+ above_input: number_limit("Float", "gte"),
694
+ below_input: number_limit("Float", "lte"),
695
+ },
696
+ /** @type {object[]} */
697
+ attributes: [
698
+ { name: "min", type: "Float", required: false },
699
+ { name: "max", type: "Float", required: false },
700
+ { name: "units", type: "String", required: false },
701
+ { name: "decimal_places", type: "Integer", required: false },
702
+ ],
703
+ /**
704
+ * @param {object} v
705
+ * @returns {number|string|undefined}
706
+ */
707
+ read: (v) => {
708
+ switch (typeof v) {
709
+ case "number":
710
+ return v;
711
+ case "string":
712
+ const parsed = parseFloat(v);
713
+ return isNaN(parsed) ? undefined : parsed;
714
+ default:
715
+ return undefined;
716
+ }
717
+ },
718
+ /**
719
+ * @param {object} param
720
+ * @returns {object|boolean}
721
+ */
722
+ validate: ({ min, max }) => (x) => {
723
+ if (isdef(min) && x < min)
724
+ return { error: `Must be ${min} or higher` };
725
+ if (isdef(max) && x > max)
726
+ return { error: `Must be ${max} or less` };
727
+ return true;
728
+ },
729
+ };
730
+ /**
731
+ * @param {object} req
732
+ * @returns {string|undefined}
733
+ */
734
+ const locale = (req) => {
735
+ //console.log(req && req.getLocale ? req.getLocale() : undefined);
736
+ return req && req.getLocale ? req.getLocale() : undefined;
737
+ };
738
+ /**
739
+ * @param {*} x
740
+ * @returns {*}
741
+ */
742
+ const logit = (x) => {
743
+ console.log(x);
744
+ return x;
745
+ };
746
+ /**
747
+ * Date type
748
+ * @namespace
749
+ * @category saltcorn-data
750
+ * @subcategory types / date
751
+ */
752
+ const date = {
753
+ /** @type {string} */
754
+ name: "Date",
755
+ /** @type {string} */
756
+ sql_name: "timestamptz",
757
+ /**
758
+ * @returns {function}
759
+ */
760
+ contract: () => is.date,
761
+ /** @type {object[]} */
762
+ attributes: [],
763
+ /**
764
+ * @namespace
765
+ * @category saltcorn-data
766
+ * @subcategory types / date
767
+ */
768
+ fieldviews: {
769
+ /**
770
+ * @namespace
771
+ * @category saltcorn-data
772
+ * @subcategory types / date
773
+ */
774
+ show: {
775
+ isEdit: false,
776
+ run: (d, req) => text(typeof d === "string"
777
+ ? text(d)
778
+ : d && d.toLocaleString
779
+ ? d.toLocaleString(locale(req))
780
+ : ""),
781
+ },
782
+ /**
783
+ * @namespace
784
+ * @category saltcorn-data
785
+ * @subcategory types / date
786
+ */
787
+ showDay: {
788
+ isEdit: false,
789
+ run: (d, req) => text(typeof d === "string"
790
+ ? text(d)
791
+ : d && d.toLocaleDateString
792
+ ? d.toLocaleDateString(locale(req))
793
+ : ""),
794
+ },
795
+ /**
796
+ * @namespace
797
+ * @category saltcorn-data
798
+ * @subcategory types / date
799
+ */
800
+ format: {
801
+ isEdit: false,
802
+ configFields: [
803
+ {
804
+ name: "format",
805
+ label: "Format",
806
+ type: "String",
807
+ sublabel: "moment.js format specifier",
808
+ },
809
+ ],
810
+ run: (d, req, options) => {
811
+ if (!d)
812
+ return "";
813
+ if (!options || !options.format)
814
+ return text(moment(d).format());
815
+ return text(moment(d).format(options.format));
816
+ },
817
+ },
818
+ /**
819
+ * @namespace
820
+ * @category saltcorn-data
821
+ * @subcategory types / date
822
+ */
823
+ relative: {
824
+ isEdit: false,
825
+ run: (d, req) => {
826
+ if (!d)
827
+ return "";
828
+ const loc = locale(req);
829
+ if (loc)
830
+ return text(moment(d).locale(loc).fromNow());
831
+ else
832
+ return text(moment(d).fromNow());
833
+ },
834
+ },
835
+ /**
836
+ * @namespace
837
+ * @category saltcorn-data
838
+ * @subcategory types / date
839
+ */
840
+ yearsAgo: {
841
+ isEdit: false,
842
+ run: (d, req) => {
843
+ if (!d)
844
+ return "";
845
+ return text(moment.duration(new Date() - d).years());
846
+ },
847
+ },
848
+ /**
849
+ * @namespace
850
+ * @category saltcorn-data
851
+ * @subcategory types / date
852
+ */
853
+ edit: {
854
+ isEdit: true,
855
+ run: (nm, v, attrs, cls, required, field) => input({
856
+ type: "text",
857
+ class: ["form-control", cls],
858
+ "data-fieldname": text_attr(field.name),
859
+ name: text_attr(nm),
860
+ onChange: attrs.onChange,
861
+ disabled: attrs.disabled,
862
+ id: `input${text_attr(nm)}`,
863
+ ...(isdef(v) && {
864
+ value: text_attr(typeof v === "string" ? v : v.toLocaleString(attrs.locale)),
865
+ }),
866
+ }),
867
+ },
868
+ /**
869
+ * @namespace
870
+ * @category saltcorn-data
871
+ * @subcategory types / date
872
+ */
873
+ editDay: {
874
+ isEdit: true,
875
+ run: (nm, v, attrs, cls, required, field) => input({
876
+ type: "text",
877
+ class: ["form-control", cls],
878
+ "data-fieldname": text_attr(field.name),
879
+ name: text_attr(nm),
880
+ onChange: attrs.onChange,
881
+ disabled: attrs.disabled,
882
+ id: `input${text_attr(nm)}`,
883
+ ...(isdef(v) && {
884
+ value: text_attr(typeof v === "string" ? v : v.toLocaleDateString(attrs.locale)),
885
+ }),
886
+ }),
887
+ },
888
+ },
889
+ /**
890
+ * @namespace
891
+ * @category saltcorn-data
892
+ * @subcategory types / date
893
+ */
894
+ presets: {
895
+ Now: () => new Date(),
896
+ },
897
+ /**
898
+ * @param {object} v
899
+ * @param {object} attrs
900
+ * @returns {object}
901
+ */
902
+ read: (v, attrs) => {
903
+ if (v instanceof Date && !isNaN(v))
904
+ return v;
905
+ if (typeof v === "string") {
906
+ if (attrs && attrs.locale) {
907
+ const d = moment(v, "L LT", attrs.locale).toDate();
908
+ if (d instanceof Date && !isNaN(d))
909
+ return d;
910
+ }
911
+ const d = new Date(v);
912
+ if (d instanceof Date && !isNaN(d))
913
+ return d;
914
+ else
915
+ return null;
916
+ }
917
+ },
918
+ /**
919
+ * @param {object} param
920
+ * @returns {boolean}
921
+ */
922
+ validate: ({}) => (v) => v instanceof Date && !isNaN(v),
923
+ };
924
+ /**
925
+ * Boolean Type
926
+ * @namespace
927
+ * @category saltcorn-data
928
+ * @subcategory types / bool
929
+ */
930
+ const bool = {
931
+ /** @type {string} */
932
+ name: "Bool",
933
+ /** @type {string} */
934
+ sql_name: "boolean",
935
+ /**
936
+ * @returns {function}
937
+ */
938
+ contract: () => is.bool,
939
+ /**
940
+ * @namespace
941
+ * @category saltcorn-data
942
+ * @subcategory types / bool
943
+ */
944
+ fieldviews: {
945
+ /**
946
+ * @namespace
947
+ * @category saltcorn-data
948
+ * @subcategory types / bool
949
+ */
950
+ show: {
951
+ isEdit: false,
952
+ run: (v) => v === true
953
+ ? i({
954
+ class: "fas fa-lg fa-check-circle text-success",
955
+ })
956
+ : v === false
957
+ ? i({
958
+ class: "fas fa-lg fa-times-circle text-danger",
959
+ })
960
+ : "",
961
+ },
962
+ /**
963
+ * @namespace
964
+ * @category saltcorn-data
965
+ * @subcategory types / bool
966
+ */
967
+ checkboxes: {
968
+ isEdit: false,
969
+ run: (v) => v === true
970
+ ? input({ disabled: true, type: "checkbox", checked: true })
971
+ : v === false
972
+ ? input({ type: "checkbox", disabled: true })
973
+ : "",
974
+ },
975
+ /**
976
+ * @namespace
977
+ * @category saltcorn-data
978
+ * @subcategory types / bool
979
+ */
980
+ TrueFalse: {
981
+ isEdit: false,
982
+ run: (v) => (v === true ? "True" : v === false ? "False" : ""),
983
+ },
984
+ /**
985
+ * @namespace
986
+ * @category saltcorn-data
987
+ * @subcategory types / bool
988
+ */
989
+ edit: {
990
+ isEdit: true,
991
+ run: (nm, v, attrs, cls, required, field) => input({
992
+ class: ["mr-2 mt-1", cls],
993
+ "data-fieldname": text_attr(field.name),
994
+ type: "checkbox",
995
+ onChange: attrs.onChange,
996
+ name: text_attr(nm),
997
+ id: `input${text_attr(nm)}`,
998
+ ...(v && { checked: true }),
999
+ ...(attrs.disabled && { onclick: "return false;" }),
1000
+ }),
1001
+ },
1002
+ /**
1003
+ * @namespace
1004
+ * @category saltcorn-data
1005
+ * @subcategory types / bool
1006
+ */
1007
+ tristate: {
1008
+ isEdit: true,
1009
+ run: (nm, v, attrs, cls, required, field) => attrs.disabled
1010
+ ? !(!isdef(v) || v === null)
1011
+ ? ""
1012
+ : v
1013
+ ? "T"
1014
+ : "F"
1015
+ : input({
1016
+ type: "hidden",
1017
+ "data-fieldname": text_attr(field.name),
1018
+ name: text_attr(nm),
1019
+ id: `input${text_attr(nm)}`,
1020
+ value: !isdef(v) || v === null ? "?" : v ? "on" : "off",
1021
+ }) +
1022
+ button({
1023
+ onClick: `tristateClick('${text_attr(nm)}')`,
1024
+ type: "button",
1025
+ id: `trib${text_attr(nm)}`,
1026
+ }, !isdef(v) || v === null ? "?" : v ? "T" : "F"),
1027
+ },
1028
+ },
1029
+ /** @type {object[]} */
1030
+ attributes: [],
1031
+ /**
1032
+ * @param {*} rec
1033
+ * @param {string} name
1034
+ * @returns {boolean|null}
1035
+ */
1036
+ readFromFormRecord: (rec, name) => {
1037
+ if (!rec[name])
1038
+ return false;
1039
+ if (["undefined", "false", "off"].includes(rec[name]))
1040
+ return false;
1041
+ if (rec[name] === "?")
1042
+ return null;
1043
+ return rec[name] ? true : false;
1044
+ },
1045
+ /**
1046
+ * @param {object} v
1047
+ * @returns {boolean|null}
1048
+ */
1049
+ read: (v) => {
1050
+ switch (typeof v) {
1051
+ case "string":
1052
+ if (["TRUE", "T", "ON"].includes(v.toUpperCase()))
1053
+ return true;
1054
+ if (v === "?")
1055
+ return null;
1056
+ else
1057
+ return false;
1058
+ default:
1059
+ if (v === null)
1060
+ return null;
1061
+ return v ? true : false;
1062
+ }
1063
+ },
1064
+ /**
1065
+ * @param {object} v
1066
+ * @returns {object}
1067
+ */
1068
+ readFromDB: (v) => !!v,
1069
+ /**
1070
+ * @param {object} v
1071
+ * @returns {object}
1072
+ */
1073
+ listAs: (v) => JSON.stringify(v),
1074
+ /**
1075
+ * @returns {boolean}
1076
+ */
1077
+ validate: () => (x) => true,
1078
+ };
1079
+ module.exports = { string, int, bool, date, float, color };
1080
+ //# sourceMappingURL=types.js.map