@saltcorn/server 1.3.1-beta.2 → 1.3.1-beta.4

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 (395) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/auth/admin.js +0 -1
  3. package/docs/assets/search.js +1 -1
  4. package/docs/classes/_saltcorn_common_code.Relation.html +10 -10
  5. package/docs/classes/_saltcorn_common_code.RelationsFinder.html +5 -5
  6. package/docs/classes/_saltcorn_data.models.Crash.html +17 -17
  7. package/docs/classes/_saltcorn_data.models.EventLog-1.html +19 -19
  8. package/docs/classes/_saltcorn_data.models.Field.html +74 -74
  9. package/docs/classes/_saltcorn_data.models.FieldRepeat.html +16 -16
  10. package/docs/classes/_saltcorn_data.models.File-1.html +48 -48
  11. package/docs/classes/_saltcorn_data.models.Form-1.html +39 -39
  12. package/docs/classes/_saltcorn_data.models.Library.html +13 -13
  13. package/docs/classes/_saltcorn_data.models.Page.html +24 -24
  14. package/docs/classes/_saltcorn_data.models.PageGroup-1.html +25 -25
  15. package/docs/classes/_saltcorn_data.models.Plugin.html +25 -25
  16. package/docs/classes/_saltcorn_data.models.Role.html +9 -9
  17. package/docs/classes/_saltcorn_data.models.Table-1.html +92 -92
  18. package/docs/classes/_saltcorn_data.models.TableConstraint.html +14 -14
  19. package/docs/classes/_saltcorn_data.models.Trigger.html +42 -40
  20. package/docs/classes/_saltcorn_data.models.User.html +48 -48
  21. package/docs/classes/_saltcorn_data.models.View-1.html +54 -54
  22. package/docs/classes/_saltcorn_data.models.Workflow.html +17 -17
  23. package/docs/classes/_saltcorn_data.models.WorkflowRun.html +35 -35
  24. package/docs/classes/_saltcorn_data.models.WorkflowStep.html +25 -25
  25. package/docs/classes/_saltcorn_data.models.WorkflowTrace.html +18 -18
  26. package/docs/classes/_saltcorn_mobile_builder.MobileBuilder.html +37 -37
  27. package/docs/enums/_saltcorn_common_code.RelationType.html +7 -7
  28. package/docs/enums/_saltcorn_common_code.ViewDisplayType.html +4 -4
  29. package/docs/functions/_saltcorn_admin_models.backup.create_backup.html +1 -1
  30. package/docs/functions/_saltcorn_admin_models.backup.create_csv_from_rows.html +1 -1
  31. package/docs/functions/_saltcorn_admin_models.backup.restore.html +1 -1
  32. package/docs/functions/_saltcorn_admin_models.pack.add_to_menu.html +1 -1
  33. package/docs/functions/_saltcorn_admin_models.pack.can_install_pack.html +1 -1
  34. package/docs/functions/_saltcorn_admin_models.pack.fetch_available_packs.html +1 -1
  35. package/docs/functions/_saltcorn_admin_models.pack.fetch_pack_by_name.html +1 -1
  36. package/docs/functions/_saltcorn_admin_models.pack.install_pack.html +1 -1
  37. package/docs/functions/_saltcorn_admin_models.pack.library_pack.html +1 -1
  38. package/docs/functions/_saltcorn_admin_models.pack.model_instance_pack.html +1 -1
  39. package/docs/functions/_saltcorn_admin_models.pack.model_pack.html +1 -1
  40. package/docs/functions/_saltcorn_admin_models.pack.page_group_pack.html +1 -1
  41. package/docs/functions/_saltcorn_admin_models.pack.page_pack.html +1 -1
  42. package/docs/functions/_saltcorn_admin_models.pack.plugin_pack.html +1 -1
  43. package/docs/functions/_saltcorn_admin_models.pack.role_pack.html +1 -1
  44. package/docs/functions/_saltcorn_admin_models.pack.table_pack.html +1 -1
  45. package/docs/functions/_saltcorn_admin_models.pack.trigger_pack.html +1 -1
  46. package/docs/functions/_saltcorn_admin_models.pack.uninstall_pack.html +1 -1
  47. package/docs/functions/_saltcorn_admin_models.pack.view_pack.html +1 -1
  48. package/docs/functions/_saltcorn_admin_models.tenant.copy_tenant_template.html +1 -1
  49. package/docs/functions/_saltcorn_admin_models.tenant.create_tenant.html +1 -1
  50. package/docs/functions/_saltcorn_admin_models.tenant.deleteTenant.html +1 -1
  51. package/docs/functions/_saltcorn_admin_models.tenant.domain_sanitize.html +1 -1
  52. package/docs/functions/_saltcorn_admin_models.tenant.eachTenant.html +1 -1
  53. package/docs/functions/_saltcorn_admin_models.tenant.getAllTenantRows.html +1 -1
  54. package/docs/functions/_saltcorn_admin_models.tenant.getAllTenants.html +1 -1
  55. package/docs/functions/_saltcorn_admin_models.tenant.insertTenant.html +1 -1
  56. package/docs/functions/_saltcorn_admin_models.tenant.switchToTenant.html +1 -1
  57. package/docs/functions/_saltcorn_common_code.buildTableCaches.html +1 -1
  58. package/docs/functions/_saltcorn_common_code.parseLegacyRelation.html +1 -1
  59. package/docs/functions/_saltcorn_common_code.parseRelationPath.html +1 -1
  60. package/docs/functions/_saltcorn_data.models.config.check_email_mask.html +1 -1
  61. package/docs/functions/_saltcorn_data.models.config.deleteConfig.html +1 -1
  62. package/docs/functions/_saltcorn_data.models.config.getAllConfig.html +1 -1
  63. package/docs/functions/_saltcorn_data.models.config.getConfig.html +1 -1
  64. package/docs/functions/_saltcorn_data.models.config.get_base_url.html +1 -1
  65. package/docs/functions/_saltcorn_data.models.config.get_latest_npm_version.html +1 -1
  66. package/docs/functions/_saltcorn_data.models.config.remove_from_menu.html +1 -1
  67. package/docs/functions/_saltcorn_data.models.config.save_menu_items.html +1 -1
  68. package/docs/functions/_saltcorn_data.models.config.setConfig.html +1 -1
  69. package/docs/functions/_saltcorn_data.models.discovery.discover_tables.html +1 -1
  70. package/docs/functions/_saltcorn_data.models.discovery.discoverable_tables.html +1 -1
  71. package/docs/functions/_saltcorn_data.models.discovery.findType.html +1 -1
  72. package/docs/functions/_saltcorn_data.models.discovery.get_existing_views.html +1 -1
  73. package/docs/functions/_saltcorn_data.models.discovery.implement_discovery.html +1 -1
  74. package/docs/functions/_saltcorn_data.models.email.getMailTransport.html +1 -1
  75. package/docs/functions/_saltcorn_data.models.email.send_verification_email.html +1 -1
  76. package/docs/functions/_saltcorn_data.models.email.viewToEmailHtml.html +1 -1
  77. package/docs/functions/_saltcorn_data.models.expression.apply_calculated_fields.html +1 -1
  78. package/docs/functions/_saltcorn_data.models.expression.apply_calculated_fields_stored.html +1 -1
  79. package/docs/functions/_saltcorn_data.models.expression.eval_expression.html +1 -1
  80. package/docs/functions/_saltcorn_data.models.expression.expressionValidator.html +1 -1
  81. package/docs/functions/_saltcorn_data.models.expression.get_async_expression_function.html +1 -1
  82. package/docs/functions/_saltcorn_data.models.expression.get_expression_function.html +1 -1
  83. package/docs/functions/_saltcorn_data.models.expression.jsexprToWhere.html +1 -1
  84. package/docs/functions/_saltcorn_data.models.expression.recalculate_for_stored.html +1 -1
  85. package/docs/functions/_saltcorn_data.models.expression.transform_for_async.html +1 -1
  86. package/docs/functions/_saltcorn_data.models.layout.eachView.html +1 -1
  87. package/docs/functions/_saltcorn_data.models.layout.getStringsForI18n.html +1 -1
  88. package/docs/functions/_saltcorn_data.models.layout.getViews.html +1 -1
  89. package/docs/functions/_saltcorn_data.models.layout.translateLayout.html +1 -1
  90. package/docs/functions/_saltcorn_data.models.layout.traverse.html +1 -1
  91. package/docs/functions/_saltcorn_data.models.layout.traverseSync.html +1 -1
  92. package/docs/functions/_saltcorn_data.models.random.all_views.html +1 -1
  93. package/docs/functions/_saltcorn_data.models.random.fill_table_row.html +1 -1
  94. package/docs/functions/_saltcorn_data.models.random.initial_view.html +1 -1
  95. package/docs/functions/_saltcorn_data.models.random.random_table.html +1 -1
  96. package/docs/functions/_saltcorn_db_common.buildInsertBulkSql.html +2 -1
  97. package/docs/functions/_saltcorn_db_common.buildInsertSql.html +2 -1
  98. package/docs/functions/_saltcorn_db_common.commitAndBeginNewTransaction.html +103 -0
  99. package/docs/functions/_saltcorn_db_common.doCount.html +2 -1
  100. package/docs/functions/_saltcorn_db_common.doDeleteWhere.html +2 -1
  101. package/docs/functions/_saltcorn_db_common.doListScTables.html +2 -1
  102. package/docs/functions/_saltcorn_db_common.doListTables.html +2 -1
  103. package/docs/functions/_saltcorn_db_common.doListUserDefinedTables.html +2 -1
  104. package/docs/functions/_saltcorn_db_common.do_add_index.html +2 -1
  105. package/docs/functions/_saltcorn_db_common.do_drop_index.html +2 -1
  106. package/docs/functions/_saltcorn_db_common.ftsFieldsSqlExpr.html +2 -1
  107. package/docs/functions/_saltcorn_db_common.mkSelectOptions.html +2 -1
  108. package/docs/functions/_saltcorn_db_common.mkVal.html +2 -1
  109. package/docs/functions/_saltcorn_db_common.mkWhere.html +2 -1
  110. package/docs/functions/_saltcorn_db_common.multi_tenant.enable_multi_tenant.html +2 -1
  111. package/docs/functions/_saltcorn_db_common.multi_tenant.getRequestContext.html +2 -1
  112. package/docs/functions/_saltcorn_db_common.multi_tenant.getTenantSchema.html +2 -1
  113. package/docs/functions/_saltcorn_db_common.multi_tenant.init.html +2 -1
  114. package/docs/functions/_saltcorn_db_common.multi_tenant.is_it_multi_tenant.html +2 -1
  115. package/docs/functions/_saltcorn_db_common.multi_tenant.runWithTenant.html +2 -1
  116. package/docs/functions/_saltcorn_db_common.orderByIsObject.html +2 -1
  117. package/docs/functions/_saltcorn_db_common.orderByIsOperator.html +2 -1
  118. package/docs/functions/_saltcorn_db_common.prefixFieldsInWhere.html +2 -1
  119. package/docs/functions/_saltcorn_db_common.reprAsJson.html +2 -1
  120. package/docs/functions/_saltcorn_db_common.slugify.html +2 -1
  121. package/docs/functions/_saltcorn_db_common.sqlBinOp.html +2 -1
  122. package/docs/functions/_saltcorn_db_common.sqlFun.html +2 -1
  123. package/docs/functions/_saltcorn_db_common.sqlsanitize.html +2 -1
  124. package/docs/functions/_saltcorn_db_common.sqlsanitizeAllowDots.html +2 -1
  125. package/docs/functions/_saltcorn_db_common.subSelectWhere.html +2 -1
  126. package/docs/functions/_saltcorn_db_common.tryCatchInTransaction.html +2 -1
  127. package/docs/functions/_saltcorn_db_common.withTransaction.html +2 -1
  128. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.androidFeatures.html +1 -1
  129. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.androidPermissions.html +1 -1
  130. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.buildTablesFile.html +1 -1
  131. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyPrepopulatedDb.html +1 -1
  132. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyServerFiles.html +1 -1
  133. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyShareExtFiles.html +1 -1
  134. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copySiteLogo.html +1 -1
  135. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyTranslationFiles.html +1 -1
  136. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.createSqliteDb.html +1 -1
  137. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.decodeProvisioningProfile.html +1 -1
  138. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.extractDomain.html +1 -1
  139. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.generateAndroidVersionCode.html +1 -1
  140. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyAndroidManifest.html +1 -1
  141. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyConfigXml.html +1 -1
  142. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyGradleConfig.html +1 -1
  143. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyInfoPlist.html +1 -1
  144. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyXcodeProjectFile.html +1 -1
  145. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepAppIcon.html +1 -1
  146. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareAppIcon.html +1 -1
  147. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareBuildDir.html +1 -1
  148. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareExportOptionsPlist.html +1 -1
  149. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashIcon.html +1 -1
  150. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashPage.html +1 -1
  151. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCapacitorConfig.html +1 -1
  152. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCfgFile.html +1 -1
  153. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeDataExtractionRules.html +1 -1
  154. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeNetworkSecurityConfig.html +1 -1
  155. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePodfile.html +1 -1
  156. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePrivacyInfo.html +1 -1
  157. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundleMobileAppCode.html +1 -1
  158. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundlePackagesAndPlugins.html +1 -1
  159. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.copyMobileAppDirs.html +1 -1
  160. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.copyPublicDirs.html +1 -1
  161. package/docs/functions/_saltcorn_sqlite.add_index.html +1 -1
  162. package/docs/functions/_saltcorn_sqlite.add_unique_constraint.html +1 -1
  163. package/docs/functions/_saltcorn_sqlite.begin.html +1 -1
  164. package/docs/functions/_saltcorn_sqlite.changeConnection.html +1 -1
  165. package/docs/functions/_saltcorn_sqlite.close.html +1 -1
  166. package/docs/functions/_saltcorn_sqlite.commit.html +1 -1
  167. package/docs/functions/_saltcorn_sqlite.count.html +1 -1
  168. package/docs/functions/_saltcorn_sqlite.deleteWhere.html +1 -1
  169. package/docs/functions/_saltcorn_sqlite.dropTable.html +1 -1
  170. package/docs/functions/_saltcorn_sqlite.dropTables.html +1 -1
  171. package/docs/functions/_saltcorn_sqlite.drop_index.html +1 -1
  172. package/docs/functions/_saltcorn_sqlite.drop_reset_schema.html +1 -1
  173. package/docs/functions/_saltcorn_sqlite.drop_unique_constraint.html +1 -1
  174. package/docs/functions/_saltcorn_sqlite.getVersion.html +1 -1
  175. package/docs/functions/_saltcorn_sqlite.get_db_filepath.html +1 -1
  176. package/docs/functions/_saltcorn_sqlite.get_sql_logging.html +1 -1
  177. package/docs/functions/_saltcorn_sqlite.init.html +1 -1
  178. package/docs/functions/_saltcorn_sqlite.insert.html +1 -1
  179. package/docs/functions/_saltcorn_sqlite.listScTables.html +1 -1
  180. package/docs/functions/_saltcorn_sqlite.listTables.html +1 -1
  181. package/docs/functions/_saltcorn_sqlite.listUserDefinedTables.html +1 -1
  182. package/docs/functions/_saltcorn_sqlite.query.html +1 -1
  183. package/docs/functions/_saltcorn_sqlite.rollback.html +1 -1
  184. package/docs/functions/_saltcorn_sqlite.select.html +1 -1
  185. package/docs/functions/_saltcorn_sqlite.selectMaybeOne.html +1 -1
  186. package/docs/functions/_saltcorn_sqlite.selectOne.html +1 -1
  187. package/docs/functions/_saltcorn_sqlite.set_sql_logging.html +1 -1
  188. package/docs/functions/_saltcorn_sqlite.sql_log.html +1 -1
  189. package/docs/functions/_saltcorn_sqlite.update.html +1 -1
  190. package/docs/functions/_saltcorn_sqlite.updateWhere.html +1 -1
  191. package/docs/functions/_saltcorn_sqlite_mobile.add_index.html +1 -1
  192. package/docs/functions/_saltcorn_sqlite_mobile.add_unique_constraint.html +1 -1
  193. package/docs/functions/_saltcorn_sqlite_mobile.count.html +1 -1
  194. package/docs/functions/_saltcorn_sqlite_mobile.deleteWhere.html +1 -1
  195. package/docs/functions/_saltcorn_sqlite_mobile.drop_index.html +1 -1
  196. package/docs/functions/_saltcorn_sqlite_mobile.drop_reset_schema.html +1 -1
  197. package/docs/functions/_saltcorn_sqlite_mobile.drop_unique_constraint.html +1 -1
  198. package/docs/functions/_saltcorn_sqlite_mobile.init.html +1 -1
  199. package/docs/functions/_saltcorn_sqlite_mobile.insert.html +1 -1
  200. package/docs/functions/_saltcorn_sqlite_mobile.insertRows.html +1 -1
  201. package/docs/functions/_saltcorn_sqlite_mobile.listScTables.html +1 -1
  202. package/docs/functions/_saltcorn_sqlite_mobile.listTables.html +1 -1
  203. package/docs/functions/_saltcorn_sqlite_mobile.listUserDefinedTables.html +1 -1
  204. package/docs/functions/_saltcorn_sqlite_mobile.query.html +1 -1
  205. package/docs/functions/_saltcorn_sqlite_mobile.select.html +1 -1
  206. package/docs/functions/_saltcorn_sqlite_mobile.selectMaybeOne.html +1 -1
  207. package/docs/functions/_saltcorn_sqlite_mobile.selectOne.html +1 -1
  208. package/docs/functions/_saltcorn_sqlite_mobile.setConnectionObject.html +1 -1
  209. package/docs/functions/_saltcorn_sqlite_mobile.tableExists.html +1 -1
  210. package/docs/functions/_saltcorn_sqlite_mobile.time.html +1 -1
  211. package/docs/functions/_saltcorn_sqlite_mobile.update.html +1 -1
  212. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_field.instanceOfField.html +1 -1
  213. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_page.instanceOfPage.html +1 -1
  214. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_view.instanceOfView.html +1 -1
  215. package/docs/functions/_saltcorn_types.Types.base_types.instanceOWithHtmlFile.html +1 -1
  216. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfErrorMsg.html +1 -1
  217. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfSuccessMsg.html +1 -1
  218. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfType.html +1 -1
  219. package/docs/functions/_saltcorn_types.generators.generateBool.html +1 -1
  220. package/docs/functions/_saltcorn_types.generators.generateString.html +1 -1
  221. package/docs/functions/_saltcorn_types.generators.num_between.html +1 -1
  222. package/docs/functions/_saltcorn_types.generators.oneOf.html +1 -1
  223. package/docs/interfaces/_saltcorn_mobile_builder.common_build_utils.ScCapacitorConfig.html +10 -10
  224. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractField.html +15 -15
  225. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractFieldRepeat.html +3 -3
  226. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_form.AbstractForm.html +27 -27
  227. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_page.AbstractPage.html +7 -7
  228. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_role.AbstractRole.html +3 -3
  229. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_table.AbstractTable.html +11 -11
  230. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_trigger.AbstractTrigger.html +17 -17
  231. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_view.AbstractView.html +10 -10
  232. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_workflow.AbstractWorkflow.html +13 -13
  233. package/docs/modules/_saltcorn_admin_models.backup.html +1 -1
  234. package/docs/modules/_saltcorn_admin_models.html +1 -1
  235. package/docs/modules/_saltcorn_admin_models.pack.html +1 -1
  236. package/docs/modules/_saltcorn_admin_models.tenant.html +1 -1
  237. package/docs/modules/_saltcorn_common_code.html +1 -1
  238. package/docs/modules/_saltcorn_data.html +3 -3
  239. package/docs/modules/_saltcorn_data.models.EventLog.html +2 -2
  240. package/docs/modules/_saltcorn_data.models.File.html +2 -2
  241. package/docs/modules/_saltcorn_data.models.Form.html +2 -2
  242. package/docs/modules/_saltcorn_data.models.PageGroup.html +2 -2
  243. package/docs/modules/_saltcorn_data.models.Table.html +2 -2
  244. package/docs/modules/_saltcorn_data.models.View.html +2 -2
  245. package/docs/modules/_saltcorn_data.models.config.html +1 -1
  246. package/docs/modules/_saltcorn_data.models.discovery.html +1 -1
  247. package/docs/modules/_saltcorn_data.models.email.html +1 -1
  248. package/docs/modules/_saltcorn_data.models.expression.html +1 -1
  249. package/docs/modules/_saltcorn_data.models.html +1 -1
  250. package/docs/modules/_saltcorn_data.models.layout.html +1 -1
  251. package/docs/modules/_saltcorn_data.models.random.html +1 -1
  252. package/docs/modules/_saltcorn_data.models.scheduler.html +1 -1
  253. package/docs/modules/_saltcorn_data.plugin_helper.html +1 -1
  254. package/docs/modules/_saltcorn_data.utils.html +1 -1
  255. package/docs/modules/_saltcorn_db_common.html +4 -2
  256. package/docs/modules/_saltcorn_db_common.multi_tenant.html +2 -1
  257. package/docs/modules/_saltcorn_markup.html +2 -2
  258. package/docs/modules/_saltcorn_mobile_builder.common_build_utils.html +1 -1
  259. package/docs/modules/_saltcorn_mobile_builder.html +1 -1
  260. package/docs/modules/_saltcorn_mobile_builder.package_bundle_utils.html +1 -1
  261. package/docs/modules/_saltcorn_sqlite.html +1 -1
  262. package/docs/modules/_saltcorn_sqlite_mobile.html +1 -1
  263. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_field.html +1 -1
  264. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_form.html +1 -1
  265. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_library.html +1 -1
  266. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_page.html +1 -1
  267. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_plugin.html +1 -1
  268. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_role.html +1 -1
  269. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_table.html +1 -1
  270. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_trigger.html +1 -1
  271. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_view.html +1 -1
  272. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_workflow.html +1 -1
  273. package/docs/modules/_saltcorn_types.ModelAbstracts.html +1 -1
  274. package/docs/modules/_saltcorn_types.Types.base_types.html +1 -1
  275. package/docs/modules/_saltcorn_types.Types.common_types.html +1 -1
  276. package/docs/modules/_saltcorn_types.Types.html +1 -1
  277. package/docs/modules/_saltcorn_types.generators.html +1 -1
  278. package/docs/modules/_saltcorn_types.html +1 -1
  279. package/docs/types/_saltcorn_data.models.EventLog.EventLogCfg.html +1 -1
  280. package/docs/types/_saltcorn_data.models.File.FileCfg.html +1 -1
  281. package/docs/types/_saltcorn_data.models.Form.AdditionalButton.html +1 -1
  282. package/docs/types/_saltcorn_data.models.Form.FormCfg.html +1 -1
  283. package/docs/types/_saltcorn_data.models.PageGroup.ScreenInfoParams.html +1 -1
  284. package/docs/types/_saltcorn_data.models.Table.ChildRelations.html +1 -1
  285. package/docs/types/_saltcorn_data.models.Table.ParentRelations.html +1 -1
  286. package/docs/types/_saltcorn_data.models.Table.RelationData.html +1 -1
  287. package/docs/types/_saltcorn_data.models.View.FindViewsPred.html +1 -1
  288. package/docs/types/_saltcorn_db_common.AggregationOptions.html +2 -1
  289. package/docs/types/_saltcorn_db_common.CoordOpts.html +2 -1
  290. package/docs/types/_saltcorn_db_common.DatabaseClient.html +2 -1
  291. package/docs/types/_saltcorn_db_common.JoinField.html +2 -1
  292. package/docs/types/_saltcorn_db_common.JoinFields.html +2 -1
  293. package/docs/types/_saltcorn_db_common.JoinOptions.html +2 -1
  294. package/docs/types/_saltcorn_db_common.JsonPath.html +2 -1
  295. package/docs/types/_saltcorn_db_common.JsonPathElem.html +2 -1
  296. package/docs/types/_saltcorn_db_common.Operator.html +2 -1
  297. package/docs/types/_saltcorn_db_common.PartialSome.html +2 -1
  298. package/docs/types/_saltcorn_db_common.PrimaryKeyValue.html +2 -1
  299. package/docs/types/_saltcorn_db_common.Row.html +2 -1
  300. package/docs/types/_saltcorn_db_common.SelectOptions.html +2 -1
  301. package/docs/types/_saltcorn_db_common.SqlAndValues.html +2 -1
  302. package/docs/types/_saltcorn_db_common.StrongRow.html +2 -1
  303. package/docs/types/_saltcorn_db_common.SubselectOptions.html +2 -1
  304. package/docs/types/_saltcorn_db_common.Value.html +2 -1
  305. package/docs/types/_saltcorn_db_common.Where.html +2 -1
  306. package/docs/types/_saltcorn_mobile_builder.IosCfg.html +1 -1
  307. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.FieldCfg.html +1 -1
  308. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.InputType.html +1 -1
  309. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_form.AdditionalButton.html +1 -1
  310. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryCfg.html +1 -1
  311. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryPack.html +1 -1
  312. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PageCfg.html +1 -1
  313. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PagePack.html +1 -1
  314. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginCfg.html +1 -1
  315. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginPack.html +1 -1
  316. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RoleCfg.html +1 -1
  317. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RolePack.html +1 -1
  318. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TableCfg.html +1 -1
  319. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TablePack.html +1 -1
  320. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerCfg.html +1 -1
  321. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerPack.html +1 -1
  322. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewCfg.html +1 -1
  323. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewPack.html +1 -1
  324. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.ConfigWorkflowStep.html +1 -1
  325. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.RunResult.html +1 -1
  326. package/docs/types/_saltcorn_types.Types.base_types.Action.html +1 -1
  327. package/docs/types/_saltcorn_types.Types.base_types.AuthenticationMethod.html +1 -1
  328. package/docs/types/_saltcorn_types.Types.base_types.CalcJoinfield.html +1 -1
  329. package/docs/types/_saltcorn_types.Types.base_types.CapacitorPlugin.html +1 -1
  330. package/docs/types/_saltcorn_types.Types.base_types.CodePagePack.html +1 -1
  331. package/docs/types/_saltcorn_types.Types.base_types.Column.html +1 -1
  332. package/docs/types/_saltcorn_types.Types.base_types.ConnectObjType.html +4 -2
  333. package/docs/types/_saltcorn_types.Types.base_types.ConnectedObjects.html +1 -1
  334. package/docs/types/_saltcorn_types.Types.base_types.CopilotSkill.html +1 -1
  335. package/docs/types/_saltcorn_types.Types.base_types.ErrorObj.html +1 -1
  336. package/docs/types/_saltcorn_types.Types.base_types.FieldLike.html +1 -1
  337. package/docs/types/_saltcorn_types.Types.base_types.FieldView.html +1 -1
  338. package/docs/types/_saltcorn_types.Types.base_types.Header.html +1 -1
  339. package/docs/types/_saltcorn_types.Types.base_types.JoinFieldOption.html +1 -1
  340. package/docs/types/_saltcorn_types.Types.base_types.Layout.html +1 -1
  341. package/docs/types/_saltcorn_types.Types.base_types.MobileConfig.html +1 -1
  342. package/docs/types/_saltcorn_types.Types.base_types.ModelPattern.html +1 -1
  343. package/docs/types/_saltcorn_types.Types.base_types.Pack.html +1 -1
  344. package/docs/types/_saltcorn_types.Types.base_types.Plugin.html +1 -1
  345. package/docs/types/_saltcorn_types.Types.base_types.PluginFunction.html +1 -1
  346. package/docs/types/_saltcorn_types.Types.base_types.PluginLayout.html +1 -1
  347. package/docs/types/_saltcorn_types.Types.base_types.PluginRoute.html +1 -1
  348. package/docs/types/_saltcorn_types.Types.base_types.PluginSourceType.html +1 -1
  349. package/docs/types/_saltcorn_types.Types.base_types.PluginType.html +1 -1
  350. package/docs/types/_saltcorn_types.Types.base_types.PluginWrap.html +1 -1
  351. package/docs/types/_saltcorn_types.Types.base_types.PluginWrapArg.html +1 -1
  352. package/docs/types/_saltcorn_types.Types.base_types.RelationOption.html +1 -1
  353. package/docs/types/_saltcorn_types.Types.base_types.Req.html +1 -1
  354. package/docs/types/_saltcorn_types.Types.base_types.Res.html +1 -1
  355. package/docs/types/_saltcorn_types.Types.base_types.ResultType.html +1 -1
  356. package/docs/types/_saltcorn_types.Types.base_types.RouteAction.html +1 -1
  357. package/docs/types/_saltcorn_types.Types.base_types.RunExtra.html +1 -1
  358. package/docs/types/_saltcorn_types.Types.base_types.SlugStepType.html +1 -1
  359. package/docs/types/_saltcorn_types.Types.base_types.StepResType.html +1 -1
  360. package/docs/types/_saltcorn_types.Types.base_types.SubField.html +1 -1
  361. package/docs/types/_saltcorn_types.Types.base_types.TableProvider.html +1 -1
  362. package/docs/types/_saltcorn_types.Types.base_types.TableQuery.html +1 -1
  363. package/docs/types/_saltcorn_types.Types.base_types.Tablely.html +1 -1
  364. package/docs/types/_saltcorn_types.Types.base_types.ViewTemplate.html +1 -1
  365. package/docs/types/_saltcorn_types.Types.common_types.ErrorMessage.html +1 -1
  366. package/docs/types/_saltcorn_types.Types.common_types.GenObj.html +1 -1
  367. package/docs/types/_saltcorn_types.Types.common_types.ReqRes.html +1 -1
  368. package/docs/types/_saltcorn_types.Types.common_types.ResultMessage.html +1 -1
  369. package/docs/types/_saltcorn_types.Types.common_types.SuccessMessage.html +1 -1
  370. package/docs/types/_saltcorn_types.Types.common_types.Type.html +1 -1
  371. package/docs/variables/_saltcorn_data.db.html +1 -1
  372. package/docs/variables/_saltcorn_data.migrations.html +1 -1
  373. package/docs/variables/_saltcorn_data.models.config.available_languages.html +1 -1
  374. package/docs/variables/_saltcorn_data.models.config.configTypes.html +1 -1
  375. package/docs/variables/_saltcorn_data.models.scheduler.runScheduler.html +1 -1
  376. package/docs/variables/_saltcorn_data.plugin_helper.run_action_column.html +1 -1
  377. package/docs/variables/_saltcorn_data.utils.NotAuthorized.html +1 -1
  378. package/docs/variables/_saltcorn_data.utils.isPushEnabled.html +1 -1
  379. package/docs/variables/_saltcorn_data.utils.sleep.html +1 -1
  380. package/docs/variables/_saltcorn_db_common.multi_tenant.tenantNamespace.html +2 -1
  381. package/help/JavaScript action code.tmd +11 -0
  382. package/locales/en.json +28 -1
  383. package/package.json +9 -9
  384. package/public/log_viewer_utils.js +3 -2
  385. package/public/saltcorn-common.js +70 -32
  386. package/public/saltcorn.js +5 -0
  387. package/routes/admin.js +5 -3
  388. package/routes/eventlog.js +20 -0
  389. package/routes/fields.js +1 -1
  390. package/routes/menu.js +98 -6
  391. package/routes/pageedit.js +1 -0
  392. package/routes/plugins.js +8 -7
  393. package/serve.js +48 -1
  394. package/tests/admin.test.js +3 -3
  395. package/wrapper.js +17 -190
