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