@saltcorn/server 1.3.0 → 1.3.1-beta.0

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 (387) hide show
  1. package/app.js +9 -2
  2. package/auth/routes.js +6 -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 +36 -36
  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 +43 -36
  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 +1 -1
  97. package/docs/functions/_saltcorn_db_common.buildInsertSql.html +1 -1
  98. package/docs/functions/_saltcorn_db_common.doCount.html +1 -1
  99. package/docs/functions/_saltcorn_db_common.doDeleteWhere.html +1 -1
  100. package/docs/functions/_saltcorn_db_common.doListScTables.html +1 -1
  101. package/docs/functions/_saltcorn_db_common.doListTables.html +1 -1
  102. package/docs/functions/_saltcorn_db_common.doListUserDefinedTables.html +1 -1
  103. package/docs/functions/_saltcorn_db_common.do_add_index.html +1 -1
  104. package/docs/functions/_saltcorn_db_common.do_drop_index.html +1 -1
  105. package/docs/functions/_saltcorn_db_common.ftsFieldsSqlExpr.html +1 -1
  106. package/docs/functions/_saltcorn_db_common.mkSelectOptions.html +1 -1
  107. package/docs/functions/_saltcorn_db_common.mkVal.html +1 -1
  108. package/docs/functions/_saltcorn_db_common.mkWhere.html +1 -1
  109. package/docs/functions/_saltcorn_db_common.multi_tenant.enable_multi_tenant.html +1 -1
  110. package/docs/functions/_saltcorn_db_common.multi_tenant.getRequestContext.html +1 -1
  111. package/docs/functions/_saltcorn_db_common.multi_tenant.getTenantSchema.html +1 -1
  112. package/docs/functions/_saltcorn_db_common.multi_tenant.init.html +1 -1
  113. package/docs/functions/_saltcorn_db_common.multi_tenant.is_it_multi_tenant.html +1 -1
  114. package/docs/functions/_saltcorn_db_common.multi_tenant.runWithTenant.html +1 -1
  115. package/docs/functions/_saltcorn_db_common.orderByIsObject.html +1 -1
  116. package/docs/functions/_saltcorn_db_common.orderByIsOperator.html +1 -1
  117. package/docs/functions/_saltcorn_db_common.prefixFieldsInWhere.html +1 -1
  118. package/docs/functions/_saltcorn_db_common.reprAsJson.html +1 -1
  119. package/docs/functions/_saltcorn_db_common.slugify.html +1 -1
  120. package/docs/functions/_saltcorn_db_common.sqlBinOp.html +1 -1
  121. package/docs/functions/_saltcorn_db_common.sqlFun.html +1 -1
  122. package/docs/functions/_saltcorn_db_common.sqlsanitize.html +1 -1
  123. package/docs/functions/_saltcorn_db_common.sqlsanitizeAllowDots.html +1 -1
  124. package/docs/functions/_saltcorn_db_common.subSelectWhere.html +1 -1
  125. package/docs/functions/_saltcorn_db_common.tryCatchInTransaction.html +1 -1
  126. package/docs/functions/_saltcorn_db_common.withTransaction.html +1 -1
  127. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.androidFeatures.html +1 -1
  128. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.androidPermissions.html +1 -1
  129. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.buildTablesFile.html +1 -1
  130. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyPrepopulatedDb.html +1 -1
  131. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyServerFiles.html +1 -1
  132. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyShareExtFiles.html +1 -1
  133. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copySiteLogo.html +1 -1
  134. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyTranslationFiles.html +1 -1
  135. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.createSqliteDb.html +1 -1
  136. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.decodeProvisioningProfile.html +1 -1
  137. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.extractDomain.html +1 -1
  138. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.generateAndroidVersionCode.html +1 -1
  139. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyAndroidManifest.html +5 -3
  140. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyConfigXml.html +1 -1
  141. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyGradleConfig.html +1 -1
  142. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyInfoPlist.html +1 -1
  143. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyXcodeProjectFile.html +1 -1
  144. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepAppIcon.html +1 -1
  145. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareAppIcon.html +1 -1
  146. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareBuildDir.html +7 -2
  147. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareExportOptionsPlist.html +1 -1
  148. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashIcon.html +1 -1
  149. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashPage.html +1 -1
  150. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCapacitorConfig.html +1 -1
  151. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCfgFile.html +1 -1
  152. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeDataExtractionRules.html +1 -1
  153. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeNetworkSecurityConfig.html +1 -1
  154. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePodfile.html +1 -1
  155. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePrivacyInfo.html +1 -1
  156. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundleMobileAppCode.html +1 -1
  157. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundlePackagesAndPlugins.html +1 -1
  158. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.copyMobileAppDirs.html +1 -1
  159. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.copyPublicDirs.html +1 -1
  160. package/docs/functions/_saltcorn_sqlite.add_index.html +1 -1
  161. package/docs/functions/_saltcorn_sqlite.add_unique_constraint.html +1 -1
  162. package/docs/functions/_saltcorn_sqlite.begin.html +1 -1
  163. package/docs/functions/_saltcorn_sqlite.changeConnection.html +1 -1
  164. package/docs/functions/_saltcorn_sqlite.close.html +1 -1
  165. package/docs/functions/_saltcorn_sqlite.commit.html +1 -1
  166. package/docs/functions/_saltcorn_sqlite.count.html +1 -1
  167. package/docs/functions/_saltcorn_sqlite.deleteWhere.html +1 -1
  168. package/docs/functions/_saltcorn_sqlite.dropTable.html +1 -1
  169. package/docs/functions/_saltcorn_sqlite.dropTables.html +1 -1
  170. package/docs/functions/_saltcorn_sqlite.drop_index.html +1 -1
  171. package/docs/functions/_saltcorn_sqlite.drop_reset_schema.html +1 -1
  172. package/docs/functions/_saltcorn_sqlite.drop_unique_constraint.html +1 -1
  173. package/docs/functions/_saltcorn_sqlite.getVersion.html +1 -1
  174. package/docs/functions/_saltcorn_sqlite.get_db_filepath.html +1 -1
  175. package/docs/functions/_saltcorn_sqlite.get_sql_logging.html +1 -1
  176. package/docs/functions/_saltcorn_sqlite.init.html +1 -1
  177. package/docs/functions/_saltcorn_sqlite.insert.html +1 -1
  178. package/docs/functions/_saltcorn_sqlite.listScTables.html +1 -1
  179. package/docs/functions/_saltcorn_sqlite.listTables.html +1 -1
  180. package/docs/functions/_saltcorn_sqlite.listUserDefinedTables.html +1 -1
  181. package/docs/functions/_saltcorn_sqlite.query.html +1 -1
  182. package/docs/functions/_saltcorn_sqlite.rollback.html +1 -1
  183. package/docs/functions/_saltcorn_sqlite.select.html +1 -1
  184. package/docs/functions/_saltcorn_sqlite.selectMaybeOne.html +1 -1
  185. package/docs/functions/_saltcorn_sqlite.selectOne.html +1 -1
  186. package/docs/functions/_saltcorn_sqlite.set_sql_logging.html +1 -1
  187. package/docs/functions/_saltcorn_sqlite.sql_log.html +1 -1
  188. package/docs/functions/_saltcorn_sqlite.update.html +1 -1
  189. package/docs/functions/_saltcorn_sqlite.updateWhere.html +1 -1
  190. package/docs/functions/_saltcorn_sqlite_mobile.add_index.html +1 -1
  191. package/docs/functions/_saltcorn_sqlite_mobile.add_unique_constraint.html +1 -1
  192. package/docs/functions/_saltcorn_sqlite_mobile.count.html +1 -1
  193. package/docs/functions/_saltcorn_sqlite_mobile.deleteWhere.html +1 -1
  194. package/docs/functions/_saltcorn_sqlite_mobile.drop_index.html +1 -1
  195. package/docs/functions/_saltcorn_sqlite_mobile.drop_reset_schema.html +1 -1
  196. package/docs/functions/_saltcorn_sqlite_mobile.drop_unique_constraint.html +1 -1
  197. package/docs/functions/_saltcorn_sqlite_mobile.init.html +1 -1
  198. package/docs/functions/_saltcorn_sqlite_mobile.insert.html +1 -1
  199. package/docs/functions/_saltcorn_sqlite_mobile.insertRows.html +1 -1
  200. package/docs/functions/_saltcorn_sqlite_mobile.listScTables.html +1 -1
  201. package/docs/functions/_saltcorn_sqlite_mobile.listTables.html +1 -1
  202. package/docs/functions/_saltcorn_sqlite_mobile.listUserDefinedTables.html +1 -1
  203. package/docs/functions/_saltcorn_sqlite_mobile.query.html +1 -1
  204. package/docs/functions/_saltcorn_sqlite_mobile.select.html +1 -1
  205. package/docs/functions/_saltcorn_sqlite_mobile.selectMaybeOne.html +1 -1
  206. package/docs/functions/_saltcorn_sqlite_mobile.selectOne.html +1 -1
  207. package/docs/functions/_saltcorn_sqlite_mobile.setConnectionObject.html +1 -1
  208. package/docs/functions/_saltcorn_sqlite_mobile.tableExists.html +1 -1
  209. package/docs/functions/_saltcorn_sqlite_mobile.time.html +1 -1
  210. package/docs/functions/_saltcorn_sqlite_mobile.update.html +1 -1
  211. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_field.instanceOfField.html +1 -1
  212. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_page.instanceOfPage.html +1 -1
  213. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_view.instanceOfView.html +1 -1
  214. package/docs/functions/_saltcorn_types.Types.base_types.instanceOWithHtmlFile.html +1 -1
  215. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfErrorMsg.html +1 -1
  216. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfSuccessMsg.html +1 -1
  217. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfType.html +1 -1
  218. package/docs/functions/_saltcorn_types.generators.generateBool.html +1 -1
  219. package/docs/functions/_saltcorn_types.generators.generateString.html +1 -1
  220. package/docs/functions/_saltcorn_types.generators.num_between.html +1 -1
  221. package/docs/functions/_saltcorn_types.generators.oneOf.html +1 -1
  222. package/docs/interfaces/_saltcorn_mobile_builder.common_build_utils.ScCapacitorConfig.html +10 -10
  223. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractField.html +15 -15
  224. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractFieldRepeat.html +3 -3
  225. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_form.AbstractForm.html +27 -27
  226. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_page.AbstractPage.html +7 -7
  227. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_role.AbstractRole.html +3 -3
  228. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_table.AbstractTable.html +11 -11
  229. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_trigger.AbstractTrigger.html +16 -16
  230. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_view.AbstractView.html +10 -10
  231. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_workflow.AbstractWorkflow.html +13 -13
  232. package/docs/modules/_saltcorn_admin_models.backup.html +1 -1
  233. package/docs/modules/_saltcorn_admin_models.html +1 -1
  234. package/docs/modules/_saltcorn_admin_models.pack.html +1 -1
  235. package/docs/modules/_saltcorn_admin_models.tenant.html +1 -1
  236. package/docs/modules/_saltcorn_common_code.html +1 -1
  237. package/docs/modules/_saltcorn_data.html +3 -3
  238. package/docs/modules/_saltcorn_data.models.EventLog.html +2 -2
  239. package/docs/modules/_saltcorn_data.models.File.html +2 -2
  240. package/docs/modules/_saltcorn_data.models.Form.html +2 -2
  241. package/docs/modules/_saltcorn_data.models.PageGroup.html +2 -2
  242. package/docs/modules/_saltcorn_data.models.Table.html +2 -2
  243. package/docs/modules/_saltcorn_data.models.View.html +2 -2
  244. package/docs/modules/_saltcorn_data.models.config.html +1 -1
  245. package/docs/modules/_saltcorn_data.models.discovery.html +1 -1
  246. package/docs/modules/_saltcorn_data.models.email.html +1 -1
  247. package/docs/modules/_saltcorn_data.models.expression.html +1 -1
  248. package/docs/modules/_saltcorn_data.models.html +1 -1
  249. package/docs/modules/_saltcorn_data.models.layout.html +1 -1
  250. package/docs/modules/_saltcorn_data.models.random.html +1 -1
  251. package/docs/modules/_saltcorn_data.models.scheduler.html +1 -1
  252. package/docs/modules/_saltcorn_data.plugin_helper.html +1 -1
  253. package/docs/modules/_saltcorn_data.utils.html +1 -1
  254. package/docs/modules/_saltcorn_db_common.html +2 -2
  255. package/docs/modules/_saltcorn_db_common.multi_tenant.html +1 -1
  256. package/docs/modules/_saltcorn_markup.html +16 -6
  257. package/docs/modules/_saltcorn_mobile_builder.common_build_utils.html +1 -1
  258. package/docs/modules/_saltcorn_mobile_builder.html +1 -1
  259. package/docs/modules/_saltcorn_mobile_builder.package_bundle_utils.html +1 -1
  260. package/docs/modules/_saltcorn_sqlite.html +1 -1
  261. package/docs/modules/_saltcorn_sqlite_mobile.html +1 -1
  262. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_field.html +1 -1
  263. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_form.html +1 -1
  264. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_library.html +1 -1
  265. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_page.html +1 -1
  266. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_plugin.html +1 -1
  267. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_role.html +1 -1
  268. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_table.html +1 -1
  269. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_trigger.html +1 -1
  270. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_view.html +1 -1
  271. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_workflow.html +1 -1
  272. package/docs/modules/_saltcorn_types.ModelAbstracts.html +1 -1
  273. package/docs/modules/_saltcorn_types.Types.base_types.html +1 -1
  274. package/docs/modules/_saltcorn_types.Types.common_types.html +1 -1
  275. package/docs/modules/_saltcorn_types.Types.html +1 -1
  276. package/docs/modules/_saltcorn_types.generators.html +1 -1
  277. package/docs/modules/_saltcorn_types.html +1 -1
  278. package/docs/types/_saltcorn_data.models.EventLog.EventLogCfg.html +1 -1
  279. package/docs/types/_saltcorn_data.models.File.FileCfg.html +1 -1
  280. package/docs/types/_saltcorn_data.models.Form.AdditionalButton.html +1 -1
  281. package/docs/types/_saltcorn_data.models.Form.FormCfg.html +1 -1
  282. package/docs/types/_saltcorn_data.models.PageGroup.ScreenInfoParams.html +1 -1
  283. package/docs/types/_saltcorn_data.models.Table.ChildRelations.html +1 -1
  284. package/docs/types/_saltcorn_data.models.Table.ParentRelations.html +1 -1
  285. package/docs/types/_saltcorn_data.models.Table.RelationData.html +1 -1
  286. package/docs/types/_saltcorn_data.models.View.FindViewsPred.html +1 -1
  287. package/docs/types/_saltcorn_db_common.AggregationOptions.html +1 -1
  288. package/docs/types/_saltcorn_db_common.CoordOpts.html +1 -1
  289. package/docs/types/_saltcorn_db_common.DatabaseClient.html +1 -1
  290. package/docs/types/_saltcorn_db_common.JoinField.html +1 -1
  291. package/docs/types/_saltcorn_db_common.JoinFields.html +1 -1
  292. package/docs/types/_saltcorn_db_common.JoinOptions.html +1 -1
  293. package/docs/types/_saltcorn_db_common.JsonPath.html +1 -1
  294. package/docs/types/_saltcorn_db_common.JsonPathElem.html +1 -1
  295. package/docs/types/_saltcorn_db_common.Operator.html +1 -1
  296. package/docs/types/_saltcorn_db_common.PartialSome.html +1 -1
  297. package/docs/types/_saltcorn_db_common.PrimaryKeyValue.html +1 -1
  298. package/docs/types/_saltcorn_db_common.Row.html +1 -1
  299. package/docs/types/_saltcorn_db_common.SelectOptions.html +1 -1
  300. package/docs/types/_saltcorn_db_common.SqlAndValues.html +1 -1
  301. package/docs/types/_saltcorn_db_common.StrongRow.html +1 -1
  302. package/docs/types/_saltcorn_db_common.SubselectOptions.html +1 -1
  303. package/docs/types/_saltcorn_db_common.Value.html +1 -1
  304. package/docs/types/_saltcorn_db_common.Where.html +1 -1
  305. package/docs/types/_saltcorn_mobile_builder.IosCfg.html +1 -1
  306. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.FieldCfg.html +1 -1
  307. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.InputType.html +1 -1
  308. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_form.AdditionalButton.html +1 -1
  309. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryCfg.html +1 -1
  310. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryPack.html +1 -1
  311. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PageCfg.html +1 -1
  312. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PagePack.html +1 -1
  313. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginCfg.html +1 -1
  314. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginPack.html +1 -1
  315. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RoleCfg.html +1 -1
  316. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RolePack.html +1 -1
  317. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TableCfg.html +1 -1
  318. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TablePack.html +1 -1
  319. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerCfg.html +1 -1
  320. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerPack.html +1 -1
  321. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewCfg.html +1 -1
  322. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewPack.html +1 -1
  323. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.ConfigWorkflowStep.html +1 -1
  324. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.RunResult.html +1 -1
  325. package/docs/types/_saltcorn_types.Types.base_types.Action.html +1 -1
  326. package/docs/types/_saltcorn_types.Types.base_types.AuthenticationMethod.html +1 -1
  327. package/docs/types/_saltcorn_types.Types.base_types.CalcJoinfield.html +1 -1
  328. package/docs/types/_saltcorn_types.Types.base_types.CapacitorPlugin.html +1 -1
  329. package/docs/types/_saltcorn_types.Types.base_types.CodePagePack.html +1 -1
  330. package/docs/types/_saltcorn_types.Types.base_types.Column.html +1 -1
  331. package/docs/types/_saltcorn_types.Types.base_types.ConnectObjType.html +1 -1
  332. package/docs/types/_saltcorn_types.Types.base_types.ConnectedObjects.html +1 -1
  333. package/docs/types/_saltcorn_types.Types.base_types.CopilotSkill.html +1 -1
  334. package/docs/types/_saltcorn_types.Types.base_types.ErrorObj.html +1 -1
  335. package/docs/types/_saltcorn_types.Types.base_types.FieldLike.html +1 -1
  336. package/docs/types/_saltcorn_types.Types.base_types.FieldView.html +1 -1
  337. package/docs/types/_saltcorn_types.Types.base_types.Header.html +1 -1
  338. package/docs/types/_saltcorn_types.Types.base_types.JoinFieldOption.html +1 -1
  339. package/docs/types/_saltcorn_types.Types.base_types.Layout.html +1 -1
  340. package/docs/types/_saltcorn_types.Types.base_types.MobileConfig.html +1 -1
  341. package/docs/types/_saltcorn_types.Types.base_types.ModelPattern.html +1 -1
  342. package/docs/types/_saltcorn_types.Types.base_types.Pack.html +1 -1
  343. package/docs/types/_saltcorn_types.Types.base_types.Plugin.html +1 -1
  344. package/docs/types/_saltcorn_types.Types.base_types.PluginFunction.html +1 -1
  345. package/docs/types/_saltcorn_types.Types.base_types.PluginLayout.html +1 -1
  346. package/docs/types/_saltcorn_types.Types.base_types.PluginRoute.html +1 -1
  347. package/docs/types/_saltcorn_types.Types.base_types.PluginSourceType.html +1 -1
  348. package/docs/types/_saltcorn_types.Types.base_types.PluginType.html +1 -1
  349. package/docs/types/_saltcorn_types.Types.base_types.PluginWrap.html +1 -1
  350. package/docs/types/_saltcorn_types.Types.base_types.PluginWrapArg.html +1 -1
  351. package/docs/types/_saltcorn_types.Types.base_types.RelationOption.html +1 -1
  352. package/docs/types/_saltcorn_types.Types.base_types.Req.html +1 -1
  353. package/docs/types/_saltcorn_types.Types.base_types.Res.html +1 -1
  354. package/docs/types/_saltcorn_types.Types.base_types.ResultType.html +1 -1
  355. package/docs/types/_saltcorn_types.Types.base_types.RouteAction.html +1 -1
  356. package/docs/types/_saltcorn_types.Types.base_types.RunExtra.html +1 -1
  357. package/docs/types/_saltcorn_types.Types.base_types.SlugStepType.html +1 -1
  358. package/docs/types/_saltcorn_types.Types.base_types.StepResType.html +1 -1
  359. package/docs/types/_saltcorn_types.Types.base_types.SubField.html +1 -1
  360. package/docs/types/_saltcorn_types.Types.base_types.TableProvider.html +1 -1
  361. package/docs/types/_saltcorn_types.Types.base_types.TableQuery.html +1 -1
  362. package/docs/types/_saltcorn_types.Types.base_types.Tablely.html +1 -1
  363. package/docs/types/_saltcorn_types.Types.base_types.ViewTemplate.html +1 -1
  364. package/docs/types/_saltcorn_types.Types.common_types.ErrorMessage.html +1 -1
  365. package/docs/types/_saltcorn_types.Types.common_types.GenObj.html +1 -1
  366. package/docs/types/_saltcorn_types.Types.common_types.ReqRes.html +1 -1
  367. package/docs/types/_saltcorn_types.Types.common_types.ResultMessage.html +1 -1
  368. package/docs/types/_saltcorn_types.Types.common_types.SuccessMessage.html +1 -1
  369. package/docs/types/_saltcorn_types.Types.common_types.Type.html +1 -1
  370. package/docs/variables/_saltcorn_data.db.html +1 -1
  371. package/docs/variables/_saltcorn_data.migrations.html +1 -1
  372. package/docs/variables/_saltcorn_data.models.config.available_languages.html +1 -1
  373. package/docs/variables/_saltcorn_data.models.config.configTypes.html +1 -1
  374. package/docs/variables/_saltcorn_data.models.scheduler.runScheduler.html +1 -1
  375. package/docs/variables/_saltcorn_data.plugin_helper.run_action_column.html +1 -1
  376. package/docs/variables/_saltcorn_data.utils.NotAuthorized.html +1 -1
  377. package/docs/variables/_saltcorn_data.utils.sleep.html +1 -1
  378. package/docs/variables/_saltcorn_db_common.multi_tenant.tenantNamespace.html +1 -1
  379. package/help/Firebase JSON key.tmd +20 -0
  380. package/help/Google Services File.tmd +30 -0
  381. package/help/VAPID configuration.tmd +1 -0
  382. package/locales/en.json +20 -1
  383. package/package.json +9 -9
  384. package/routes/admin.js +61 -6
  385. package/routes/fields.js +1 -1
  386. package/routes/notifications.js +56 -1
  387. package/routes/pageedit.js +4 -0