@@ -395,7 +395,7 @@
395
395
  <h5><span class="tsd-kind-parameter">configuration</span>: <span class="tsd-signature-type">any</span></h5></li></ul></div>
396
396
  <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/_saltcorn_types.ModelAbstracts.abstract_trigger.AbstractTrigger.html" class="tsd-signature-type tsd-kind-interface">AbstractTrigger</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></li></ul></li></ul></div><aside class="tsd-sources">
397
397
  <ul>
398
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-types/base_types.ts#L245">saltcorn-types/base_types.ts:245</a></li></ul></aside></div>
398
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-types/base_types.ts#L245">saltcorn-types/base_types.ts:245</a></li></ul></aside></div>
399
399
  <div class="col-sidebar">
400
400
  <div class="page-menu">
401
401
  <div class="tsd-navigation settings">
@@ -29,7 +29,7 @@
29
29
  <li class="tsd-parameter">
30
30
  <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">errors</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div><aside class="tsd-sources">
31
31
  <ul>
32
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-types/common_types.ts#L8">saltcorn-types/common_types.ts:8</a></li></ul></aside></div>
32
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-types/common_types.ts#L8">saltcorn-types/common_types.ts:8</a></li></ul></aside></div>
33
33
  <div class="col-sidebar">
34
34
  <div class="page-menu">
