@saltcorn/server 1.6.0-beta.1 → 1.6.0-beta.10
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.
- package/CHANGELOG.md +72 -3
- package/app.js +32 -12
- package/auth/admin.js +109 -22
- package/auth/routes.js +178 -61
- package/auth/testhelp.js +9 -19
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/_saltcorn_admin-models.models_snapshot.Snapshot.html +2 -2
- package/docs/classes/_saltcorn_common-code.relations_relation.Relation.html +3 -3
- package/docs/classes/_saltcorn_common-code.relations_relations_finder.RelationsFinder.html +5 -5
- package/docs/classes/_saltcorn_data.diagram_cy_raster.CytoscapeRaster.html +4 -4
- package/docs/classes/_saltcorn_data.diagram_nodes_dummy_node.DummyNode.html +4 -4
- package/docs/classes/_saltcorn_data.diagram_nodes_node.Node.html +4 -4
- package/docs/classes/_saltcorn_data.diagram_nodes_page_node.PageNode.html +4 -4
- package/docs/classes/_saltcorn_data.diagram_nodes_table_node.TableNode.html +4 -4
- package/docs/classes/_saltcorn_data.diagram_nodes_trigger_node.TriggerNode.html +4 -4
- package/docs/classes/_saltcorn_data.diagram_nodes_view_node.ViewNode.html +4 -4
- package/docs/classes/_saltcorn_data.mobile-mocks_node_async_hooks.AsyncLocalStorage.html +2 -2
- package/docs/classes/_saltcorn_data.models_crash.Crash.html +2 -2
- package/docs/classes/_saltcorn_data.models_eventlog.EventLog.html +2 -2
- package/docs/classes/_saltcorn_data.models_field.Field.html +9 -9
- package/docs/classes/_saltcorn_data.models_fieldrepeat.FieldRepeat.html +2 -2
- package/docs/classes/_saltcorn_data.models_file.File.html +21 -21
- package/docs/classes/_saltcorn_data.models_form.Form.html +2 -2
- package/docs/classes/_saltcorn_data.models_internal_mail_queue.MailQueue.html +4 -4
- package/docs/classes/_saltcorn_data.models_internal_push_message_helper.PushMessageHelper.html +7 -7
- package/docs/classes/_saltcorn_data.models_library.Library.html +2 -2
- package/docs/classes/_saltcorn_data.models_model.Model.html +2 -2
- package/docs/classes/_saltcorn_data.models_model_instance.ModelInstance.html +2 -2
- package/docs/classes/_saltcorn_data.models_notification.Notification.html +2 -2
- package/docs/classes/_saltcorn_data.models_page.Page.html +12 -11
- package/docs/classes/_saltcorn_data.models_page_group.PageGroup.html +16 -16
- package/docs/classes/_saltcorn_data.models_page_group_member.PageGroupMember.html +8 -8
- package/docs/classes/_saltcorn_data.models_plugin.Plugin.html +45 -10
- package/docs/classes/_saltcorn_data.models_role.Role.html +2 -2
- package/docs/classes/_saltcorn_data.models_table.Table.html +67 -65
- package/docs/classes/_saltcorn_data.models_table_constraints.TableConstraint.html +2 -2
- package/docs/classes/_saltcorn_data.models_tag.Tag.html +2 -2
- package/docs/classes/_saltcorn_data.models_tag_entry.TagEntry.html +2 -2
- package/docs/classes/_saltcorn_data.models_trigger.Trigger.html +22 -20
- package/docs/classes/_saltcorn_data.models_user.User.html +32 -32
- package/docs/classes/_saltcorn_data.models_view.View.html +16 -15
- package/docs/classes/_saltcorn_data.models_workflow.Workflow.html +2 -2
- package/docs/classes/_saltcorn_data.models_workflow_run.WorkflowRun.html +2 -2
- package/docs/classes/_saltcorn_data.models_workflow_step.WorkflowStep.html +2 -2
- package/docs/classes/_saltcorn_data.models_workflow_trace.MetaData.html +2 -2
- package/docs/classes/_saltcorn_data.models_workflow_trace.WorkflowTrace.html +2 -2
- package/docs/classes/_saltcorn_mobile-builder.mobile-builder.MobileBuilder.html +2 -3
- package/docs/classes/_saltcorn_mobile-builder.utils_capacitor-helper.CapacitorHelper.html +2 -2
- package/docs/enums/_saltcorn_common-code.relations_relation_types.RelationType.html +2 -2
- package/docs/enums/_saltcorn_common-code.relations_relation_types.ViewDisplayType.html +2 -2
- package/docs/functions/_saltcorn_admin-models.models_config-check.runConfigurationCheck.html +1 -1
- package/docs/functions/_saltcorn_common-code.relations_relation_helpers.buildRelationPath.html +1 -1
- package/docs/functions/_saltcorn_common-code.relations_relation_helpers.buildTableCaches.html +1 -1
- package/docs/functions/_saltcorn_common-code.relations_relation_helpers.parseLegacyRelation.html +1 -1
- package/docs/functions/_saltcorn_common-code.relations_relation_helpers.parseRelationPath.html +1 -1
- package/docs/functions/_saltcorn_common-code.tests_test_data.fixturesData.html +1 -1
- package/docs/functions/_saltcorn_common-code.tests_test_data.withAnotherUserField.html +1 -1
- package/docs/functions/_saltcorn_common-code.tests_test_data.withKeyFromLayerThree.html +1 -1
- package/docs/functions/_saltcorn_common-code.tests_test_data.withKeyFromLayerTwo.html +1 -1
- package/docs/functions/_saltcorn_common-code.tests_test_data.withMultipleInbounds.html +1 -1
- package/docs/functions/_saltcorn_common-code.tests_test_data.withSecondTopicField.html +1 -1
- package/docs/functions/_saltcorn_common-code.tests_test_data.withSimplePostTopicrelation.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.action_link.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.action_url.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.fill_presets.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.getForm.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.get_view_link_query.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.get_viewable_fields.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.get_viewable_fields_from_layout.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.make_link.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.objToQueryString.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.parse_view_select.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.setDateLocales.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.splitUniques.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.standardBlockDispatch.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.standardLayoutRowVisitor.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.transformForm.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.updateViewSelect.html +1 -1
- package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.view_linker.html +1 -1
- package/docs/functions/_saltcorn_data.db_connect_mobile.getConnectObject.html +1 -1
- package/docs/functions/_saltcorn_data.db_reset_schema.reset.html +1 -1
- package/docs/functions/_saltcorn_data.diagram_cy_generate_utils.generateCyCode.html +1 -1
- package/docs/functions/_saltcorn_data.diagram_cy_generate_utils.genereateCyCfg.html +1 -1
- package/docs/functions/_saltcorn_data.diagram_node_extract_utils.buildObjectTrees.html +1 -1
- package/docs/functions/_saltcorn_data.diagram_node_extract_utils.extractFromColumns.html +1 -1
- package/docs/functions/_saltcorn_data.diagram_node_extract_utils.extractFromLayout.html +1 -1
- package/docs/functions/_saltcorn_data.diagram_node_extract_utils.extractViewToCreate.html +1 -1
- package/docs/functions/_saltcorn_data.migrate.create_blank_migration.html +1 -1
- package/docs/functions/_saltcorn_data.migrate.getMigrationsInDB.html +1 -1
- package/docs/functions/_saltcorn_data.migrate.migrate.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202102091312.js.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202210051058.js.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202210101540.js.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202304281224.js.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202307211459.js.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202502131103.js.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202508011455.js.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202510152058.js.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202603101553.sql_pg.html +1 -1
- package/docs/functions/_saltcorn_data.migrations_202604111200.js.html +1 -0
- package/docs/functions/_saltcorn_data.migrations_202604141200.js.html +1 -0
- package/docs/functions/_saltcorn_data.mobile-mocks_node_child_process.execSync.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_fs.createReadStream.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_fs.readdirSync.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_fs.writeFileSync.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.mkdir.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.readFile.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.readdir.html +1 -0
- package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.stat.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.unlink.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.writeFile.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_latest-version.latestVersion.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_v8.deserialize.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_node_v8.serialize.html +1 -1
- package/docs/functions/_saltcorn_data.mobile-mocks_npm_env-paths.envPaths.html +1 -1
- package/docs/functions/_saltcorn_data.model-helper.get_predictor.html +1 -1
- package/docs/functions/_saltcorn_data.model-helper.run_jupyter_model.html +1 -1
- package/docs/functions/_saltcorn_data.model-helper.shorten_trackback.html +1 -1
- package/docs/functions/_saltcorn_data.model-helper.write_csv.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_async_json_stream.async_json_stream.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_query.aggregation_query_fields.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_query.getAggAndField.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_query.joinfield_renamer.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_query.process_aggregations.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.buildKeyFromRelative.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.copyObject.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.deleteObject.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.downloadBuffer.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getPublicFileUrl.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getResolvedBucket.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getS3Client.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getServeUrl.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getSignedFileUrl.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.headObject.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.isS3Enabled.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.listS3Folder.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.publicUrlToRelativePath.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.relativeKeyToPath.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.setObjectMetadata.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_s3_helpers.uploadBuffer.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_table_helper.boolExamples.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_table_helper.colorExamples.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_table_helper.floatExamples.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_table_helper.get_formula_examples.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_table_helper.intExamples.html +1 -1
- package/docs/functions/_saltcorn_data.models_internal_table_helper.stringExamples.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.build_schema_data.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.calcfldViewConfig.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.calcfldViewOptions.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.calcrelViewOptions.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.displayType.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.field_picker_fields.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.generate_joined_query.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.getActionConfigFields.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.get_child_views.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.get_inbound_relation_opts.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.get_inbound_self_relation_opts.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.get_link_view_opts.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.get_many_to_many_relation_opts.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.get_parent_views.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.initial_config_all_fields.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.json_list_to_external_table.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.link_view.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.pathToState.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.picked_fields_to_query.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.readState.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.readStateStrict.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.runCollabEvents.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.run_action_column.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.stateFieldsToQuery.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.stateFieldsToWhere.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.stateToQueryString.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-helper.strictParseInt.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-testing.auto_test_plugin.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-testing.check_view_columns.html +1 -1
- package/docs/functions/_saltcorn_data.plugin-testing.generate_attributes.html +1 -1
- package/docs/functions/_saltcorn_data.standard-menu.create_standard_menu.html +1 -1
- package/docs/functions/_saltcorn_data.tests_assertions.assertIsErrorMsg.html +1 -1
- package/docs/functions/_saltcorn_data.tests_assertions.assertIsErrorsMsg.html +1 -1
- package/docs/functions/_saltcorn_data.tests_assertions.assertIsRow.html +1 -1
- package/docs/functions/_saltcorn_data.tests_assertions.assertIsSet.html +1 -1
- package/docs/functions/_saltcorn_data.tests_assertions.assertIsType.html +1 -1
- package/docs/functions/_saltcorn_data.tests_assertions.assertsIsSuccessMessage.html +1 -1
- package/docs/functions/_saltcorn_data.tests_assertions.assertsObjectIsUser.html +1 -1
- package/docs/functions/_saltcorn_data.tests_common_helpers.createAnotherUserField.html +1 -1
- package/docs/functions/_saltcorn_data.tests_common_helpers.createKeyFromLevelTwo.html +1 -1
- package/docs/functions/_saltcorn_data.tests_common_helpers.createLevelThreeInbound.html +1 -1
- package/docs/functions/_saltcorn_data.tests_common_helpers.createMultipleInbounds.html +1 -1
- package/docs/functions/_saltcorn_data.tests_common_helpers.createSecondTopicField.html +1 -1
- package/docs/functions/_saltcorn_data.tests_common_helpers.prepareEmployeeDepartment.html +1 -1
- package/docs/functions/_saltcorn_data.tests_common_helpers.prepareSimpleTopicPostRelation.html +1 -1
- package/docs/functions/_saltcorn_data.tests_remote_query_helper.deleteViewFromServer.html +1 -1
- package/docs/functions/_saltcorn_data.tests_remote_query_helper.prepareQueryEnviroment.html +1 -1
- package/docs/functions/_saltcorn_data.tests_remote_query_helper.sendViewToServer.html +1 -1
- package/docs/functions/_saltcorn_data.translate.hasLLM.html +1 -1
- package/docs/functions/_saltcorn_data.translate.translate.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.ftsFieldsSqlExpr.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.mkSelectOptions.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.mkWhere.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.orderByIsObject.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.orderByIsOperator.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.prefixFieldsInWhere.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.sqlBinOp.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.sqlFun.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.sqlsanitize.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.sqlsanitizeAllowDots.html +1 -1
- package/docs/functions/_saltcorn_db-common.internal.subSelectWhere.html +1 -1
- package/docs/functions/_saltcorn_db-common.multi-tenant.enable_multi_tenant.html +1 -1
- package/docs/functions/_saltcorn_db-common.multi-tenant.getRequestContext.html +1 -1
- package/docs/functions/_saltcorn_db-common.multi-tenant.getTenantSchema.html +1 -1
- package/docs/functions/_saltcorn_db-common.multi-tenant.init.html +1 -1
- package/docs/functions/_saltcorn_db-common.multi-tenant.is_it_multi_tenant.html +1 -1
- package/docs/functions/_saltcorn_db-common.multi-tenant.runWithTenant.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.buildInsertBulkSql.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.buildInsertSql.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.commitAndBeginNewTransaction.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.doCount.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.doDeleteWhere.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.doListScTables.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.doListTables.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.doListUserDefinedTables.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.do_add_index.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.do_drop_index.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.mkVal.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.openOrUseTransaction.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.reprAsJson.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.slugify.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.tryCatchInTransaction.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.whenTransactionisFree.html +1 -1
- package/docs/functions/_saltcorn_db-common.sqlite-commons.withTransaction.html +1 -1
- package/docs/functions/_saltcorn_markup.mktag.mkTag.html +1 -1
- package/docs/functions/_saltcorn_markup.tabs.tabs.html +1 -1
- package/docs/functions/_saltcorn_markup.workflow.renderWorkflow.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.androidFeatures.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.androidPermissions.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.buildTablesFile.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copyPrepopulatedDb.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copyServerFiles.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copyShareExtFiles.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copySiteLogo.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copyTranslationFiles.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.createSqliteDb.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.extractDomain.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.generateAndroidVersionCode.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.hasAuthMethod.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyAndroidManifest.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyAppDelegate.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyConfigXml.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyGradleConfig.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyInfoPlist.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyShareViewController.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyXcodeProjectFile.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepAppIcon.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareAppIcon.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareBuildDir.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareExportOptionsPlist.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareSplashIcon.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareSplashPage.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.runAddEntitlementsScript.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeCapacitorConfig.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeCfgFile.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeDataExtractionRules.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeEntitlementsPlist.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeNetworkSecurityConfig.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writePodfile.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writePrivacyInfo.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.bundleMobileAppCode.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.bundlePackagesAndPlugins.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.copyOptionalSource.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.copyPluginMobileAppDirs.html +1 -1
- package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.copyPublicDirs.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.add_index.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.add_unique_constraint.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.count.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.deleteWhere.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.drop_index.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.drop_reset_schema.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.drop_unique_constraint.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.init.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.insert.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.insertRows.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.listScTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.listTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.listUserDefinedTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.query.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.select.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.selectMaybeOne.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.selectOne.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.setConnectionObject.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.tableExists.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.time.html +1 -1
- package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.update.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.add_index.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.add_unique_constraint.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.begin.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.changeConnection.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.close.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.commit.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.count.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.deleteWhere.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.dropTable.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.dropTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.drop_index.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.drop_reset_schema.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.drop_unique_constraint.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.getVersion.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.get_db_filepath.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.get_sql_logging.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.init.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.insert.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.listScTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.listTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.listUserDefinedTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.query.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.rollback.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.select.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.selectMaybeOne.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.selectOne.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.set_sql_logging.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.sql_log.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.update.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sqlite.updateWhere.html +1 -1
- package/docs/functions/_saltcorn_types.base_types.instanceOWithHtmlFile.html +1 -1
- package/docs/functions/_saltcorn_types.base_types.instanceOfFieldViewEdit.html +1 -1
- package/docs/functions/_saltcorn_types.base_types.instanceOfFieldViewShow.html +1 -1
- package/docs/functions/_saltcorn_types.base_types.instanceOfPack.html +1 -1
- package/docs/functions/_saltcorn_types.common_types.instanceOfErrorMsg.html +1 -1
- package/docs/functions/_saltcorn_types.common_types.instanceOfSuccessMsg.html +1 -1
- package/docs/functions/_saltcorn_types.common_types.instanceOfType.html +1 -1
- package/docs/functions/_saltcorn_types.model-abstracts_abstract_field.instanceOfField.html +1 -1
- package/docs/functions/_saltcorn_types.model-abstracts_abstract_page.instanceOfPage.html +1 -1
- package/docs/functions/_saltcorn_types.model-abstracts_abstract_plugin.instanceOfPlugin.html +1 -1
- package/docs/functions/_saltcorn_types.model-abstracts_abstract_table.instanceOfTable.html +1 -1
- package/docs/functions/_saltcorn_types.model-abstracts_abstract_view.instanceOfView.html +1 -1
- package/docs/hierarchy.html +1 -1
- package/docs/interfaces/_saltcorn_db-common.dbtypes.UserLike.html +2 -2
- package/docs/interfaces/_saltcorn_markup.types.TagExports.html +2 -2
- package/docs/interfaces/_saltcorn_mobile-builder.utils_common-build-utils.ScCapacitorConfig.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_field.AbstractField.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_field.AbstractFieldRepeat.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_form.AbstractForm.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_page.AbstractPage.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_page_group.AbstractPageGroup.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_page_group_member.AbstractPageGroupMember.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_plugin.AbstractPlugin.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_role.AbstractRole.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_table.AbstractTable.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_tag.AbstractTag.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_tag_entry.AbstractTagEntry.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_trigger.AbstractTrigger.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_user.AbstractUser.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_user.ForUserRequest.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_view.AbstractView.html +2 -2
- package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_workflow.AbstractWorkflow.html +2 -2
- package/docs/modules/_saltcorn_data.html +1 -1
- package/docs/modules/_saltcorn_data.migrations_202604091531.html +1 -0
- package/docs/modules/_saltcorn_data.migrations_202604111200.html +1 -0
- package/docs/modules/_saltcorn_data.migrations_202604141200.html +1 -0
- package/docs/modules/_saltcorn_data.mobile-mocks_node_fs.html +1 -1
- package/docs/modules/_saltcorn_data.mobile-mocks_node_fs_promises.html +1 -1
- package/docs/modules/_saltcorn_data.mobile-mocks_npm_npm-registry-fetch.html +1 -0
- package/docs/modules/_saltcorn_data.mobile-mocks_saltcorn_admin-models-tenant.html +1 -0
- package/docs/modules/_saltcorn_data.mobile-mocks_saltcorn_plugins-loader-plugin-installer.html +1 -0
- package/docs/modules/_saltcorn_data.mobile-mocks_saltcorn_plugins-loader-stable-versioning.html +1 -0
- package/docs/modules/_saltcorn_data.models_index.discovery.html +1 -1
- package/docs/types/_saltcorn_data.diagram_node_extract_utils.ExtractOpts.html +2 -2
- package/docs/types/_saltcorn_data.diagram_node_extract_utils.ExtractResult.html +2 -2
- package/docs/types/_saltcorn_data.diagram_nodes_node.NodeType.html +1 -1
- package/docs/types/_saltcorn_data.models_config.ConfigTypes.html +1 -1
- package/docs/types/_saltcorn_data.models_config.SingleConfig.html +1 -1
- package/docs/types/_saltcorn_data.models_eventlog.EventLogCfg.html +2 -2
- package/docs/types/_saltcorn_data.models_file.FileCfg.html +2 -2
- package/docs/types/_saltcorn_data.models_form.AdditionalButton.html +1 -1
- package/docs/types/_saltcorn_data.models_form.FormCfg.html +2 -2
- package/docs/types/_saltcorn_data.models_internal_push_message_helper.MobileSubscription.html +2 -2
- package/docs/types/_saltcorn_data.models_internal_push_message_helper.WebPushSubscription.html +2 -2
- package/docs/types/_saltcorn_data.models_internal_s3_helpers.S3HeadResult.html +1 -1
- package/docs/types/_saltcorn_data.models_internal_s3_helpers.S3ListResult.html +2 -2
- package/docs/types/_saltcorn_data.models_page_group.ScreenInfoParams.html +2 -2
- package/docs/types/_saltcorn_data.models_table.ChildRelations.html +2 -2
- package/docs/types/_saltcorn_data.models_table.ParentRelations.html +2 -2
- package/docs/types/_saltcorn_data.models_table.RelationData.html +2 -2
- package/docs/types/_saltcorn_data.models_tag_entry.TagEntryCfg.html +1 -1
- package/docs/types/_saltcorn_data.models_view.FindViewsPred.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.AggregationOptions.html +2 -2
- package/docs/types/_saltcorn_db-common.dbtypes.CoordOpts.html +2 -2
- package/docs/types/_saltcorn_db-common.dbtypes.DatabaseClient.html +2 -2
- package/docs/types/_saltcorn_db-common.dbtypes.JoinField.html +2 -2
- package/docs/types/_saltcorn_db-common.dbtypes.JoinFields.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.JoinOptions.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.JsonPath.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.JsonPathElem.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.Operator.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.PartialSome.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.PrimaryKeyValue.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.Row.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.SelectOptions.html +2 -2
- package/docs/types/_saltcorn_db-common.dbtypes.StrongRow.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.SubselectOptions.html +2 -2
- package/docs/types/_saltcorn_db-common.dbtypes.Value.html +1 -1
- package/docs/types/_saltcorn_db-common.dbtypes.Where.html +2 -2
- package/docs/types/_saltcorn_db-common.sqlite-commons.SqlAndValues.html +2 -2
- package/docs/types/_saltcorn_db-common.types.DbExportsType.html +2 -2
- package/docs/types/_saltcorn_db-common.types.GenObj.html +1 -1
- package/docs/types/_saltcorn_markup.emergency_layout.WrapParams.html +2 -2
- package/docs/types/_saltcorn_markup.helpers.CheckBoxGroupOpts.html +2 -2
- package/docs/types/_saltcorn_markup.helpers.PaginationOpts.html +2 -2
- package/docs/types/_saltcorn_markup.helpers.RadioGroupOpts.html +2 -2
- package/docs/types/_saltcorn_markup.helpers.SearchBarOpts.html +2 -2
- package/docs/types/_saltcorn_markup.layout.RenderOpts-1.html +2 -2
- package/docs/types/_saltcorn_markup.layout.RenderOpts.html +2 -2
- package/docs/types/_saltcorn_markup.mjml-layout.RenderOpts.html +2 -2
- package/docs/types/_saltcorn_markup.table.HeadersParams.html +2 -2
- package/docs/types/_saltcorn_markup.table.OptsParams.html +2 -2
- package/docs/types/_saltcorn_markup.types.AttributeVal.html +1 -1
- package/docs/types/_saltcorn_markup.types.Attributes.html +2 -2
- package/docs/types/_saltcorn_markup.types.ClassVal.html +1 -1
- package/docs/types/_saltcorn_markup.types.Element.html +1 -1
- package/docs/types/_saltcorn_markup.types.Falsy.html +1 -1
- package/docs/types/_saltcorn_markup.types.StyleVal.html +1 -1
- package/docs/types/_saltcorn_markup.types.TagFunction.html +1 -1
- package/docs/types/_saltcorn_mobile-builder.mobile-builder.IosCfg.html +2 -2
- package/docs/types/_saltcorn_mobile-builder.utils_capacitor-helper.CapacitorCfg.html +2 -2
- package/docs/types/_saltcorn_types.base_types.Action.html +5 -4
- package/docs/types/_saltcorn_types.base_types.AuthenticationMethod.html +2 -2
- package/docs/types/_saltcorn_types.base_types.CalcJoinfield.html +2 -2
- package/docs/types/_saltcorn_types.base_types.CapacitorPlugin.html +2 -2
- package/docs/types/_saltcorn_types.base_types.CodePagePack.html +2 -2
- package/docs/types/_saltcorn_types.base_types.Column.html +2 -2
- package/docs/types/_saltcorn_types.base_types.ConnectObjType.html +2 -2
- package/docs/types/_saltcorn_types.base_types.ConnectedObjects.html +2 -2
- package/docs/types/_saltcorn_types.base_types.CopilotSkill.html +2 -2
- package/docs/types/_saltcorn_types.base_types.ErrorObj.html +2 -2
- package/docs/types/_saltcorn_types.base_types.FieldLike.html +1 -1
- package/docs/types/_saltcorn_types.base_types.FieldView.html +1 -1
- package/docs/types/_saltcorn_types.base_types.Header.html +2 -2
- package/docs/types/_saltcorn_types.base_types.JoinFieldOption.html +2 -2
- package/docs/types/_saltcorn_types.base_types.Layout.html +1 -1
- package/docs/types/_saltcorn_types.base_types.MenuItem.html +2 -2
- package/docs/types/_saltcorn_types.base_types.MobileConfig.html +2 -3
- package/docs/types/_saltcorn_types.base_types.ModelPattern.html +6 -6
- package/docs/types/_saltcorn_types.base_types.Pack.html +2 -2
- package/docs/types/_saltcorn_types.base_types.Plugin.html +1 -1
- package/docs/types/_saltcorn_types.base_types.PluginFunction.html +3 -2
- package/docs/types/_saltcorn_types.base_types.PluginLayout.html +2 -2
- package/docs/types/_saltcorn_types.base_types.PluginRoute.html +2 -2
- package/docs/types/_saltcorn_types.base_types.PluginSourceType.html +1 -1
- package/docs/types/_saltcorn_types.base_types.PluginType.html +2 -2
- package/docs/types/_saltcorn_types.base_types.PluginWrap.html +1 -1
- package/docs/types/_saltcorn_types.base_types.PluginWrapArg.html +2 -2
- package/docs/types/_saltcorn_types.base_types.RelationOption.html +2 -2
- package/docs/types/_saltcorn_types.base_types.Req.html +2 -2
- package/docs/types/_saltcorn_types.base_types.Res.html +2 -2
- package/docs/types/_saltcorn_types.base_types.ResultType.html +2 -2
- package/docs/types/_saltcorn_types.base_types.RouteAction.html +1 -1
- package/docs/types/_saltcorn_types.base_types.RunExtra.html +1 -1
- package/docs/types/_saltcorn_types.base_types.SlugStepType.html +2 -2
- package/docs/types/_saltcorn_types.base_types.StepResType.html +1 -1
- package/docs/types/_saltcorn_types.base_types.SubField.html +2 -2
- package/docs/types/_saltcorn_types.base_types.TableProvider.html +2 -2
- package/docs/types/_saltcorn_types.base_types.TableQuery.html +2 -2
- package/docs/types/_saltcorn_types.base_types.Tablely.html +1 -1
- package/docs/types/_saltcorn_types.base_types.ViewTemplate.html +3 -2
- package/docs/types/_saltcorn_types.common_types.ErrorMessage.html +2 -2
- package/docs/types/_saltcorn_types.common_types.GenObj.html +1 -1
- package/docs/types/_saltcorn_types.common_types.ReqRes.html +2 -2
- package/docs/types/_saltcorn_types.common_types.ResultMessage.html +1 -1
- package/docs/types/_saltcorn_types.common_types.SuccessMessage.html +2 -2
- package/docs/types/_saltcorn_types.common_types.Type.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_event_log.EventLogPack.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_field.FieldCfg.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_field.InputType.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_form.AdditionalButton.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_library.LibraryCfg.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_library.LibraryPack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_model.ModelCfg.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_model.ModelPack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_model_instance.ModelInstanceCfg.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_model_instance.ModelInstancePack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_page.PageCfg.html +3 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_page.PagePack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_page_group.PageGroupCfg.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_page_group.PageGroupPack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_page_group_member.PageGroupMemberCfg.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_page_group_member.PageGroupMemberPack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_plugin.PluginCfg.html +3 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_plugin.PluginPack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_role.RoleCfg.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_role.RolePack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_table.TableCfg.html +3 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_table.TablePack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_tag.TagPack.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_tag_entry.TagEntryPack.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_trigger.TriggerCfg.html +3 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_trigger.TriggerPack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_view.ViewCfg.html +3 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_view.ViewPack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow.ConfigWorkflowStep.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow.RunResult.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow_run.WorkflowRunCfg.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow_step.WorkflowStepCfg.html +2 -2
- package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow_step.WorkflowStepPack.html +1 -1
- package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow_trace.WorkflowTraceCfg.html +2 -2
- package/docs/variables/_saltcorn_admin-models..backup.create_backup.html +1 -1
- package/docs/variables/_saltcorn_admin-models..backup.create_csv_from_rows.html +1 -1
- package/docs/variables/_saltcorn_admin-models..backup.restore.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.add_to_menu.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.can_install_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.fetch_available_packs.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.fetch_pack_by_name.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.install_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.library_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.model_instance_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.model_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.page_group_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.page_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.plugin_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.role_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.table_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.trigger_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.uninstall_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..pack.view_pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models..tenant.copy_tenant_template.html +1 -1
- package/docs/variables/_saltcorn_admin-models..tenant.create_tenant.html +1 -1
- package/docs/variables/_saltcorn_admin-models..tenant.deleteTenant.html +1 -1
- package/docs/variables/_saltcorn_admin-models..tenant.domain_sanitize.html +1 -1
- package/docs/variables/_saltcorn_admin-models..tenant.eachTenant.html +1 -1
- package/docs/variables/_saltcorn_admin-models..tenant.getAllTenantRows.html +1 -1
- package/docs/variables/_saltcorn_admin-models..tenant.getAllTenants.html +1 -1
- package/docs/variables/_saltcorn_admin-models..tenant.insertTenant.html +1 -1
- package/docs/variables/_saltcorn_admin-models..tenant.switchToTenant.html +1 -1
- package/docs/variables/_saltcorn_admin-models.models_backup.backup.html +1 -1
- package/docs/variables/_saltcorn_admin-models.pack.pack.html +1 -1
- package/docs/variables/_saltcorn_admin-models.tenant.tenant.html +1 -1
- package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedFive.html +1 -1
- package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedFour.html +1 -1
- package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedOne.html +1 -1
- package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedSix.html +1 -1
- package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedThree.html +1 -1
- package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedTwo.html +1 -1
- package/docs/variables/_saltcorn_data..migrations.html +1 -1
- package/docs/variables/_saltcorn_data..plugin_helper.run_action_column.html +1 -1
- package/docs/variables/_saltcorn_data..utils.NotAuthorized.html +1 -1
- package/docs/variables/_saltcorn_data..utils.isPushEnabled.html +1 -1
- package/docs/variables/_saltcorn_data..utils.sleep.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_actions.actions.html +13 -13
- package/docs/variables/_saltcorn_data.base-plugin_fieldviews.fieldviews.html +3 -3
- package/docs/variables/_saltcorn_data.base-plugin_fileview.fileviews.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_index.index.html +15 -15
- package/docs/variables/_saltcorn_data.base-plugin_types.types.html +7 -7
- package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_edit.edit.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_feed.feed.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_filter.filter.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_list.list.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_listshowlist.listshowlist.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_room.room-1.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_room.room.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_show.show.html +1 -1
- package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.edit_build_in_actions.html +1 -1
- package/docs/variables/_saltcorn_data.contract.contract.html +1 -1
- package/docs/variables/_saltcorn_data.db_connect.connect.html +1 -1
- package/docs/variables/_saltcorn_data.db_fa5-icons.fa5Icons.html +1 -1
- package/docs/variables/_saltcorn_data.db_fixtures.fixtures.html +1 -1
- package/docs/variables/_saltcorn_data.db_index.dbExports.html +1 -1
- package/docs/variables/_saltcorn_data.db_state.state.html +3 -3
- package/docs/variables/_saltcorn_data.migrations_202005141503.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202005241712.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202005251037.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202005282134.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202006022156.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202006051507.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202006240906.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202007091707.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202007202144.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202008031500.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202008051415.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202008121149.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202008121149.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202009112140.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202009112140.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202009181655.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202009221105.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202009231331.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202009301531.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202010231444.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202010251412.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202011021749.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202011051353.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202011111127.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202012011203.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202012100841.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202012281835.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202101061051.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202101141128.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202102091312.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202102101624.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202102172148.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202102261650.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202106102347.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202106112120.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202106120012.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202106120220.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202106121701.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202106121703.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202106121703.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202106251126.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202107281619.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202107302158.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202107302158.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202108022257.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202109201624.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202109301031.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202109301031.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202111290253.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202111290253.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202112282254.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202112282254.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202207022002.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202207252150.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202207252150.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202207261221.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202208101144.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202208101144.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202211040031.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202212112152.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202212112152.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202301130917.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202303201126.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202303201126.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202303221944.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202303221944.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202304281224.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202305031518.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202305031518.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202308211648.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202311011755.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202311011755.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202311231356.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202402071125.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202406260915.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202412051957.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202412051957.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202412111526.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202412111526.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202501081226.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202501081226.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202501201239.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202501262157.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202503071353.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202506050958.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202510110312.sql_pg.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202510110312.sql_sqlite.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202511081024.sql.html +1 -1
- package/docs/variables/_saltcorn_data.migrations_202604091531.sql.html +1 -0
- package/docs/variables/_saltcorn_data.mobile-mocks_npm_npm-registry-fetch.npmRegistryFetch.html +1 -0
- package/docs/variables/_saltcorn_data.mobile-mocks_saltcorn_html-pdf-node.htmlPdfNode.html +1 -1
- package/docs/variables/_saltcorn_data.models_config.configExports.html +1 -1
- package/docs/variables/_saltcorn_data.models_discovery.discovery.html +6 -2
- package/docs/variables/_saltcorn_data.models_email.email.html +3 -3
- package/docs/variables/_saltcorn_data.models_expression.expression.html +3 -3
- package/docs/variables/_saltcorn_data.models_index.config.available_languages.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.check_email_mask.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.configTypes.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.deleteConfig.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.getAllConfig.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.getConfig.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.get_base_url.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.get_latest_npm_version.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.remove_from_menu.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.save_menu_items.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.config.setConfig.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.discovery.discover_tables.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.discovery.discoverable_tables.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.discovery.findType.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.discovery.get_existing_views.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.discovery.implement_discovery.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.discovery.make_field.html +1 -0
- package/docs/variables/_saltcorn_data.models_index.discovery.reconcile_table.html +7 -0
- package/docs/variables/_saltcorn_data.models_index.email.getMailTransport.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.email.send_verification_email.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.email.viewToEmailHtml.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.expression.apply_calculated_fields.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.expression.apply_calculated_fields_stored.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.expression.eval_expression.html +9 -1
- package/docs/variables/_saltcorn_data.models_index.expression.expressionValidator.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.expression.get_async_expression_function.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.expression.get_expression_function.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.expression.jsexprToWhere.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.expression.recalculate_for_stored.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.expression.transform_for_async.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.layout.eachView.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.layout.getStringsForI18n.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.layout.getViews.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.layout.translateLayout.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.layout.traverse.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.layout.traverseSync.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.random.all_views.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.random.fill_table_row.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.random.initial_view.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.random.random_table.html +1 -1
- package/docs/variables/_saltcorn_data.models_index.scheduler.runScheduler.html +1 -1
- package/docs/variables/_saltcorn_data.models_layout.layout.html +1 -1
- package/docs/variables/_saltcorn_data.models_random.random.html +1 -1
- package/docs/variables/_saltcorn_data.models_scheduler.scheduler.html +1 -1
- package/docs/variables/_saltcorn_data.plugin-helper.add_free_variables_to_joinfields.html +1 -1
- package/docs/variables/_saltcorn_data.tests_mocks.mocks.html +1 -1
- package/docs/variables/_saltcorn_data.tests_remote_query_helper.renderEditInEditConfig.html +1 -1
- package/docs/variables/_saltcorn_data.utils.utils.html +11 -5
- package/docs/variables/_saltcorn_data.web-mobile-commons.webMobileCommons.html +1 -1
- package/docs/variables/_saltcorn_db-common.internal.dbCommonModulePath.html +1 -1
- package/docs/variables/_saltcorn_db-common.multi-tenant.tenantNamespace.html +1 -1
- package/docs/variables/_saltcorn_db-common.tenants.tenants.html +1 -1
- package/docs/variables/_saltcorn_markup..export_.html +1 -1
- package/docs/variables/_saltcorn_markup.builder.builder.html +1 -1
- package/docs/variables/_saltcorn_markup.emergency_layout.EmergencyLayoutExports.html +1 -1
- package/docs/variables/_saltcorn_markup.form.form.html +1 -1
- package/docs/variables/_saltcorn_markup.helpers.HelpersExports.html +1 -1
- package/docs/variables/_saltcorn_markup.layout.LayoutExports-1.html +1 -1
- package/docs/variables/_saltcorn_markup.layout.LayoutExports.html +1 -1
- package/docs/variables/_saltcorn_markup.layout_utils.layoutUtils.html +1 -1
- package/docs/variables/_saltcorn_markup.mjml-layout.LayoutExports.html +1 -1
- package/docs/variables/_saltcorn_markup.mjml-tags.tagsExports.html +1 -1
- package/docs/variables/_saltcorn_markup.table.TableExports.html +1 -1
- package/docs/variables/_saltcorn_markup.tags.tagsExports.html +1 -1
- package/docs/variables/_saltcorn_types..generators.generateBool.html +1 -1
- package/docs/variables/_saltcorn_types..generators.generateString.html +1 -1
- package/docs/variables/_saltcorn_types..generators.num_between.html +1 -1
- package/docs/variables/_saltcorn_types..generators.oneOf.html +1 -1
- package/docs/variables/_saltcorn_types.generators.generators.html +1 -1
- package/errors.js +4 -4
- package/help/Event channel and payload.tmd +5 -0
- package/help/Extra state formula.tmd +1 -1
- package/help/Group by formula.tmd +15 -0
- package/help/JavaScript action code.tmd +5 -1
- package/load_plugins.js +7 -398
- package/locales/ar.json +262 -1
- package/locales/de.json +264 -3
- package/locales/en.json +29 -9
- package/locales/es.json +265 -4
- package/locales/fr.json +263 -2
- package/locales/ur.json +273 -4
- package/markup/admin.js +14 -9
- package/markup/expression_blurb.js +1 -1
- package/package.json +14 -14
- package/public/monaco/loader.js +0 -2
- package/public/popper.min.js +0 -1
- package/public/saltcorn-builder.css +82 -0
- package/public/saltcorn-common.js +36 -2
- package/public/saltcorn.css +138 -0
- package/public/saltcorn.js +1457 -29
- package/public/socket.io.min.js +0 -1
- package/public/tabulator.min.js +2 -3
- package/public/tabulator_bootstrap4.min.css +1 -2
- package/public/tabulator_bootstrap5.min.css +1 -2
- package/routes/actions.js +224 -22
- package/routes/admin.js +71 -12
- package/routes/api.js +96 -60
- package/routes/delete.js +2 -5
- package/routes/edit.js +2 -5
- package/routes/entities.js +65 -1245
- package/routes/eventlog.js +47 -0
- package/routes/fields.js +125 -14
- package/routes/files.js +36 -4
- package/routes/homepage.js +4 -1
- package/routes/list.js +69 -11
- package/routes/packs.js +2 -3
- package/routes/page.js +18 -1
- package/routes/pageedit.js +1 -0
- package/routes/plugins.js +56 -21
- package/routes/scapi.js +1 -2
- package/routes/sync.js +183 -54
- package/routes/tables.js +492 -2
- package/routes/tenant.js +3 -3
- package/routes/utils.js +17 -6
- package/routes/viewedit.js +10 -6
- package/serve.js +35 -23
- package/tests/admin.test.js +5 -5
- package/tests/api.test.js +424 -2
- package/tests/auth.test.js +230 -1
- package/tests/fields.test.js +16 -0
- package/tests/files.test.js +43 -7
- package/tests/page.test.js +53 -0
- package/tests/plugin_install.test.js +132 -13
- package/tests/plugins.test.js +1 -2
- package/tests/sync.test.js +900 -18
- package/tests/view.test.js +32 -0
- package/wrapper.js +3 -1
package/auth/routes.js
CHANGED
|
@@ -23,6 +23,7 @@ const {
|
|
|
23
23
|
setTenant,
|
|
24
24
|
is_relative_url,
|
|
25
25
|
isAdmin,
|
|
26
|
+
normalize_relative_url,
|
|
26
27
|
} = require("../routes/utils.js");
|
|
27
28
|
const { getState } = require("@saltcorn/data/db/state");
|
|
28
29
|
const { send_reset_email } = require("./resetpw");
|
|
@@ -60,11 +61,16 @@ const moment = require("moment");
|
|
|
60
61
|
const View = require("@saltcorn/data/models/view");
|
|
61
62
|
const Table = require("@saltcorn/data/models/table");
|
|
62
63
|
const { getForm } = require("@saltcorn/data/viewable_fields");
|
|
63
|
-
const {
|
|
64
|
+
const {
|
|
65
|
+
InvalidConfiguration,
|
|
66
|
+
getSessionId,
|
|
67
|
+
isTest,
|
|
68
|
+
toSafeRelativeUrl,
|
|
69
|
+
} = require("@saltcorn/data/utils");
|
|
64
70
|
const Trigger = require("@saltcorn/data/models/trigger");
|
|
65
71
|
const { restore_backup } = require("../markup/admin.js");
|
|
66
72
|
const { restore } = require("@saltcorn/admin-models/models/backup");
|
|
67
|
-
const
|
|
73
|
+
const Plugin = require("@saltcorn/data/models/plugin");
|
|
68
74
|
const fs = require("fs");
|
|
69
75
|
const base32 = require("thirty-two");
|
|
70
76
|
const qrcode = require("qrcode");
|
|
@@ -82,6 +88,61 @@ const jwt = require("jsonwebtoken");
|
|
|
82
88
|
const router = new Router();
|
|
83
89
|
module.exports = router;
|
|
84
90
|
|
|
91
|
+
/**
|
|
92
|
+
* @param {object} req
|
|
93
|
+
* @param {object} res
|
|
94
|
+
* @returns {void}
|
|
95
|
+
*/
|
|
96
|
+
function handler(req, res) {
|
|
97
|
+
console.log(
|
|
98
|
+
`Failed login attempt for: ${(req.body || {}).email} from ${
|
|
99
|
+
req.ip
|
|
100
|
+
} UA ${req.get("User-Agent")}`
|
|
101
|
+
);
|
|
102
|
+
req.flash(
|
|
103
|
+
"error",
|
|
104
|
+
"You've made too many failed attempts in a short period of time, please try again " +
|
|
105
|
+
moment(req.rateLimit.resetTime).fromNow()
|
|
106
|
+
);
|
|
107
|
+
if (isTest()) res.set("x-ratelimit-redirect", "TooManyRequests");
|
|
108
|
+
res.redirect("/auth/login"); // brute force protection triggered, send them back to the login page
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* try to find a unique user id in login submit
|
|
113
|
+
* @param {object} body
|
|
114
|
+
* @returns {string}
|
|
115
|
+
*/
|
|
116
|
+
const userIdKey = (body) => {
|
|
117
|
+
if (body.email) return body.email;
|
|
118
|
+
const { remember, password, _csrf, passwordRepeat, ...rest } = body;
|
|
119
|
+
const kvs = Object.entries(rest);
|
|
120
|
+
if (kvs.length > 0) return kvs[0][1];
|
|
121
|
+
else return "nokey";
|
|
122
|
+
};
|
|
123
|
+
const ipLimiter = rateLimit({
|
|
124
|
+
// TBD create config parameter
|
|
125
|
+
windowMs: 60 * 60 * 1000, // 60 minutes
|
|
126
|
+
max: 100, // limit each IP to 100 requests per windowMs
|
|
127
|
+
handler,
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
const userLimiter = rateLimit({
|
|
131
|
+
// TBD create config parameter
|
|
132
|
+
windowMs: 5 * 60 * 1000, // 5 minutes
|
|
133
|
+
max: 5, // limit each IP to 100 requests per windowMs
|
|
134
|
+
keyGenerator: (req) => userIdKey(req.body || {}),
|
|
135
|
+
handler,
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
const pendingUserLimiter = rateLimit({
|
|
139
|
+
// TBD create config parameter
|
|
140
|
+
windowMs: 5 * 60 * 1000, // 5 minutes
|
|
141
|
+
max: 5, // limit each IP to 100 requests per windowMs
|
|
142
|
+
keyGenerator: (req) => req.user?.pending_user?.id,
|
|
143
|
+
handler,
|
|
144
|
+
});
|
|
145
|
+
|
|
85
146
|
/**
|
|
86
147
|
* Login Form
|
|
87
148
|
* @param {object} req
|
|
@@ -107,6 +168,7 @@ const loginForm = (req, isCreating) => {
|
|
|
107
168
|
type: "String",
|
|
108
169
|
attributes: {
|
|
109
170
|
input_type: "email",
|
|
171
|
+
autocomplete: "username",
|
|
110
172
|
},
|
|
111
173
|
sublabel: user_sublabel || undefined,
|
|
112
174
|
// fixed correct size of email is 254 https://stackoverflow.com/questions/386294/what-is-the-maximum-length-of-a-valid-email-address
|
|
@@ -117,7 +179,7 @@ const loginForm = (req, isCreating) => {
|
|
|
117
179
|
name: "password",
|
|
118
180
|
input_type: "password",
|
|
119
181
|
attributes: {
|
|
120
|
-
autocomplete: "current-password",
|
|
182
|
+
autocomplete: isCreating ? "new-password" : "current-password",
|
|
121
183
|
},
|
|
122
184
|
validator: isCreating
|
|
123
185
|
? (pw) => User.unacceptable_password_reason(pw)
|
|
@@ -271,7 +333,13 @@ const loginWithJwt = async (email, password, saltcornApp, res, req) => {
|
|
|
271
333
|
if (email !== undefined && password !== undefined) {
|
|
272
334
|
// with credentials
|
|
273
335
|
const user = await User.findOne({ email });
|
|
274
|
-
if (
|
|
336
|
+
if (
|
|
337
|
+
user &&
|
|
338
|
+
!user.disabled &&
|
|
339
|
+
user.auth_method_allowed("Password") &&
|
|
340
|
+
user.checkPassword(password) &&
|
|
341
|
+
!user._attributes.totp_enabled
|
|
342
|
+
) {
|
|
275
343
|
const now = new Date();
|
|
276
344
|
const pushEnabled = !!user._attributes?.notify_push;
|
|
277
345
|
const tokenUser = { ...user.session_object };
|
|
@@ -285,6 +353,7 @@ const loginWithJwt = async (email, password, saltcornApp, res, req) => {
|
|
|
285
353
|
iss: "saltcorn@saltcorn",
|
|
286
354
|
aud: "saltcorn-mobile-app",
|
|
287
355
|
iat: now.valueOf(),
|
|
356
|
+
exp: Math.floor(now.valueOf() / 1000) + 30 * 24 * 3600,
|
|
288
357
|
tenant: db.getTenantSchema(),
|
|
289
358
|
},
|
|
290
359
|
jwt_secret
|
|
@@ -471,6 +540,8 @@ router.get(
|
|
|
471
540
|
*/
|
|
472
541
|
router.post(
|
|
473
542
|
"/reset",
|
|
543
|
+
ipLimiter,
|
|
544
|
+
userLimiter,
|
|
474
545
|
error_catcher(async (req, res) => {
|
|
475
546
|
const result = await User.resetPasswordWithToken({
|
|
476
547
|
email: (req.body || {}).email,
|
|
@@ -509,6 +580,8 @@ router.post(
|
|
|
509
580
|
*/
|
|
510
581
|
router.post(
|
|
511
582
|
"/forgot",
|
|
583
|
+
ipLimiter,
|
|
584
|
+
userLimiter,
|
|
512
585
|
error_catcher(async (req, res) => {
|
|
513
586
|
if (getState().getConfig("allow_forgot")) {
|
|
514
587
|
const { email } = req.body || {};
|
|
@@ -696,7 +769,7 @@ router.post(
|
|
|
696
769
|
try {
|
|
697
770
|
const err = await restore(
|
|
698
771
|
newPath,
|
|
699
|
-
(p) =>
|
|
772
|
+
(p) => Plugin.loadAndSaveNewPlugin(p),
|
|
700
773
|
true
|
|
701
774
|
);
|
|
702
775
|
|
|
@@ -811,7 +884,7 @@ router.post(
|
|
|
811
884
|
try {
|
|
812
885
|
const err = await restore(
|
|
813
886
|
backupPath,
|
|
814
|
-
(p) =>
|
|
887
|
+
(p) => Plugin.loadAndSaveNewPlugin(p),
|
|
815
888
|
true,
|
|
816
889
|
password
|
|
817
890
|
);
|
|
@@ -1087,6 +1160,8 @@ router.post(
|
|
|
1087
1160
|
*/
|
|
1088
1161
|
router.post(
|
|
1089
1162
|
"/signup",
|
|
1163
|
+
ipLimiter,
|
|
1164
|
+
userLimiter,
|
|
1090
1165
|
setTenant,
|
|
1091
1166
|
error_catcher(async (req, res) => {
|
|
1092
1167
|
if (!getState().getConfig("allow_signup")) {
|
|
@@ -1239,52 +1314,6 @@ router.post(
|
|
|
1239
1314
|
})
|
|
1240
1315
|
);
|
|
1241
1316
|
|
|
1242
|
-
/**
|
|
1243
|
-
* @param {object} req
|
|
1244
|
-
* @param {object} res
|
|
1245
|
-
* @returns {void}
|
|
1246
|
-
*/
|
|
1247
|
-
function handler(req, res) {
|
|
1248
|
-
console.log(
|
|
1249
|
-
`Failed login attempt for: ${(req.body || {}).email} from ${
|
|
1250
|
-
req.ip
|
|
1251
|
-
} UA ${req.get("User-Agent")}`
|
|
1252
|
-
);
|
|
1253
|
-
req.flash(
|
|
1254
|
-
"error",
|
|
1255
|
-
"You've made too many failed attempts in a short period of time, please try again " +
|
|
1256
|
-
moment(req.rateLimit.resetTime).fromNow()
|
|
1257
|
-
);
|
|
1258
|
-
res.redirect("/auth/login"); // brute force protection triggered, send them back to the login page
|
|
1259
|
-
}
|
|
1260
|
-
|
|
1261
|
-
/**
|
|
1262
|
-
* try to find a unique user id in login submit
|
|
1263
|
-
* @param {object} body
|
|
1264
|
-
* @returns {string}
|
|
1265
|
-
*/
|
|
1266
|
-
const userIdKey = (body) => {
|
|
1267
|
-
if (body.email) return body.email;
|
|
1268
|
-
const { remember, password, _csrf, passwordRepeat, ...rest } = body;
|
|
1269
|
-
const kvs = Object.entries(rest);
|
|
1270
|
-
if (kvs.length > 0) return kvs[0][1];
|
|
1271
|
-
else return "nokey";
|
|
1272
|
-
};
|
|
1273
|
-
const ipLimiter = rateLimit({
|
|
1274
|
-
// TBD create config parameter
|
|
1275
|
-
windowMs: 60 * 60 * 1000, // 60 minutes
|
|
1276
|
-
max: 100, // limit each IP to 100 requests per windowMs
|
|
1277
|
-
handler,
|
|
1278
|
-
});
|
|
1279
|
-
|
|
1280
|
-
const userLimiter = rateLimit({
|
|
1281
|
-
// TBD create config parameter
|
|
1282
|
-
windowMs: 5 * 60 * 1000, // 5 minutes
|
|
1283
|
-
max: 3, // limit each IP to 100 requests per windowMs
|
|
1284
|
-
keyGenerator: (req) => userIdKey(req.body || {}),
|
|
1285
|
-
handler,
|
|
1286
|
-
});
|
|
1287
|
-
|
|
1288
1317
|
function setOldSessionID(req, res, next) {
|
|
1289
1318
|
req.old_session_id = getSessionId(req);
|
|
1290
1319
|
next();
|
|
@@ -1366,11 +1395,10 @@ router.post(
|
|
|
1366
1395
|
}
|
|
1367
1396
|
if (getState().get2FApolicy(req.user) === "Mandatory") {
|
|
1368
1397
|
res.redirect("/auth/twofa/setup/totp");
|
|
1369
|
-
} else if (
|
|
1370
|
-
(req.body
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
res.redirect(decodeURIComponent((req.body || {}).dest));
|
|
1398
|
+
} else if (req.body?.dest) {
|
|
1399
|
+
const dest = normalize_relative_url(decodeURIComponent(req.body.dest));
|
|
1400
|
+
if (dest !== null) res.redirect(dest);
|
|
1401
|
+
else res.redirect("/");
|
|
1374
1402
|
} else res.redirect("/");
|
|
1375
1403
|
})
|
|
1376
1404
|
);
|
|
@@ -1382,6 +1410,8 @@ router.post(
|
|
|
1382
1410
|
*/
|
|
1383
1411
|
router.get(
|
|
1384
1412
|
"/login-with/:method",
|
|
1413
|
+
ipLimiter,
|
|
1414
|
+
userLimiter,
|
|
1385
1415
|
error_catcher(async (req, res, next) => {
|
|
1386
1416
|
const { method } = req.params;
|
|
1387
1417
|
if (method === "jwt") {
|
|
@@ -1413,6 +1443,75 @@ router.get(
|
|
|
1413
1443
|
})
|
|
1414
1444
|
);
|
|
1415
1445
|
|
|
1446
|
+
/**
|
|
1447
|
+
* @name post/login-with/jwt
|
|
1448
|
+
* @function
|
|
1449
|
+
* @memberof module:auth/routes~routesRouter
|
|
1450
|
+
*/
|
|
1451
|
+
router.post(
|
|
1452
|
+
"/login-with/jwt",
|
|
1453
|
+
ipLimiter,
|
|
1454
|
+
userLimiter,
|
|
1455
|
+
error_catcher(async (req, res) => {
|
|
1456
|
+
const { email, password } = req.body;
|
|
1457
|
+
await loginWithJwt(
|
|
1458
|
+
email,
|
|
1459
|
+
password,
|
|
1460
|
+
req.headers["x-saltcorn-app"],
|
|
1461
|
+
res,
|
|
1462
|
+
req
|
|
1463
|
+
);
|
|
1464
|
+
})
|
|
1465
|
+
);
|
|
1466
|
+
|
|
1467
|
+
/**
|
|
1468
|
+
* @name post/renew-jwt
|
|
1469
|
+
* @function
|
|
1470
|
+
* @memberof module:auth/routes~routesRouter
|
|
1471
|
+
*/
|
|
1472
|
+
router.post(
|
|
1473
|
+
"/renew-jwt",
|
|
1474
|
+
passport.authenticate("jwt", { session: false }),
|
|
1475
|
+
error_catcher(async (req, res) => {
|
|
1476
|
+
if (!req.user?.email) {
|
|
1477
|
+
return res.status(401).json({ error: req.__("Not authenticated") });
|
|
1478
|
+
}
|
|
1479
|
+
const renewFn = async () => {
|
|
1480
|
+
const user = await User.findOne({ email: req.user.email });
|
|
1481
|
+
if (!user || user.disabled)
|
|
1482
|
+
return res.status(401).json({ error: req.__("User not found") });
|
|
1483
|
+
if (user._attributes?.totp_enabled)
|
|
1484
|
+
return res
|
|
1485
|
+
.status(401)
|
|
1486
|
+
.json({ error: req.__("Two-factor authentication is enabled") });
|
|
1487
|
+
const now = new Date();
|
|
1488
|
+
const pushEnabled = !!user._attributes?.notify_push;
|
|
1489
|
+
const tokenUser = { ...user.session_object };
|
|
1490
|
+
if (tokenUser.attributes) tokenUser.attributes.notify_push = pushEnabled;
|
|
1491
|
+
else tokenUser._attributes = { notify_push: pushEnabled };
|
|
1492
|
+
const token = jwt.sign(
|
|
1493
|
+
{
|
|
1494
|
+
sub: user.email,
|
|
1495
|
+
user: tokenUser,
|
|
1496
|
+
iss: "saltcorn@saltcorn",
|
|
1497
|
+
aud: "saltcorn-mobile-app",
|
|
1498
|
+
iat: now.valueOf(),
|
|
1499
|
+
exp: Math.floor(now.valueOf() / 1000) + 30 * 24 * 3600,
|
|
1500
|
+
tenant: db.getTenantSchema(),
|
|
1501
|
+
},
|
|
1502
|
+
db.connectObj.jwt_secret
|
|
1503
|
+
);
|
|
1504
|
+
res.json(token);
|
|
1505
|
+
};
|
|
1506
|
+
const saltcornApp = req.headers["x-saltcorn-app"];
|
|
1507
|
+
if (saltcornApp && saltcornApp !== db.connectObj.default_schema) {
|
|
1508
|
+
await db.runWithTenant(saltcornApp, renewFn);
|
|
1509
|
+
} else {
|
|
1510
|
+
await renewFn();
|
|
1511
|
+
}
|
|
1512
|
+
})
|
|
1513
|
+
);
|
|
1514
|
+
|
|
1416
1515
|
/*
|
|
1417
1516
|
returns if 'req.user' is an authenticated user
|
|
1418
1517
|
*/
|
|
@@ -1431,6 +1530,8 @@ router.get(
|
|
|
1431
1530
|
*/
|
|
1432
1531
|
router.post(
|
|
1433
1532
|
"/login-with/:method",
|
|
1533
|
+
ipLimiter,
|
|
1534
|
+
userLimiter,
|
|
1434
1535
|
error_catcher(async (req, res, next) => {
|
|
1435
1536
|
const { method } = req.params;
|
|
1436
1537
|
const auth = getState().auth_methods[method];
|
|
@@ -1509,7 +1610,7 @@ const loginCallback = (req, res, method) => async () => {
|
|
|
1509
1610
|
req.flash("success", req.__("Welcome, %s!", req.user.email));
|
|
1510
1611
|
if (req.cookies["login_dest"]) {
|
|
1511
1612
|
res.clearCookie("login_dest");
|
|
1512
|
-
res.redirect(req.cookies["login_dest"]);
|
|
1613
|
+
res.redirect(toSafeRelativeUrl(req.cookies["login_dest"]));
|
|
1513
1614
|
return;
|
|
1514
1615
|
}
|
|
1515
1616
|
const source = req.query.state;
|
|
@@ -1518,7 +1619,10 @@ const loginCallback = (req, res, method) => async () => {
|
|
|
1518
1619
|
const user = await User.findOne({ email: req.user.email });
|
|
1519
1620
|
if (!user.last_mobile_login) await user.updateLastMobileLogin(now);
|
|
1520
1621
|
res.redirect(
|
|
1521
|
-
`mobileapp://auth/callback?token=${await generateTokenForUser(
|
|
1622
|
+
`mobileapp://auth/callback?token=${await generateTokenForUser(
|
|
1623
|
+
req.user,
|
|
1624
|
+
now
|
|
1625
|
+
)}&method=${encodeURIComponent(method)}`
|
|
1522
1626
|
);
|
|
1523
1627
|
} else res.redirect("/");
|
|
1524
1628
|
}
|
|
@@ -1541,9 +1645,19 @@ const callbackFn = async (req, res, next) => {
|
|
|
1541
1645
|
}
|
|
1542
1646
|
};
|
|
1543
1647
|
|
|
1544
|
-
router.get(
|
|
1648
|
+
router.get(
|
|
1649
|
+
"/callback/:method",
|
|
1650
|
+
ipLimiter,
|
|
1651
|
+
userLimiter,
|
|
1652
|
+
error_catcher(callbackFn)
|
|
1653
|
+
);
|
|
1545
1654
|
|
|
1546
|
-
router.post(
|
|
1655
|
+
router.post(
|
|
1656
|
+
"/callback/:method",
|
|
1657
|
+
ipLimiter,
|
|
1658
|
+
userLimiter,
|
|
1659
|
+
error_catcher(callbackFn)
|
|
1660
|
+
);
|
|
1547
1661
|
|
|
1548
1662
|
/**
|
|
1549
1663
|
* @param {object} req
|
|
@@ -2226,6 +2340,7 @@ router.post(
|
|
|
2226
2340
|
console.log("TOTP return ", rv);
|
|
2227
2341
|
user._attributes.totp_enabled = true;
|
|
2228
2342
|
await user.update({ _attributes: user._attributes });
|
|
2343
|
+
await user.updateLastMobileLogin(null);
|
|
2229
2344
|
req.flash(
|
|
2230
2345
|
"success",
|
|
2231
2346
|
req.__(
|
|
@@ -2393,6 +2508,8 @@ router.get(
|
|
|
2393
2508
|
*/
|
|
2394
2509
|
router.post(
|
|
2395
2510
|
"/twofa/login/totp",
|
|
2511
|
+
ipLimiter,
|
|
2512
|
+
pendingUserLimiter,
|
|
2396
2513
|
passport.authenticate("totp", {
|
|
2397
2514
|
failureRedirect: "/auth/twofa/login/totp",
|
|
2398
2515
|
failureFlash: true,
|
package/auth/testhelp.js
CHANGED
|
@@ -185,13 +185,9 @@ const getAdminJwt = async () => {
|
|
|
185
185
|
"X-Saltcorn-Client": "mobile-app",
|
|
186
186
|
};
|
|
187
187
|
const res = await request(app)
|
|
188
|
-
.
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
)}&password=${encodeURIComponent("AhGGr6rhu45")}`
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
.set(headers);
|
|
188
|
+
.post("/auth/login-with/jwt")
|
|
189
|
+
.set(headers)
|
|
190
|
+
.send({ email: "admin@foo.com", password: "AhGGr6rhu45" });
|
|
195
191
|
if (res.statusCode !== 200) console.log(res.text);
|
|
196
192
|
return res.body;
|
|
197
193
|
};
|
|
@@ -203,12 +199,9 @@ const getStaffJwt = async () => {
|
|
|
203
199
|
"X-Saltcorn-Client": "mobile-app",
|
|
204
200
|
};
|
|
205
201
|
const res = await request(app)
|
|
206
|
-
.
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
)}&password=${encodeURIComponent("ghrarhr54hg")}`
|
|
210
|
-
)
|
|
211
|
-
.set(headers);
|
|
202
|
+
.post("/auth/login-with/jwt")
|
|
203
|
+
.set(headers)
|
|
204
|
+
.send({ email: "staff@foo.com", password: "ghrarhr54hg" });
|
|
212
205
|
if (res.statusCode !== 200) console.log(res.text);
|
|
213
206
|
return res.body;
|
|
214
207
|
};
|
|
@@ -220,12 +213,9 @@ const getUserJwt = async () => {
|
|
|
220
213
|
"X-Saltcorn-Client": "mobile-app",
|
|
221
214
|
};
|
|
222
215
|
const res = await request(app)
|
|
223
|
-
.
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
)}&password=${encodeURIComponent("GFeggwrwq45fjn")}`
|
|
227
|
-
)
|
|
228
|
-
.set(headers);
|
|
216
|
+
.post("/auth/login-with/jwt")
|
|
217
|
+
.set(headers)
|
|
218
|
+
.send({ email: "user@foo.com", password: "GFeggwrwq45fjn" });
|
|
229
219
|
if (res.statusCode !== 200) console.log(res.text);
|
|
230
220
|
return res.body;
|
|
231
221
|
};
|
package/docs/assets/hierarchy.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
window.hierarchyData = "eJy1l11vmzAUhv+
|
|
1
|
+
window.hierarchyData = "eJy1l11vmzAUhv+LrynDxhiTu0n7uNo0VdV2UVXIDQ5F5aMydFVV9b9PxziJITTBCbuxrAS972ODj9/zhlTTdC1a3RLMKfEI5lHiEZwQ5hESBDGMNICRERg59QjBBOY4DGGM4UnM4UkSwC+EwTNhwL2QRozeeUjJTSnXXdHULVq9IW0Fk1pUEq3Q5/u2U2LdfStkmSEPPRZ1hlYkYh56ViVaoaLupNqItWw/pa0ou3Wj6rR7fZKtXzWZLK+EUWjT7SzdgJg/kPYfuqpEHlqXom3RCnVtdgVeVzt9+POhKDMla7S6DSMa87t3D+ld+Qj4Wj5J0f1H7N7AHZ5FuIdPCJuCb1S1GHWjKt8WdqflMdW08NFN0P4SuVyK9knk0reFnWlZHEeGlgYf0H5XzfPTkshpDor+gYc7PQ+3e82mzuFO+Yes7qVafg1ppYUPl9Ibui8oCQKzIE6nFlQ+50W92Dq0mj8UP4OZGmZMpl7CdVMu9sGrptx/8CDsTBsHjBnaMJygvRH3y+F2IOYPpN2BMQ4NcDxV/W5EvhxubsHm7qgRNcUE86nSdyPyr3WnXhfkTSUI+mMHd3QW9BckXP1T6KrI8+UqSNfL+SP5M7ApNthsql78LuTLUsx/C/ni28LutAlOetow4BO0fxr1uCmbxYhfjJ4/NnAm50Gi9zmkEbX3+ctzVb3+bLJ9xcCEb5G1+oA3E53ws0LkSlRp3WSyTTNQ0HN/J/YhXv9DzzF43xchaPMZvsMtgZ2AXMwTL6QMYxjDEMaIma3idtSEq/EiTH3ratat1Jx9YhhbELoEX0ShS3qPsRObxTG4bcx5v4yk1zAse8FZNJF9lcBhvggFSkPPsZWaAQE9iQUx7JlOE+hT35o243hXZHmyCI89R22Pm7PqW5o57Y1FwWP78A76l/n20Jwc7VD2hpDyR0fR3VA3G0ebDMuQh3RkOOwinFxNv3C6T7AAkiCYAhg1AmdgbCP/3KhvMw1arFGWn4/Sx/QTaX1vC4nXsh3E8dmmOngfDdyWIcbhuOa6O/bZ+XhmtjwjGg0883Mcc/9Y7LXc2CC/HORaF0uTYE8mV9ud4sO75AxzEzpPhU/LOcHJ6N5wt9U58mh+3BtC7rIMDwLibNNdFDwZAY35+/s/JKXm7Q=="
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "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"
|
|
1
|
+
window.navigationData = "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"
|