Files
nextcloud-server-mirror/dist/core-install.mjs.map
2026-10-07 08:58:40 +00:00

1 line
27 KiB
Plaintext

{"version":3,"file":"core-install.mjs","sources":["../build/frontend/core/src/views/WebInstaller.vue","../build/frontend/core/src/install.ts"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<script setup lang=\"ts\">\nimport type { DbType, SetupConfig, SetupLinks } from '../types/install.d.ts'\n\nimport { mdiArrowRight } from '@mdi/js'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport DomPurify from 'dompurify'\nimport { computed, onMounted, reactive, ref, useTemplateRef } from 'vue'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\nimport NcPasswordField from '@nextcloud/vue/components/NcPasswordField'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\n\nenum PasswordStrength {\n\tVeryWeak,\n\tWeak,\n\tModerate,\n\tStrong,\n\tVeryStrong,\n\tExtremelyStrong,\n}\n\n/**\n * Estimate the strength of a password from its entropy.\n *\n * @param password - The password\n */\nfunction checkPasswordEntropy(password: string = ''): PasswordStrength {\n\tconst uniqueCharacters = new Set(password)\n\tconst entropy = parseInt(Math.log2(Math.pow(uniqueCharacters.size, password.length)).toFixed(2))\n\tif (entropy < 16) {\n\t\treturn PasswordStrength.VeryWeak\n\t} else if (entropy < 31) {\n\t\treturn PasswordStrength.Weak\n\t} else if (entropy < 46) {\n\t\treturn PasswordStrength.Moderate\n\t} else if (entropy < 61) {\n\t\treturn PasswordStrength.Strong\n\t} else if (entropy < 76) {\n\t\treturn PasswordStrength.VeryStrong\n\t}\n\n\treturn PasswordStrength.ExtremelyStrong\n}\n\nconst config = reactive(loadState<SetupConfig>('core', 'config'))\nconst links = loadState<SetupLinks>('core', 'links')\n\nconst form = useTemplateRef('form')\nconst isValidAutoconfig = ref(false)\nconst loading = ref(false)\n\nconst passwordStrength = computed(() => checkPasswordEntropy(config.adminpass))\n\nconst passwordHelperText = computed(() => {\n\tif (config.adminpass === '') {\n\t\treturn ''\n\t}\n\n\tswitch (passwordStrength.value) {\n\t\tcase PasswordStrength.VeryWeak:\n\t\t\treturn t('core', 'Password is too weak')\n\t\tcase PasswordStrength.Weak:\n\t\t\treturn t('core', 'Password is weak')\n\t\tcase PasswordStrength.Moderate:\n\t\t\treturn t('core', 'Password is average')\n\t\tcase PasswordStrength.Strong:\n\t\t\treturn t('core', 'Password is strong')\n\t\tcase PasswordStrength.VeryStrong:\n\t\t\treturn t('core', 'Password is very strong')\n\t\tcase PasswordStrength.ExtremelyStrong:\n\t\t\treturn t('core', 'Password is extremely strong')\n\t}\n\n\treturn t('core', 'Unknown password strength')\n})\n\nconst passwordHelperType = computed(() => {\n\tif (passwordStrength.value < PasswordStrength.Moderate) {\n\t\treturn 'error'\n\t}\n\tif (passwordStrength.value < PasswordStrength.Strong) {\n\t\treturn 'warning'\n\t}\n\treturn 'success'\n})\n\n/**\n * Only MySQL/MariaDB and PostgreSQL can be configured to use an encrypted\n * connection through the installer, see OC\\Setup\\AbstractDatabase.\n */\nconst supportsEncryptedConnection = computed(() => config.dbtype === 'mysql' || config.dbtype === 'pgsql')\n\n/**\n * The form is submitted natively, so the checkbox needs a `name` to be part of\n * the request - which NcCheckboxRadioSwitch only supports for groups of\n * checkboxes, meaning the model has to be the list of the checked values.\n * The value is submitted as a string and reflected back on validation errors.\n */\nconst dbsslnoverify = computed({\n\tget: () => config.dbsslnoverify ? ['1'] : [],\n\tset: (checked: string[]) => {\n\t\tconfig.dbsslnoverify = checked.includes('1')\n\t},\n})\n\nconst firstAndOnlyDatabase = computed(() => {\n\tconst dbNames = Object.values(config.databases || {})\n\treturn dbNames.length === 1 ? dbNames[0] : null\n})\n\n// More than 3 databases are listed vertically\nconst DBTypeGroupDirection = computed(() => Object.keys(config.databases || {}).length > 3 ? 'vertical' : 'horizontal')\n\nconst htaccessWarning = computed(() => {\n\t// The message is rendered with v-html\n\tconst message = [\n\t\tt('core', 'Your data directory and files are probably accessible from the internet because the <code>.htaccess</code> file does not work.'),\n\t\tt('core', 'For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}', {\n\t\t\tlinkStart: '<a href=\"' + links.adminInstall + '\" target=\"_blank\" rel=\"noreferrer noopener\">',\n\t\t\tlinkEnd: '</a>',\n\t\t}, { escape: false }),\n\t].join('<br>')\n\treturn DomPurify.sanitize(message)\n})\n\nconst errors = computed(() => (config.errors || []).map((error) => {\n\tif (typeof error === 'string') {\n\t\treturn { heading: '', message: error }\n\t}\n\n\t// Without a hint there is nothing to show below a heading\n\tif (error.hint === '') {\n\t\treturn { heading: '', message: error.error }\n\t}\n\n\treturn { heading: error.error, message: error.hint }\n}))\n\nonMounted(() => {\n\tif (config.dbtype === '') {\n\t\tconfig.dbtype = Object.keys(config.databases).at(0) as DbType\n\t}\n\n\t// An autoconfig is only valid if it fills in everything but the administration account\n\tif (config.hasAutoconfig && form.value) {\n\t\tconst adminFields = form.value.querySelectorAll('input[name=\"adminlogin\"], input[name=\"adminpass\"]')\n\t\tadminFields.forEach((input) => input.removeAttribute('required'))\n\t\tisValidAutoconfig.value = form.value.checkValidity() && config.errors.length === 0\n\t\tadminFields.forEach((input) => input.setAttribute('required', 'true'))\n\t}\n})\n</script>\n\n<template>\n\t<form\n\t\tref=\"form\"\n\t\t:class=\"$style.setupForm\"\n\t\taction=\"\"\n\t\tdata-cy-setup-form\n\t\tmethod=\"POST\"\n\t\t@submit=\"loading = true\">\n\t\t<!-- Autoconfig info -->\n\t\t<NcNoteCard\n\t\t\tv-if=\"config.hasAutoconfig\"\n\t\t\t:heading=\"t('core', 'Autoconfig file detected')\"\n\t\t\tdata-cy-setup-form-note=\"autoconfig\"\n\t\t\ttype=\"success\">\n\t\t\t{{ t('core', 'The setup form below is pre-filled with the values from the config file.') }}\n\t\t</NcNoteCard>\n\n\t\t<!-- Htaccess warning -->\n\t\t<NcNoteCard\n\t\t\tv-if=\"config.htaccessWorking === false\"\n\t\t\t:heading=\"t('core', 'Security warning')\"\n\t\t\tdata-cy-setup-form-note=\"htaccess\"\n\t\t\ttype=\"warning\">\n\t\t\t<p v-html=\"htaccessWarning\" />\n\t\t</NcNoteCard>\n\n\t\t<!-- Various errors -->\n\t\t<NcNoteCard\n\t\t\tv-for=\"(error, index) in errors\"\n\t\t\t:key=\"index\"\n\t\t\t:heading=\"error.heading\"\n\t\t\tdata-cy-setup-form-note=\"error\"\n\t\t\ttype=\"error\">\n\t\t\t{{ error.message }}\n\t\t</NcNoteCard>\n\n\t\t<!-- Admin creation -->\n\t\t<fieldset>\n\t\t\t<legend>{{ t('core', 'Create administration account') }}</legend>\n\n\t\t\t<!-- Username -->\n\t\t\t<NcTextField\n\t\t\t\tv-model=\"config.adminlogin\"\n\t\t\t\t:label=\"t('core', 'Administration account name')\"\n\t\t\t\tdata-cy-setup-form-field=\"adminlogin\"\n\t\t\t\tname=\"adminlogin\"\n\t\t\t\trequired />\n\n\t\t\t<!-- Password -->\n\t\t\t<NcPasswordField\n\t\t\t\tv-model=\"config.adminpass\"\n\t\t\t\t:label=\"t('core', 'Administration account password')\"\n\t\t\t\tdata-cy-setup-form-field=\"adminpass\"\n\t\t\t\tname=\"adminpass\"\n\t\t\t\trequired />\n\n\t\t\t<!-- Password entropy -->\n\t\t\t<NcNoteCard v-show=\"config.adminpass !== ''\" :type=\"passwordHelperType\">\n\t\t\t\t{{ passwordHelperText }}\n\t\t\t</NcNoteCard>\n\t\t</fieldset>\n\n\t\t<!-- Autoconfig toggle -->\n\t\t<details v-show=\"!isValidAutoconfig\" open data-cy-setup-form-advanced-config>\n\t\t\t<summary>{{ t('core', 'Storage & database') }}</summary>\n\n\t\t\t<!-- Data folder -->\n\t\t\t<fieldset>\n\t\t\t\t<NcTextField\n\t\t\t\t\tv-model=\"config.directory\"\n\t\t\t\t\t:label=\"t('core', 'Data folder')\"\n\t\t\t\t\t:placeholder=\"config.serverRoot + '/data'\"\n\t\t\t\t\trequired\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tdata-cy-setup-form-field=\"directory\"\n\t\t\t\t\tname=\"directory\"\n\t\t\t\t\tspellcheck=\"false\" />\n\t\t\t</fieldset>\n\n\t\t\t<!-- Database -->\n\t\t\t<fieldset>\n\t\t\t\t<legend>{{ t('core', 'Database configuration') }}</legend>\n\n\t\t\t\t<!-- Database type select -->\n\t\t\t\t<fieldset>\n\t\t\t\t\t<legend class=\"hidden-visually\">\n\t\t\t\t\t\t{{ t('core', 'Database type') }}\n\t\t\t\t\t</legend>\n\n\t\t\t\t\t<!-- Using v-show instead of v-if ensures that the input dbtype remains set even when only one database engine is available -->\n\t\t\t\t\t<p v-show=\"!firstAndOnlyDatabase\" :class=\"[$style.setupForm__databaseTypeSelect, { [$style.setupForm__databaseTypeSelect_vertical]: DBTypeGroupDirection === 'vertical' }]\">\n\t\t\t\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t\t\t\tv-for=\"(name, db) in config.databases\"\n\t\t\t\t\t\t\t:key=\"db\"\n\t\t\t\t\t\t\tv-model=\"config.dbtype\"\n\t\t\t\t\t\t\tbuttonVariant\n\t\t\t\t\t\t\t:data-cy-setup-form-field=\"`dbtype-${db}`\"\n\t\t\t\t\t\t\t:value=\"db\"\n\t\t\t\t\t\t\t:buttonVariantGrouped=\"DBTypeGroupDirection\"\n\t\t\t\t\t\t\tname=\"dbtype\"\n\t\t\t\t\t\t\ttype=\"radio\">\n\t\t\t\t\t\t\t{{ name }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t</p>\n\n\t\t\t\t\t<NcNoteCard v-if=\"firstAndOnlyDatabase\" data-cy-setup-form-db-note=\"single-db\" type=\"warning\">\n\t\t\t\t\t\t{{ t('core', 'Only {firstAndOnlyDatabase} is available.', { firstAndOnlyDatabase }) }}<br>\n\t\t\t\t\t\t{{ t('core', 'Install and activate additional PHP modules to choose other database types.') }}<br>\n\t\t\t\t\t\t<a :href=\"links.adminSourceInstall\" target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t\t\t{{ t('core', 'For more details check out the documentation.') }} ↗\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</NcNoteCard>\n\n\t\t\t\t\t<NcNoteCard\n\t\t\t\t\t\tv-if=\"config.dbtype === 'sqlite'\"\n\t\t\t\t\t\t:heading=\"t('core', 'Performance warning')\"\n\t\t\t\t\t\tdata-cy-setup-form-db-note=\"sqlite\"\n\t\t\t\t\t\ttype=\"warning\">\n\t\t\t\t\t\t{{ t('core', 'You chose SQLite as database.') }}<br>\n\t\t\t\t\t\t{{ t('core', 'SQLite should only be used for minimal and development instances. For production we recommend a different database backend.') }}<br>\n\t\t\t\t\t\t{{ t('core', 'If you use clients for file syncing, the use of SQLite is highly discouraged.') }}\n\t\t\t\t\t</NcNoteCard>\n\t\t\t\t</fieldset>\n\n\t\t\t\t<!-- Database configuration -->\n\t\t\t\t<fieldset v-if=\"config.dbtype !== 'sqlite'\">\n\t\t\t\t\t<legend class=\"hidden-visually\">\n\t\t\t\t\t\t{{ t('core', 'Database connection') }}\n\t\t\t\t\t</legend>\n\n\t\t\t\t\t<NcTextField\n\t\t\t\t\t\tv-model=\"config.dbuser\"\n\t\t\t\t\t\t:label=\"t('core', 'Database user')\"\n\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tdata-cy-setup-form-field=\"dbuser\"\n\t\t\t\t\t\tname=\"dbuser\"\n\t\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t\trequired />\n\n\t\t\t\t\t<NcPasswordField\n\t\t\t\t\t\tv-model=\"config.dbpass\"\n\t\t\t\t\t\t:label=\"t('core', 'Database password')\"\n\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tdata-cy-setup-form-field=\"dbpass\"\n\t\t\t\t\t\tname=\"dbpass\"\n\t\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t\trequired />\n\n\t\t\t\t\t<NcTextField\n\t\t\t\t\t\tv-model=\"config.dbname\"\n\t\t\t\t\t\t:label=\"t('core', 'Database name')\"\n\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tdata-cy-setup-form-field=\"dbname\"\n\t\t\t\t\t\tname=\"dbname\"\n\t\t\t\t\t\tpattern=\"[0-9a-zA-Z\\$_\\-]+\"\n\t\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t\trequired />\n\n\t\t\t\t\t<NcTextField\n\t\t\t\t\t\tv-if=\"config.dbtype === 'oci'\"\n\t\t\t\t\t\tv-model=\"config.dbtablespace\"\n\t\t\t\t\t\t:label=\"t('core', 'Database tablespace')\"\n\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tdata-cy-setup-form-field=\"dbtablespace\"\n\t\t\t\t\t\tname=\"dbtablespace\"\n\t\t\t\t\t\tspellcheck=\"false\" />\n\n\t\t\t\t\t<NcTextField\n\t\t\t\t\t\tv-model=\"config.dbhost\"\n\t\t\t\t\t\t:helperText=\"t('core', 'Please specify the port number along with the host name (e.g., localhost:5432).')\"\n\t\t\t\t\t\t:label=\"t('core', 'Database host')\"\n\t\t\t\t\t\t:placeholder=\"t('core', 'localhost')\"\n\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tdata-cy-setup-form-field=\"dbhost\"\n\t\t\t\t\t\tname=\"dbhost\"\n\t\t\t\t\t\tspellcheck=\"false\" />\n\t\t\t\t</fieldset>\n\n\t\t\t\t<!-- Encrypted database connection -->\n\t\t\t\t<details v-if=\"supportsEncryptedConnection\" data-cy-setup-form-database-encryption>\n\t\t\t\t\t<summary>{{ t('core', 'Encrypted database connection') }}</summary>\n\n\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t<legend class=\"hidden-visually\">\n\t\t\t\t\t\t\t{{ t('core', 'Encrypted database connection') }}\n\t\t\t\t\t\t</legend>\n\n\t\t\t\t\t\t<NcTextField\n\t\t\t\t\t\t\tv-if=\"config.dbtype === 'pgsql'\"\n\t\t\t\t\t\t\tv-model=\"config.dbsslmode\"\n\t\t\t\t\t\t\t:helperText=\"t('core', 'Supported modes: disable, allow, prefer, require, verify-ca, verify-full.')\"\n\t\t\t\t\t\t\t:label=\"t('core', 'Encryption mode')\"\n\t\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\tname=\"dbsslmode\"\n\t\t\t\t\t\t\tspellcheck=\"false\" />\n\n\t\t\t\t\t\t<NcTextField\n\t\t\t\t\t\t\tv-model=\"config.dbsslca\"\n\t\t\t\t\t\t\t:helperText=\"t('core', 'Has to be readable by the web server.')\"\n\t\t\t\t\t\t\t:label=\"t('core', 'CA certificate path')\"\n\t\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\tname=\"dbsslca\"\n\t\t\t\t\t\t\tspellcheck=\"false\" />\n\n\t\t\t\t\t\t<NcTextField\n\t\t\t\t\t\t\tv-model=\"config.dbsslcert\"\n\t\t\t\t\t\t\t:label=\"t('core', 'Client certificate path')\"\n\t\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\tname=\"dbsslcert\"\n\t\t\t\t\t\t\tspellcheck=\"false\" />\n\n\t\t\t\t\t\t<NcTextField\n\t\t\t\t\t\t\tv-model=\"config.dbsslkey\"\n\t\t\t\t\t\t\t:label=\"t('core', 'Client certificate key path')\"\n\t\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\tname=\"dbsslkey\"\n\t\t\t\t\t\t\tspellcheck=\"false\" />\n\n\t\t\t\t\t\t<NcTextField\n\t\t\t\t\t\t\tv-if=\"config.dbtype === 'pgsql'\"\n\t\t\t\t\t\t\tv-model=\"config.dbsslcrl\"\n\t\t\t\t\t\t\t:label=\"t('core', 'Certificate revocation list path')\"\n\t\t\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\tname=\"dbsslcrl\"\n\t\t\t\t\t\t\tspellcheck=\"false\" />\n\n\t\t\t\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t\t\t\tv-if=\"config.dbtype === 'mysql'\"\n\t\t\t\t\t\t\tv-model=\"dbsslnoverify\"\n\t\t\t\t\t\t\tname=\"dbsslnoverify\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tvalue=\"1\">\n\t\t\t\t\t\t\t{{ t('core', 'Do not verify that the server certificate matches the database host') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t</fieldset>\n\t\t\t\t</details>\n\t\t\t</fieldset>\n\t\t</details>\n\n\t\t<!-- Submit -->\n\t\t<NcButton\n\t\t\t:class=\"{ [$style.setupForm__button]: !loading }\"\n\t\t\t:disabled=\"loading\"\n\t\t\twide\n\t\t\talignment=\"center-reverse\"\n\t\t\tdata-cy-setup-form-submit\n\t\t\ttype=\"submit\"\n\t\t\tvariant=\"primary\">\n\t\t\t<template #icon>\n\t\t\t\t<NcLoadingIcon v-if=\"loading\" />\n\t\t\t\t<NcIconSvgWrapper v-else :path=\"mdiArrowRight\" />\n\t\t\t</template>\n\t\t\t{{ loading ? t('core', 'Installing …') : t('core', 'Install') }}\n\t\t</NcButton>\n\n\t\t<!-- Help note -->\n\t\t<NcNoteCard data-cy-setup-form-note=\"help\" type=\"info\">\n\t\t\t{{ t('core', 'Need help?') }}\n\t\t\t<a target=\"_blank\" rel=\"noreferrer noopener\" :href=\"links.adminInstall\">{{ t('core', 'See the documentation') }} ↗</a>\n\t\t</NcNoteCard>\n\t</form>\n</template>\n\n<style module lang=\"scss\">\n.setupForm {\n\tpadding: calc(3 * var(--default-grid-baseline));\n\tcolor: var(--color-main-text);\n\tborder-radius: var(--border-radius-container);\n\tbackground-color: var(--color-main-background-blur);\n\tbox-shadow: 0 0 10px var(--color-box-shadow);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\n\tmax-width: 300px;\n\tmargin-bottom: 30px;\n\n\t> fieldset:first-child,\n\t> :global(.notecard):first-child {\n\t\tmargin-top: 0;\n\t}\n\n\t> :global(.notecard):last-child {\n\t\tmargin-bottom: 0;\n\t}\n\n\tfieldset,\n\tdetails {\n\t\tmargin-block: 1rem;\n\t}\n\n\tcode {\n\t\tbackground-color: var(--color-background-dark);\n\t\tmargin-top: 1rem;\n\t\tpadding: 0 0.3em;\n\t\tborder-radius: var(--border-radius);\n\t}\n\n\t:global(.input-field) {\n\t\tmargin-block-start: 1rem !important;\n\t}\n\n\t:global(.notecard__heading) {\n\t\tfont-size: inherit !important;\n\t}\n}\n\n.setupForm__button {\n\t:global(.icon-vue) {\n\t\ttransition: all linear var(--animation-quick);\n\t}\n\n\t&:hover :global(.icon-vue) {\n\t\ttransform: translateX(0.2em);\n\t}\n}\n\n.setupForm__databaseTypeSelect {\n\tdisplay: flex;\n}\n\n.setupForm__databaseTypeSelect_vertical {\n\tflex-direction: column;\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport WebInstaller from './views/WebInstaller.vue'\nimport { mountInPlace } from './utils/mountInPlace.ts'\n\n// The placeholder carries the layout of an app content area, which would clip the form\nmountInPlace(createApp(WebInstaller), document.getElementById('content')!)\n"],"names":["checkPasswordEntropy","password","uniqueCharacters","entropy","config","reactive","loadState","links","form","useTemplateRef","isValidAutoconfig","ref","loading","passwordStrength","computed","passwordHelperText","t","passwordHelperType","supportsEncryptedConnection","dbsslnoverify","checked","firstAndOnlyDatabase","dbNames","DBTypeGroupDirection","htaccessWarning","message","DomPurify","errors","error","onMounted","adminFields","input","_createElementBlock","_normalizeClass","$style","_createBlock","_unref","NcNoteCard","_createElementVNode","_hoisted_1","_openBlock","_Fragment","_renderList","index","_createTextVNode","_toDisplayString","_createVNode","NcTextField","_cache","$event","NcPasswordField","_vShow","_withDirectives","_hoisted_2","_hoisted_3","name","db","NcCheckboxRadioSwitch","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","NcButton","NcLoadingIcon","NcIconSvgWrapper","mdiArrowRight","_hoisted_9","mountInPlace","createApp","WebInstaller"],"mappings":"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"}