35
35
  <div class="tsd-navigation settings">
@@ -25,7 +25,7 @@
25
25
  <li class="tsd-parameter-index-signature">
26
26
  <h5><span class="tsd-signature-symbol">[</span><span class="tsd-kind-parameter">key</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">]: </span><span class="tsd-signature-type">any</span></h5></li></ul></div><aside class="tsd-sources">
27
27
  <ul>
28
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-types/common_types.ts#L65">saltcorn-types/common_types.ts:65</a></li></ul></aside></div>
28
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-types/common_types.ts#L65">saltcorn-types/common_types.ts:65</a></li></ul></aside></div>
29
29
  <div class="col-sidebar">
30
30
  <div class="page-menu">
31
31
  <div class="tsd-navigation settings">
@@ -27,7 +27,7 @@
27
27
  <li class="tsd-parameter">
28
28
  <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">res</span><span class="tsd-signature-symbol">?: </span><a href="_saltcorn_types.Types.base_types.Res.html" class="tsd-signature-type tsd-kind-type-alias">Res</a></h5></li></ul></div><aside class="tsd-sources">
29
29
  <ul>
30
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-types/common_types.ts#L21">saltcorn-types/common_types.ts:21</a></li></ul></aside></div>
30
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-types/common_types.ts#L21">saltcorn-types/common_types.ts:21</a></li></ul></aside></div>
31
31
  <div class="col-sidebar">
32
32
  <div class="page-menu">
33
33
  <div class="tsd-navigation settings">
@@ -20,7 +20,7 @@
20
20
  <h1>Type alias ResultMessage</h1></div>
21
21
  <div class="tsd-signature"><span class="tsd-kind-type-alias">Result<wbr/>Message</span><span class="tsd-signature-symbol">:</span> <a href="_saltcorn_types.Types.common_types.ErrorMessage.html" class="tsd-signature-type tsd-kind-type-alias">ErrorMessage</a><span class="tsd-signature-symbol"> | </span><a href="_saltcorn_types.Types.common_types.SuccessMessage.html" class="tsd-signature-type tsd-kind-type-alias">SuccessMessage</a></div><aside class="tsd-sources">
22
22
  <ul>
23
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-types/common_types.ts#L26">saltcorn-types/common_types.ts:26</a></li></ul></aside></div>
23
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-types/common_types.ts#L26">saltcorn-types/common_types.ts:26</a></li></ul></aside></div>
24
24
  <div class="col-sidebar">
25
25
  <div class="page-menu">
26
26
  <div class="tsd-navigation settings">
@@ -31,7 +31,7 @@
31
31
  <li class="tsd-parameter">
32
32
  <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">any</span></h5></li></ul></div><aside class="tsd-sources">
33
33
  <ul>
34
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-types/common_types.ts#L14">saltcorn-types/common_types.ts:14</a></li></ul></aside></div>
34
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-types/common_types.ts#L14">saltcorn-types/common_types.ts:14</a></li></ul></aside></div>
35
35
  <div class="col-sidebar">
36
36
  <div class="page-menu">
37
37
  <div class="tsd-navigation settings">
@@ -102,7 +102,7 @@
102
102
  <li class="tsd-parameter">
103
103
  <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">validate_<wbr/>attributes</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type ">Function</span></h5></li></ul></div><aside class="tsd-sources">
104
104
  <ul>
105
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-types/common_types.ts#L36">saltcorn-types/common_types.ts:36</a></li></ul></aside></div>
105
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-types/common_types.ts#L36">saltcorn-types/common_types.ts:36</a></li></ul></aside></div>
106
106
  <div class="col-sidebar">
107
107
  <div class="page-menu">
108
108
  <div class="tsd-navigation settings">
@@ -18,7 +18,7 @@
18
18
  <h1>Variable db<code class="tsd-tag ts-flagConst">Const</code> </h1></div>
19
19
  <div class="tsd-signature"><span class="tsd-kind-variable">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type ">DbExportsType</span><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources">
20
20
  <ul>
21
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-data/db/index.ts#L56">saltcorn-data/db/index.ts:56</a></li></ul></aside></div>
21
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-data/db/index.ts#L56">saltcorn-data/db/index.ts:56</a></li></ul></aside></div>
22
22
  <div class="col-sidebar">
23
23
  <div class="page-menu">
24
24
  <div class="tsd-navigation settings">
@@ -18,7 +18,7 @@
18
18
  <h1>Variable migrations</h1></div>
19
19
  <div class="tsd-signature"><span class="tsd-kind-variable">migrations</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol"> = {}</span></div><aside class="tsd-sources">
20
20
  <ul>
21
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-data/index.ts#L26">saltcorn-data/index.ts:26</a></li></ul></aside></div>
21
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-data/index.ts#L26">saltcorn-data/index.ts:26</a></li></ul></aside></div>
22
22
  <div class="col-sidebar">
23
23
  <div class="page-menu">
24
24
  <div class="tsd-navigation settings">
@@ -85,7 +85,7 @@
85
85
  <li class="tsd-parameter">
86
86
  <h5><span class="tsd-kind-property">zh</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li></ul></div><aside class="tsd-sources">
87
87
  <ul>
88
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-data/models/index.ts#L56">saltcorn-data/models/index.ts:56</a></li></ul></aside></div>
88
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-data/models/index.ts#L56">saltcorn-data/models/index.ts:56</a></li></ul></aside></div>
89
89
  <div class="col-sidebar">
90
90
  <div class="page-menu">
91
91
  <div class="tsd-navigation settings">
@@ -20,7 +20,7 @@
20
20
  <h1>Variable configTypes</h1></div>
21
21
  <div class="tsd-signature"><span class="tsd-kind-variable">config<wbr/>Types</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type ">ConfigTypes</span></div><aside class="tsd-sources">
22
22
  <ul>
23
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-data/models/index.ts#L54">saltcorn-data/models/index.ts:54</a></li></ul></aside></div>
23
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-data/models/index.ts#L54">saltcorn-data/models/index.ts:54</a></li></ul></aside></div>
24
24
  <div class="col-sidebar">
25
25
  <div class="page-menu">
26
26
  <div class="tsd-navigation settings">
@@ -65,7 +65,7 @@
65
65
  <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
66
66
  <div class="tsd-comment tsd-typography"></div></li></ul></li></ul></li></ul></div><aside class="tsd-sources">
67
67
  <ul>
68
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-data/models/index.ts#L116">saltcorn-data/models/index.ts:116</a></li></ul></aside></div>
68
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-data/models/index.ts#L116">saltcorn-data/models/index.ts:116</a></li></ul></aside></div>
69
69
  <div class="col-sidebar">
70
70
  <div class="page-menu">
71
71
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable run_action_column</h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">run_<wbr/>action_<wbr/>column</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-data/index.ts#L15">saltcorn-data/index.ts:15</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-data/index.ts#L15">saltcorn-data/index.ts:15</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable NotAuthorized</h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">Not<wbr/>Authorized</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable isPushEnabled</h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">is<wbr/>Push<wbr/>Enabled</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable sleep</h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">sleep</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable tenantNamespace<code class="tsd-tag ts-flagConst">Const</code> </h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">tenant<wbr/>Namespace</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type ">AsyncLocalStorage</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type ">RequestContext</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/5be2f446bd/packages/db-common/multi-tenant.ts#L17">db-common/multi-tenant.ts:17</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/ffd6f20f90/packages/db-common/multi-tenant.ts#L17">db-common/multi-tenant.ts:17</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -76,6 +76,7 @@
76
76
  <li><a href="../modules/_saltcorn_db_common.html#tenants"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><g id="icon-1024"><rect fill="var(--color-icon-background)" stroke="#FF984D" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><path d="M9.354 16V7.24H12.174C12.99 7.24 13.638 7.476 14.118 7.948C14.606 8.412 14.85 9.036 14.85 9.82C14.85 10.604 14.606 11.232 14.118 11.704C13.638 12.168 12.99 12.4 12.174 12.4H10.434V16H9.354ZM10.434 11.428H12.174C12.646 11.428 13.022 11.284 13.302 10.996C13.59 10.7 13.734 10.308 13.734 9.82C13.734 9.324 13.59 8.932 13.302 8.644C13.022 8.356 12.646 8.212 12.174 8.212H10.434V11.428Z" fill="var(--color-text)"></path></g></svg><span>tenants</span></a></li>
77
77
  <li><a href="../functions/_saltcorn_db_common.buildInsertBulkSql.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>build<wbr/>Insert<wbr/>Bulk<wbr/>Sql</span></a></li>
78
78
  <li><a href="../functions/_saltcorn_db_common.buildInsertSql.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>build<wbr/>Insert<wbr/>Sql</span></a></li>
79
+ <li><a href="../functions/_saltcorn_db_common.commitAndBeginNewTransaction.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>commit<wbr/>And<wbr/>Begin<wbr/>New<wbr/>Transaction</span></a></li>
79
80
  <li><a href="../functions/_saltcorn_db_common.doCount.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>do<wbr/>Count</span></a></li>
80
81
  <li><a href="../functions/_saltcorn_db_common.doDeleteWhere.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>do<wbr/>Delete<wbr/>Where</span></a></li>
81
82
  <li><a href="../functions/_saltcorn_db_common.doListScTables.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>do<wbr/>List<wbr/>Sc<wbr/>Tables</span></a></li>
@@ -147,3 +147,14 @@ return { set_fields: {
147
147
  Execute JavaScript in the browser.
148
148
 
149
149
  Example: `return { eval_js: 'alert("Hello world")' }`
150
+
151
+ ### Emit Client events
152
+
153
+ Use `emit_to_client' to send socket.io events to one or multiple clients. For example, to notify the user with id 1:
154
+ ```
155
+ emit_to_client({notify: "hello admin"}, 1);
156
+ ```
157
+ This event goes to each tab where the user is logged in. Otherwise, you can use an array or omit the second parameter to emit to all users of the current tenant. All return directives from the block above can be used.
158
+
159
+
160
+ The function is not promise-based because if multiple tabs receive the event, it is hard to say when the call has finished.
package/locales/en.json CHANGED
@@ -1643,5 +1643,32 @@
1643
1643
  "Web push": "Web push",
1644
1644
  "Native Android": "Native Android",
1645
1645
  "Firebase JSON key": "Firebase JSON key",
1646
- "This is your Firebase Service Account JSON key file. ": "This is your Firebase Service Account JSON key file. "
1646
+ "This is your Firebase Service Account JSON key file. ": "This is your Firebase Service Account JSON key file. ",
1647
+ "Real-time updates": "Real-time updates",
1648
+ "Enable real-time updates for this view": "Enable real-time updates for this view",
1649
+ "today": "today",
1650
+ "Push notifications": "Push notifications",
1651
+ "Password Policy": "Password Policy",
1652
+ "Minimum password length": "Minimum password length",
1653
+ "The minimum length of passwords for users. Set to 0 to disable password requirements.": "The minimum length of passwords for users. Set to 0 to disable password requirements.",
1654
+ "Check common passwords": "Check common passwords",
1655
+ "Check if the password is in the list of common passwords. If enabled, users will not be able to use common passwords.": "Check if the password is in the list of common passwords. If enabled, users will not be able to use common passwords.",
1656
+ "Require uppercase": "Require uppercase",
1657
+ "Require at least one uppercase letter in the password": "Require at least one uppercase letter in the password",
1658
+ "Require lowercase": "Require lowercase",
1659
+ "Require at least one lowercase letter in the password": "Require at least one lowercase letter in the password",
1660
+ "Require number": "Require number",
1661
+ "Require at least one number in the password": "Require at least one number in the password",
1662
+ "Require special character": "Require special character",
1663
+ "Require at least one special character in the password": "Require at least one special character in the password",
1664
+ "Password complexity": "Password complexity",
1665
+ "The regular expression that passwords must match. Set to empty string to disable password complexity requirements.": "The regular expression that passwords must match. Set to empty string to disable password complexity requirements.",
1666
+ "Password complexity error": "Password complexity error",
1667
+ "The error message to show when password does not match the complexity requirements.": "The error message to show when password does not match the complexity requirements.",
1668
+ "Only if": "Only if",
1669
+ "Optional JavaScript expression to determine if the trigger should run.": "Optional JavaScript expression to determine if the trigger should run.",
1670
+ "Admin Page": "Admin Page",
1671
+ "User Page": "User Page",
1672
+ "User menu header": "User menu header",
1673
+ "Some themes display this header differently": "Some themes display this header differently"
1647
1674
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saltcorn/server",
3
- "version": "1.3.1-beta.2",
3
+ "version": "1.3.1-beta.4",
4
4
  "description": "Server app for Saltcorn, open-source no-code platform",
5
5
  "homepage": "https://saltcorn.com",
6
6
  "main": "index.js",
@@ -8,14 +8,14 @@
8
8
  "dependencies": {
9
9
  "@aws-sdk/client-s3": "^3.735.0",
10
10
  "@dr.pogodin/csurf": "1.15.0",
11
- "@saltcorn/admin-models": "1.3.1-beta.2",
12
- "@saltcorn/base-plugin": "1.3.1-beta.2",
13
- "@saltcorn/builder": "1.3.1-beta.2",
14
- "@saltcorn/data": "1.3.1-beta.2",
15
- "@saltcorn/filemanager": "1.3.1-beta.2",
16
- "@saltcorn/markup": "1.3.1-beta.2",
17
- "@saltcorn/plugins-loader": "1.3.1-beta.2",
18
- "@saltcorn/sbadmin2": "1.3.1-beta.2",
11
+ "@saltcorn/admin-models": "1.3.1-beta.4",
12
+ "@saltcorn/base-plugin": "1.3.1-beta.4",
13
+ "@saltcorn/builder": "1.3.1-beta.4",
14
+ "@saltcorn/data": "1.3.1-beta.4",
15
+ "@saltcorn/filemanager": "1.3.1-beta.4",
16
+ "@saltcorn/markup": "1.3.1-beta.4",
17
+ "@saltcorn/plugins-loader": "1.3.1-beta.4",
18
+ "@saltcorn/sbadmin2": "1.3.1-beta.4",
19
19
  "@socket.io/cluster-adapter": "^0.2.1",
20
20
  "@socket.io/sticky": "^1.0.1",
21
21
  "adm-zip": "0.5.16",
@@ -172,7 +172,7 @@ var logViewerHelpers = (() => {
172
172
  }
173
173
  }, 5000);
174
174
  try {
175
- socket = io({ transports: ["websocket"] });
175
+ socket = window.get_shared_socket();
176
176
  } catch (e) {
177
177
  notifyAlert({
178
178
  type: "danger",
@@ -180,7 +180,8 @@ var logViewerHelpers = (() => {
180
180
  });
181
181
  }
182
182
  startTrackingMsg();
183
- socket.on("connect", () => handleConnect(socket));
183
+ if (socket.connected) handleConnect(socket);
184
+ else socket.on("connect", () => handleConnect(socket));
184
185
  socket.on("disconnect", handleDisconnect);
185
186
  socket.on("log_msg", handleLogMsg);
186
187
  socket.on("test_conn_msg", handleTestConnMsg);
@@ -1699,10 +1699,10 @@ function notifyAlert(note, spin) {
1699
1699
  if ($modal.length && $modal.hasClass("show"))
1700
1700
  $("#modal-toasts-area").append(html);
1701
1701
  else $("#toasts-area").append(html);
1702
- if (type === "success") {
1702
+ if (type === "success" || note.remove_delay) {
1703
1703
  setTimeout(() => {
1704
1704
  $(`#${id}`).removeClass("show");
1705
- }, 5000);
1705
+ }, note.remove_delay ? note.remove_delay*1000: 5000);
1706
1706
  }