@@ -0,0 +1,20 @@
1
+ ## Upload Your Firebase Service Account Key (JSON)
2
+
3
+ To integrate with Firebase, you'll need to select a **Service Account JSON key file**. This file allows secure communication with Firebase services such as Google Cloud Messaging.
4
+
5
+ ---
6
+
7
+ To see the file here, please upload it into your Saltcorn Filesystem.
8
+
9
+ ### What is this file?
10
+
11
+ This is a **private key file** generated by Firebase. It contains credentials for a **Service Account** that grants access to your Firebase project’s backend services. The file ends with `.json` and includes fields like:
12
+
13
+ ```json
14
+ {
15
+ "type": "service_account",
16
+ "project_id": "your-project-id",
17
+ "private_key_id": "abc123...",
18
+ "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
19
+ "client_email": "firebase-adminsdk-xxxxx@your-project-id.iam.gserviceaccount.com"
20
+ }
@@ -0,0 +1,30 @@
1
+ ## Upload Your `google-services.json` File for Firebase Cloud Messaging
2
+
3
+ To enable Firebase Cloud Messaging (FCM) integration, you need to select your app’s `google-services.json` file. This file links your Android app to your Firebase project and enables services like messaging, analytics, and more.
4
+
5
+ ---
6
+
7
+ To see the file here, please upload it into your Saltcorn Filesystem.
8
+
9
+ ### What is `google-services.json`?
10
+
11
+ This is a configuration file automatically generated by Firebase when you register an Android app with your Firebase project. It contains credentials and identifiers for Firebase services, such as:
12
+
13
+ ```json
14
+ {
15
+ "project_info": {
16
+ "project_number": "1234567890",
17
+ "project_id": "your-project-id"
18
+ },
19
+ "client": [
20
+ {
21
+ "client_info": {
22
+ "mobilesdk_app_id": "1:1234567890:android:abcdefg12345",
23
+ "android_client_info": {
24
+ "package_name": "com.yourapp.package"
25
+ }
26
+ },
27
+ ...
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1 @@
1
+ TODO
package/locales/en.json CHANGED
@@ -1624,5 +1624,24 @@
1624
1624
  "Button Style": "Button Style",
1625
1625
  "Disable full-text search": "Disable full-text search",
1626
1626
  "Use LIKE instead of tsvector. Use to match against phrase in the middle of a word.": "Use LIKE instead of tsvector. Use to match against phrase in the middle of a word.",
1627
- "Model configuration": "Model configuration"
1627
+ "Model configuration": "Model configuration",
1628
+ "Push Notifications": "Push Notifications",
1629
+ "Push Notifications enabled": "Push Notifications enabled",
1630
+ "VAPID public key": "VAPID public key",
1631
+ "Public key for VAPID authentication in web push notifications": "Public key for VAPID authentication in web push notifications",
1632
+ "VAPID private key": "VAPID private key",
1633
+ "Private key for VAPID authentication in web push notifications": "Private key for VAPID authentication in web push notifications",
1634
+ "VAPID email": "VAPID email",
1635
+ "Email address for VAPID authentication in web push notifications. Usually, it is your email address.": "Email address for VAPID authentication in web push notifications. Usually, it is your email address.",
1636
+ "Web push icon": "Web push icon",
1637
+ "Select a publicly accessible square image file": "Select a publicly accessible square image file",
1638
+ "Web push badge": "Web push badge",
1639
+ "Select a publicly accessible monochrome square image file (prefarbly 72x72px)": "Select a publicly accessible monochrome square image file (prefarbly 72x72px)",
1640
+ "Comma-separated list of relative URL route prefixes where CSRF token checking is disabled. Example: <code>/files/upload, /auth/signup</code>": "Comma-separated list of relative URL route prefixes where CSRF token checking is disabled. Example: <code>/files/upload, /auth/signup</code>",
1641
+ "Push icon": "Push icon",
1642
+ "Push badge": "Push badge",
1643
+ "Web push": "Web push",
1644
+ "Native Android": "Native Android",
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. "
1628
1647
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saltcorn/server",
3
- "version": "1.3.0",
3
+ "version": "1.3.1-beta.0",
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.0",
12
- "@saltcorn/base-plugin": "1.3.0",
13
- "@saltcorn/builder": "1.3.0",
14
- "@saltcorn/data": "1.3.0",
15
- "@saltcorn/filemanager": "1.3.0",
16
- "@saltcorn/markup": "1.3.0",
17
- "@saltcorn/plugins-loader": "1.3.0",
18
- "@saltcorn/sbadmin2": "1.3.0",
11
+ "@saltcorn/admin-models": "1.3.1-beta.0",
12
+ "@saltcorn/base-plugin": "1.3.1-beta.0",
13
+ "@saltcorn/builder": "1.3.1-beta.0",
14
+ "@saltcorn/data": "1.3.1-beta.0",
15
+ "@saltcorn/filemanager": "1.3.1-beta.0",
16
+ "@saltcorn/markup": "1.3.1-beta.0",
17
+ "@saltcorn/plugins-loader": "1.3.1-beta.0",
18
+ "@saltcorn/sbadmin2": "1.3.1-beta.0",
19
19
  "@socket.io/cluster-adapter": "^0.2.1",
20
20
  "@socket.io/sticky": "^1.0.1",
21
21
  "adm-zip": "0.5.16",
package/routes/admin.js CHANGED
@@ -2360,6 +2360,7 @@ router.get(
2360
2360
  const images = (await File.find({ mime_super: "image" })).filter((image) =>
2361
2361
  image.filename?.endsWith(".png")
2362
2362
  );
2363
+ const files = await File.find({ folder: "/" });
2363
2364
  const keystoreFiles = await File.find({ folder: "keystore_files" });
2364
2365
  const provisioningFiles = await File.find({ folder: "provisioning_files" });
2365
2366
  const withSyncInfo = await Table.find({ has_sync_info: true });
@@ -2377,6 +2378,7 @@ router.get(
2377
2378
  const xcodebuildVersion = xcodeCheckRes.version;
2378
2379
  const layout = getState().getLayout(req.user);
2379
2380
  const isSbadmin2 = layout === getState().layouts.sbadmin2;
2381
+ const pushEnabled = getState().getConfig("enable_push_notify", false);
2380
2382
  send_admin_page({
2381
2383
  res,
2382
2384
  req,
@@ -3245,7 +3247,50 @@ router.get(
3245
3247
  placeholder: "",
3246
3248
  })
3247
3249
  )
3248
- )
3250
+ ),
3251
+ // google-services.json file
3252
+ pushEnabled
3253
+ ? div(
3254
+ { class: "row pb-3" },
3255
+ div(
3256
+ { class: "col-sm-8" },
3257
+ label(
3258
+ {
3259
+ for: "googleServicesInputId",
3260
+ class: "form-label fw-bold",
3261
+ },
3262
+ req.__("Google Services File"),
3263
+ a(
3264
+ {
3265
+ href: "javascript:ajax_modal('/admin/help/Google Services File?')",
3266
+ },
3267
+ i({ class: "fas fa-question-circle ps-1" })
3268
+ )
3269
+ ),
3270
+ select(
3271
+ {
3272
+ class: "form-select",
3273
+ name: "googleServicesFile",
3274
+ id: "googleServicesInputId",
3275
+ },
3276
+ [
3277
+ option({ value: "" }, ""),
3278
+ ...files.map((file) =>
3279
+ option(
3280
+ {
3281
+ value: file.location,
3282
+ selected:
3283
+ builderSettings.googleServicesFile ===
3284
+ file.location,
3285
+ },
3286
+ file.filename
3287
+ )
3288
+ ),
3289
+ ].join("")
3290
+ )
3291
+ )
3292
+ )
3293
+ : ""
3249
3294
  )
3250
3295
  ),
3251
3296
  div(
@@ -3685,6 +3730,7 @@ router.post(
3685
3730
  keystoreFile,
3686
3731
  keystoreAlias,
3687
3732
  keystorePassword,
3733
+ googleServicesFile,
3688
3734
  } = req.body || {};
3689
3735
  const receiveShareTriggers = Trigger.find({
3690
3736
  when_trigger: "ReceiveMobileShareData",
@@ -3825,6 +3871,8 @@ router.post(
3825
3871
  spawnParams.push("--androidKeyStoreAlias", keystoreAlias);
3826
3872
  if (keystorePassword)
3827
3873
  spawnParams.push("--androidKeystorePassword", keystorePassword);
3874
+ if (googleServicesFile)
3875
+ spawnParams.push("--googleServicesFile", googleServicesFile);
3828
3876
 
3829
3877
  // if builDir exists, remove it
3830
3878
  if (
@@ -4504,24 +4552,31 @@ admin_config_route({
4504
4552
  { section_header: "Push Notifications" },
4505
4553
  "enable_push_notify",
4506
4554
  {
4507
- name: "vapid_public_key",
4555
+ name: "push_notification_icon",
4508
4556
  showIf: { enable_push_notify: true },
4509
4557
  },
4510
4558
  {
4511
- name: "vapid_private_key",
4559
+ name: "push_notification_badge",
4512
4560
  showIf: { enable_push_notify: true },
4513
4561
  },
4562
+ { section_header: "Web push" },
4514
4563
  {
4515
- name: "vapid_email",
4564
+ name: "vapid_public_key",
4516
4565
  showIf: { enable_push_notify: true },
4517
4566
  },
4518
4567
  {
4519
- name: "push_notification_icon",
4568
+ name: "vapid_private_key",
4520
4569
  showIf: { enable_push_notify: true },
4521
4570
  },
4522
4571
  {
4523
- name: "push_notification_badge",
4572
+ name: "vapid_email",
4573
+ showIf: { enable_push_notify: true },
4574
+ },
4575
+ { section_header: "Native Android" },
4576
+ {
4577
+ name: "firebase_json_key",
4524
4578
  showIf: { enable_push_notify: true },
4579
+ help: { topic: "Firebas JSON key" },
4525
4580
  },
4526
4581
  ],
4527
4582
  response(form, req, res) {
package/routes/fields.js CHANGED
@@ -629,7 +629,7 @@ const fieldFlow = (req) =>
629
629
  type: "String",
630
630
  class: "validate-expression",
631
631
  fieldview: "textarea",
632
- attributes: { rows: 2 },
632
+ attributes: { rows: 2, unsafe: true },
633
633
  validator: expressionValidator,
634
634
  showIf: { expression_type: "JavaScript expression" },
635
635
  }),
@@ -295,10 +295,11 @@ router.post(
295
295
  if (existingSub) {
296
296
  res.json({
297
297
  success: "ok",
298
- message: req.__("Subscribed to notifications"),
298
+ message: req.__("Already subscribed to notifications"),
299
299
  });
300
300
  } else {
301
301
  userSubs.push({
302
+ type: "web-push",
302
303
  endpoint: req.body.endpoint,
303
304
  keys: {
304
305
  auth: req.body.keys.auth,
@@ -318,6 +319,60 @@ router.post(
318
319
  })
319
320
  );
320
321
 
322
+ router.post(
323
+ "/fcm-token",
324
+ loggedIn,
325
+ error_catcher(async (req, res) => {
326
+ const enabled = getState().getConfig("enable_push_notify", false);
327
+ if (!enabled) {
328
+ res.status(403).json({
329
+ error: req.__("Notifications are not enabled on this server"),
330
+ });
331
+ } else {
332
+ const { token, deviceId } = req.body || {};
333
+ if (!token) {
334
+ res.status(400).json({
335
+ error: req.__("FCM token is required"),
336
+ });
337
+ return;
338
+ }
339
+ const user = req.user;
340
+ const allSubs = getState().getConfig(
341
+ "push_notification_subscriptions",
342
+ {}
343
+ );
344
+ let userSubs = allSubs[user.id] || [];
345
+ const existingSub = userSubs.find(
346
+ (s) =>
347
+ s.type === "fcm-push" && s.token === token && s.deviceId === deviceId
348
+ );
349
+ if (existingSub) {
350
+ res.json({
351
+ success: "ok",
352
+ message: req.__("FCM token already uploaded"),
353
+ });
354
+ } else {
355
+ userSubs = userSubs.filter(
356
+ (s) => s.type !== "fcm-push" || s.deviceId !== deviceId
357
+ );
358
+ userSubs.push({
359
+ type: "fcm-push",
360
+ token: token,
361
+ deviceId: deviceId,
362
+ });
363
+ await getState().setConfig("push_notification_subscriptions", {
364
+ ...allSubs,
365
+ [user.id]: userSubs,
366
+ });
367
+ res.json({
368
+ success: "ok",
369
+ message: req.__("FCM token uploaded"),
370
+ });
371
+ }
372
+ }
373
+ })
374
+ );
375
+
321
376
  router.post(
322
377
  "/remove-subscription",
323
378
  loggedIn,
@@ -183,6 +183,9 @@ const pageBuilderData = async (req, context) => {
183
183
  triggers.forEach((tr) => {
184
184
  actions.push(tr.name);
185
185
  });
186
+ const triggerActions = Trigger.trigger_actions({
187
+ apiNeverTriggers: true,
188
+ });
186
189
  const actionConfigForms = {};
187
190
  for (const name of actions) {
188
191
  const action = stateActions[name];
@@ -247,6 +250,7 @@ const pageBuilderData = async (req, context) => {
247
250
  page_groups,
248
251
  actions: actionsNotRequiringRow,
249
252
  builtInActions: ["GoBack"],
253
+ triggerActions,
250
254
  library,
251
255
  min_role: context.min_role,
252
256
  actionConfigForms,