1707
1707
  }
1708
1708
 
@@ -1723,6 +1723,8 @@ function press_store_button(clicked, keepOld, disable) {
1723
1723
  .html('<i class="fas fa-spinner fa-spin"></i>')
1724
1724
  .width(width)
1725
1725
  .height(height);
1726
+ $(document).trigger("activate-spinner", $(btn));
1727
+ $(btn).trigger("spin");
1726
1728
  setTimeout(() => {
1727
1729
  $(btn).prop("disabled", true);
1728
1730
  }, 50);
@@ -1776,17 +1778,32 @@ async function common_done(res, viewnameOrElem0, isWeb = true) {
1776
1778
  };
1777
1779
  if (res.notify)
1778
1780
  await handle(res.notify, (text) =>
1779
- notifyAlert({ type: "info", text, toast_title: res.toast_title })
1781
+ notifyAlert({
1782
+ type: "info",
1783
+ text,
1784
+ toast_title: res.toast_title,
1785
+ remove_delay: res.remove_delay,
1786
+ })
1780
1787
  );
1781
1788
  if (res.error) {
1782
1789
  if (window._sc_loglevel > 4) console.trace("error response", res.error);
1783
1790
  await handle(res.error, (text) =>
1784
- notifyAlert({ type: "danger", text, toast_title: res.toast_title })
1791
+ notifyAlert({
1792
+ type: "danger",
1793
+ text,
1794
+ toast_title: res.toast_title,
1795
+ remove_delay: res.remove_delay,
1796
+ })
1785
1797
  );
1786
1798
  }
1787
1799
  if (res.notify_success)
1788
1800
  await handle(res.notify_success, (text) =>
1789
- notifyAlert({ type: "success", text, toast_title: res.toast_title })
1801
+ notifyAlert({
1802
+ type: "success",
1803
+ text,
1804
+ toast_title: res.toast_title,
1805
+ remove_delay: res.remove_delay,
1806
+ })
1790
1807
  );
1791
1808
  if (res.set_fields && (viewname || res.set_fields._viewname)) {
1792
1809
  const form =
@@ -1821,10 +1838,10 @@ async function common_done(res, viewnameOrElem0, isWeb = true) {
1821
1838
  input.attr("data-selected", res.set_fields[k]);
1822
1839
  }
1823
1840
 
1824
- input.trigger("set_form_field");
1841
+ input.trigger("set_form_field", { no_onchange: res.no_onchange });
1825
1842
  });
1826
1843
  }
1827
- form.trigger("change");
1844
+ if (!res.no_onchange) form.trigger("change");
1828
1845
  }
1829
1846
 
1830
1847
  if (res.download) {
@@ -2055,17 +2072,24 @@ function room_older(viewname, room_id, btn) {
2055
2072
  );
2056
2073
  }
2057
2074
 
2058
- function init_room(viewname, room_id) {
2059
- let socket = null;
2060
- if (parent?.saltcorn?.data?.state) {
2061
- const { server_path, jwt } =
2062
- parent.saltcorn.data.state.getState().mobileConfig;
2063
- socket = io(server_path, {
2064
- query: `jwt=${jwt}`,
2065
- transports: ["websocket"],
2066
- });
2067
- } else socket = io({ transports: ["websocket"] });
2075
+ function get_shared_socket() {
2076
+ let socket = window.sharedSocket || null;
2077
+ if (!socket) {
2078
+ if (parent?.saltcorn?.data?.state) {
2079
+ const { server_path, jwt } =
2080
+ parent.saltcorn.data.state.getState().mobileConfig;
2081
+ socket = io(server_path, {
2082
+ query: `jwt=${jwt}`,
2083
+ transports: ["websocket"],
2084
+ });
2085
+ } else socket = io({ transports: ["websocket"] });
2086
+ window.sharedSocket = socket;
2087
+ }
2088
+ return socket;
2089
+ }
2068
2090
 
2091
+ function init_room(viewname, room_id) {
2092
+ let socket = get_shared_socket();
2069
2093
  socket.emit("join_room", [viewname, room_id]);
2070
2094
  socket.on("message", (msg) => {
2071
2095
  if (msg.not_for_user_id) {
@@ -2088,32 +2112,40 @@ function init_room(viewname, room_id) {
2088
2112
  }
2089
2113
 
2090
2114
  function init_collab_room(viewname, eventCfgs) {
2091
- let socket = null;
2092
- if (parent?.saltcorn?.data?.state) {
2093
- const { server_path, jwt } =
2094
- parent.saltcorn.data.state.getState().mobileConfig;
2095
- socket = io(server_path, {
2096
- query: `jwt=${jwt}`,
2097
- transports: ["websocket"],
2098
- });
2099
- } else socket = io({ transports: ["websocket"] });
2115
+ let socket = get_shared_socket();
2100
2116
  for (const [event, callback] of Object.entries(eventCfgs.events)) {
2101
2117
  socket.on(event, callback);
2102
2118
  }
2103
- socket.on("connect", function () {
2119
+ const joinFn = () => {
2104
2120
  socket.emit("join_collab_room", viewname, (ack) => {
2105
- if (ack && ack.status === "ok") {
2121
+ if (ack && ack.status === "ok")
2106
2122
  console.log(`Joined collaboration room for view '${viewname}'`);
2107
- } else {
2108
- console.error("Failed to join collaboration room:", ack);
2109
- }
2123
+ else console.error("Failed to join collaboration room:", ack);
2110
2124
  });
2111
- });
2125
+ };
2126
+ if (socket.connected) joinFn();
2127
+ else socket.on("connect", joinFn);
2112
2128
  socket.on("disconnect", function () {
2113
2129
  console.log("Disconnected from the server");
2114
2130
  });
2115
2131
  }
2116
2132
 
2133
+ function init_dynamic_update_room() {
2134
+ if (!window.io || navigator.userAgent.includes("jsdom")) return;
2135
+ let socket = get_shared_socket();
2136
+ socket.on("dynamic_update", async (data) => {
2137
+ await common_done(data);
2138
+ });
2139
+ const joinFn = () => {
2140
+ socket.emit("join_dynamic_update_room", (ack) => {
2141
+ if (ack && ack.status === "ok") console.log("Joined dynamic update room");
2142
+ else console.error("Failed to join dynamic update room:", ack);
2143
+ });
2144
+ };
2145
+ if (socket.connected) joinFn();
2146
+ else socket.on("connect", joinFn);
2147
+ }
2148
+
2117
2149
  function cancel_form(form) {
2118
2150
  if (!form) return;
2119
2151
  $(form).trigger("reset");
@@ -2561,3 +2593,9 @@ async function initPushNotify() {
2561
2593
  console.error("Push notification initialization failed:", error);
2562
2594
  }
2563
2595
  }
2596
+
2597
+ if (document.readyState !== "loading") {
2598
+ init_dynamic_update_room();
2599
+ } else {
2600
+ document.addEventListener("DOMContentLoaded", init_dynamic_update_room);
2601
+ }
@@ -218,6 +218,9 @@ function pjax_to(href, e) {
218
218
  }
219
219
  $dest.html(res);
220
220
  if (localizer.length) localizer.attr("data-sc-local-state", href);
221
+ let $modal = $("#scmodal");
222
+ if ($modal.length && $modal.hasClass("show"))
223
+ $modal.prop("data-modal-state", href);
221
224
  initialize_page();
222
225
  document.dispatchEvent(new Event("pjax-loaded"));
223
226
  },
@@ -261,6 +264,8 @@ function spin_action_link(e) {
261
264
 
262
265
  $e.attr("data-innerhtml-prespin", $e.html());
263
266
  $e.html('<i class="fas fa-spinner fa-spin"></i>').width(width).height(height);
267
+ $(document).trigger("activate-spinner", $e);
268
+ $e.trigger("spin");
264
269
  }
265
270
 
266
271
  function reset_spinners() {
package/routes/admin.js CHANGED
@@ -500,11 +500,12 @@ router.get(
500
500
  "backup_s3_access_secret"
501
501
  );
502
502
  backupForm.values.backup_s3_region =
503
- getState().getConfig("backup_s3_region");
503
+ getState().getConfig("backup_s3_region");
504
504
  aBackupFilePrefixForm.values.backup_with_event_log = getState().getConfig(
505
505
  "backup_with_event_log"
506
506
  );
507
- aBackupFilePrefixForm.values.backup_password = getState().getConfig("backup_password");
507
+ aBackupFilePrefixForm.values.backup_password =
508
+ getState().getConfig("backup_password");
508
509
  const aSnapshotForm = snapshotForm(req);
509
510
  aSnapshotForm.values.snapshots_enabled =
510
511
  getState().getConfig("snapshots_enabled");
@@ -4126,6 +4127,8 @@ router.post(
4126
4127
  await db.deleteWhere("_sc_config", { not: { key: "letsencrypt" } });
4127
4128
  }
4128
4129
  await getState().refresh();
4130
+ await require("@saltcorn/data/standard-menu")();
4131
+
4129
4132
  if (form.values.users) {
4130
4133
  await db.deleteWhere("_sc_notifications");
4131
4134
 
@@ -4532,7 +4535,6 @@ admin_config_route({
4532
4535
  path: "/notifications",
4533
4536
  super_path: "/admin",
4534
4537
  field_names: [
4535
- "notification_in_menu",
4536
4538
  { section_header: "Progressive Web Application" },
4537
4539
  "pwa_enabled",
4538
4540
  { name: "pwa_display", showIf: { pwa_enabled: true } },
@@ -81,6 +81,18 @@ const logSettingsForm = async (req) => {
81
81
  input_type: "date",
82
82
  attributes: { minDate: new Date(), maxDate: hoursFuture(24 * 7 * 2) },
83
83
  },
84
+ {
85
+ input_type: "section_header",
86
+ label: req.__("Dynamic server side updates"),
87
+ },
88
+ {
89
+ name: "enable_dynamic_updates",
90
+ label: req.__("Enable dynamic updates"),
91
+ type: "Bool",
92
+ sublabel: req.__(
93
+ "Enable server side updates from within run_js_code actions"
94
+ ),
95
+ },
84
96
  {
85
97
  input_type: "section_header",
86
98
  label: req.__("Delete old workflow runs with status after days"),
@@ -168,6 +180,10 @@ router.get(
168
180
  "next_weekly_event",
169
181
  {}
170
182
  );
183
+ form.values.enable_dynamic_updates = getState().getConfig(
184
+ "enable_dynamic_updates",
185
+ true
186
+ );
171
187
  ["error", "finished", "running", "waiting"].forEach((k) => {
172
188
  let cfgk = `delete_${k}_workflows_days`;
173
189
  form.values[cfgk] = getState().getConfig(cfgk);
@@ -377,6 +393,10 @@ router.post(
377
393
  delete form.values[k];
378
394
  }
379
395
  }
396
+ await getState().setConfig(
397
+ "enable_dynamic_updates",
398
+ form.values.enable_dynamic_updates
399
+ );
380
400
  for (const status of ["error", "finished", "running", "waiting"]) {
381
401
  let k = `delete_${status}_workflows_days`;
382
402
  if (form.values[k]) {
package/routes/fields.js CHANGED
@@ -1530,7 +1530,7 @@ router.post(
1530
1530
  const table = Table.findOne({ name: table_name });
1531
1531
  const field = table.getField(field_name);
1532
1532
  let val = field.type?.read
1533
- ? field.type?.read(req.body[field_name])
1533
+ ? field.type?.read(req.body[field_name], field.attributes)
1534
1534
  : req.body[field_name];
1535
1535
  await db.withTransaction(async () => {
1536
1536
  await table.updateRow({ [field_name]: val }, pk, req.user);