Dependency updates + full ESM (#327)

* Dependency updates

* Fix eslint issues

* Switch to esm fully

* Fix Jest tests

* Update to node 16, force mini-css-extract-plugin to 1.x

* More dep updates

* Use correct NPM version in Actions

* Fix mini-css-extract-plugin version overrides

* Don't rely on Webpack for available languages
This commit is contained in:
Matt (IPv4) Cowley
2022-02-04 21:10:20 +00:00
committed by GitHub
parent 26e907bd81
commit 387a47b014
45 changed files with 28690 additions and 8945 deletions

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -33,11 +33,12 @@ THE SOFTWARE.
<template #header>
</template>
<template #buttons>
<VueSelect v-model="lang"
:options="i18nPacks"
:clearable="false"
:reduce="s => s.value"
:disabled="languageLoading"
<VueSelect
v-model="lang"
:options="i18nPacks"
:clearable="false"
:reduce="s => s.value"
:disabled="languageLoading"
>
<template #selected-option="{ label }">
<span class="has-icon">
@@ -79,10 +80,11 @@ THE SOFTWARE.
</div>
<template v-for="data in activeDomains">
<Domain :key="data[1]"
:ref="`domain-${data[1]}`"
:data="data[0]"
:style="{ display: data[1] === active ? undefined : 'none' }"
<Domain
:key="data[1]"
:ref="`domain-${data[1]}`"
:data="data[0]"
:style="{ display: data[1] === active ? undefined : 'none' }"
></Domain>
</template>
@@ -131,8 +133,7 @@ THE SOFTWARE.
import isObject from '../util/is_object';
import analytics from '../util/analytics';
import browserLanguage from '../util/browser_language';
import { defaultPack } from '../util/language_pack_default';
import { availablePacks } from '../util/language_pack_context';
import { defaultPack, availablePacks } from '../util/language_packs';
import { setLanguagePack } from '../i18n/setup';
import generators from '../generators';

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -34,10 +34,11 @@ THE SOFTWARE.
<i class="fas fa-times"></i>
</a>
</div>
<a href="https://github.com/digitalocean/nginxconfig.io"
class="button is-primary"
target="_blank"
@click="linkClickEvent"
<a
href="https://github.com/digitalocean/nginxconfig.io"
class="button is-primary"
target="_blank"
@click="linkClickEvent"
>
{{ $t('templates.callouts.contribute.getInvolvedOnGitHub') }}
</a>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -28,9 +28,10 @@ THE SOFTWARE.
<div class="callout">
<p>
{{ $t('templates.callouts.droplet.lookingForAPlaceToDeploy') }}
<ExternalLink :text="$t('templates.callouts.droplet.tryOutDigitalOceansDroplet')"
link="https://marketplace.digitalocean.com/apps/lemp"
@click.native="linkClickEvent"
<ExternalLink
:text="$t('templates.callouts.droplet.tryOutDigitalOceansDroplet')"
link="https://marketplace.digitalocean.com/apps/lemp"
@click.native="linkClickEvent"
></ExternalLink>
</p>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -42,13 +42,14 @@ THE SOFTWARE.
</ul>
</div>
<component :is="tab"
v-for="tab in tabs"
:key="tab.key"
:ref="tab.key"
:data="$props.data[tab.key]"
:style="{ display: active === tab.key ? undefined : 'none' }"
class="container"
<component
:is="tab"
v-for="tab in tabs"
:key="tab.key"
:ref="tab.key"
:data="$props.data[tab.key]"
:style="{ display: active === tab.key ? undefined : 'none' }"
class="container"
></component>
<div class="navigation-buttons">

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -81,12 +81,14 @@ THE SOFTWARE.
<label class="text message is-warning">
<span class="message-body">
{{ $t('templates.domainSections.https.http3IsANonStandardModule') }}
<ExternalLink :text="$t('templates.domainSections.https.http3NginxQuicReadme')"
link="https://quic.nginx.org/README"
<ExternalLink
:text="$t('templates.domainSections.https.http3NginxQuicReadme')"
link="https://quic.nginx.org/README"
></ExternalLink>
{{ $t('templates.domainSections.https.http3OrThe') }}
<ExternalLink :text="$t('templates.domainSections.https.http3CloudflareQuicheProject')"
link="https://github.com/cloudflare/quiche/tree/master/extras/nginx"
<ExternalLink
:text="$t('templates.domainSections.https.http3CloudflareQuicheProject')"
link="https://github.com/cloudflare/quiche/tree/master/extras/nginx"
></ExternalLink>
{{ $t('templates.domainSections.https.http3ForBuildingNginxWithHttp3') }}
</span>
@@ -158,8 +160,9 @@ THE SOFTWARE.
</div>
<div class="field-body">
<div class="field">
<div v-for="(name, value) in $props.data.certType.options"
:class="`control${certTypeChanged && value === certType ? ' is-changed' : ''}`"
<div
v-for="(name, value) in $props.data.certType.options"
:class="`control${certTypeChanged && value === certType ? ' is-changed' : ''}`"
>
<div class="radio">
<PrettyRadio v-model="certType" :value="value" class="p-default p-round p-fill p-icon">
@@ -179,10 +182,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${letsEncryptEmailChanged ? ' is-changed' : ''}`">
<input v-model="letsEncryptEmail"
class="input"
type="text"
:placeholder="$props.data.letsEncryptEmail.computed"
<input
v-model="letsEncryptEmail"
class="input"
type="text"
:placeholder="$props.data.letsEncryptEmail.computed"
/>
</div>
</div>
@@ -196,10 +200,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${sslCertificateChanged ? ' is-changed' : ''}`">
<input v-model="sslCertificate"
class="input"
type="text"
:placeholder="`${$parent.$parent.$data.global.nginx.nginxConfigDirectory.computed}/ssl/${$parent.$props.data.server.domain.computed}.crt`"
<input
v-model="sslCertificate"
class="input"
type="text"
:placeholder="`${$parent.$parent.$data.global.nginx.nginxConfigDirectory.computed}/ssl/${$parent.$props.data.server.domain.computed}.crt`"
/>
</div>
</div>
@@ -213,10 +218,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${sslCertificateKeyChanged ? ' is-changed' : ''}`">
<input v-model="sslCertificateKey"
class="input"
type="text"
:placeholder="`${$parent.$parent.$data.global.nginx.nginxConfigDirectory.computed}/ssl/${$parent.$props.data.server.domain.computed}.key`"
<input
v-model="sslCertificateKey"
class="input"
type="text"
:placeholder="`${$parent.$parent.$data.global.nginx.nginxConfigDirectory.computed}/ssl/${$parent.$props.data.server.domain.computed}.key`"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -49,8 +49,9 @@ THE SOFTWARE.
</div>
<div class="control">
<label class="text">
<ExternalLink :text="$t('templates.domainSections.onion.learnMoreAboutOnionServices')"
link="https://community.torproject.org/onion-services/"
<ExternalLink
:text="$t('templates.domainSections.onion.learnMoreAboutOnionServices')"
link="https://community.torproject.org/onion-services/"
></ExternalLink>
</label>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -72,16 +72,18 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${phpServerChanged ? ' is-changed' : ''}`">
<VueSelect ref="phpServerSelect"
v-model="phpServer"
:options="phpServerOptions"
:clearable="false"
:reduce="s => s.value"
<VueSelect
ref="phpServerSelect"
v-model="phpServer"
:options="phpServerOptions"
:clearable="false"
:reduce="s => s.value"
></VueSelect>
</div>
<div v-if="phpServerCustomEnabled"
:class="`control${phpServerCustomChanged ? ' is-changed' : ''}`"
<div
v-if="phpServerCustomEnabled"
:class="`control${phpServerCustomChanged ? ' is-changed' : ''}`"
>
<input v-model="phpServerCustom" class="input" type="text" :placeholder="$props.data.phpServerCustom.default" />
</div>
@@ -96,16 +98,18 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${phpBackupServerChanged ? ' is-changed' : ''}`">
<VueSelect ref="phpBackupServerSelect"
v-model="phpBackupServer"
:options="phpBackupServerOptions"
:clearable="false"
:reduce="s => s.value"
<VueSelect
ref="phpBackupServerSelect"
v-model="phpBackupServer"
:options="phpBackupServerOptions"
:clearable="false"
:reduce="s => s.value"
></VueSelect>
</div>
<div v-if="phpBackupServerCustomEnabled"
:class="`control${phpBackupServerCustomChanged ? ' is-changed' : ''}`"
<div
v-if="phpBackupServerCustomEnabled"
:class="`control${phpBackupServerCustomChanged ? ' is-changed' : ''}`"
>
<input v-model="phpBackupServerCustom" class="input" type="text" :placeholder="$props.data.phpBackupServerCustom.default" />
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -41,9 +41,10 @@ THE SOFTWARE.
</div>
<div class="buttons-group">
<a v-for="(preset, key) in $props.data"
:class="`button${preset.computed ? ' is-primary' : ''}`"
@click="setPreset(key)"
<a
v-for="(preset, key) in $props.data"
:class="`button${preset.computed ? ' is-primary' : ''}`"
@click="setPreset(key)"
>
{{ $t(preset.display) }}
</a>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2020 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -192,12 +192,13 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${responseCodeChanged ? ' is-changed' : ''}`">
<input v-model.number="responseCode"
:class="['input', validResponseCode ? '' : 'is-danger']"
type="number"
min="100"
step="1"
:placeholder="$props.data.responseCode.default"
<input
v-model.number="responseCode"
:class="['input', validResponseCode ? '' : 'is-danger']"
type="number"
min="100"
step="1"
:placeholder="$props.data.responseCode.default"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2020 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -72,10 +72,11 @@ THE SOFTWARE.
<div class="field-body">
<div :class="`field${pathChanged ? ' is-changed' : ''}`">
<div class="control">
<input v-model="path"
class="input"
type="text"
:placeholder="$props.data.path.default"
<input
v-model="path"
class="input"
type="text"
:placeholder="$props.data.path.default"
/>
</div>
</div>
@@ -89,10 +90,11 @@ THE SOFTWARE.
<div class="field-body">
<div :class="`field${proxyPassChanged ? ' is-changed' : ''}`">
<div class="control">
<input v-model="proxyPass"
class="input"
type="text"
:placeholder="$props.data.proxyPass.default"
<input
v-model="proxyPass"
class="input"
type="text"
:placeholder="$props.data.proxyPass.default"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2020 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -50,8 +50,9 @@ THE SOFTWARE.
</div>
<div class="field-body">
<div class="field">
<div v-for="value in $props.data.index.options"
:class="`control${indexChanged && value === index ? ' is-changed' : ''}`"
<div
v-for="value in $props.data.index.options"
:class="`control${indexChanged && value === index ? ' is-changed' : ''}`"
>
<div class="radio">
<PrettyRadio v-model="index" :value="value" class="p-default p-round p-fill p-icon">
@@ -97,10 +98,11 @@ THE SOFTWARE.
<div class="field-body">
<div :class="`field${fallbackPhpPathChanged ? ' is-changed' : ''}`">
<div class="control">
<input v-model="fallbackPhpPath"
class="input"
type="text"
:placeholder="$props.data.fallbackPhpPath.default"
<input
v-model="fallbackPhpPath"
class="input"
type="text"
:placeholder="$props.data.fallbackPhpPath.default"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2020 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -32,24 +32,28 @@ THE SOFTWARE.
</p>
<p>
{{ $t('templates.footer.thisToolIs') }}
<ExternalLink :text="$t('templates.footer.openSourceOnGitHub')"
link="https://github.com/digitalocean/nginxconfig.io"
<ExternalLink
:text="$t('templates.footer.openSourceOnGitHub')"
link="https://github.com/digitalocean/nginxconfig.io"
></ExternalLink>
{{ $t('templates.footer.underThe') }}
<ExternalLink :text="$t('templates.footer.mit')"
link="https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE"
<ExternalLink
:text="$t('templates.footer.mit')"
link="https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE"
></ExternalLink>
{{ $t('templates.footer.license') }}
{{ $t('templates.footer.weWelcomeFeedbackAndContributions') }}
</p>
<p>
{{ $t('templates.footer.originallyCreatedBy') }}
<ExternalLink :text="$t('templates.footer.balintSzekeres')"
link="https://b4lint.hu/"
<ExternalLink
:text="$t('templates.footer.balintSzekeres')"
link="https://b4lint.hu/"
></ExternalLink>,
{{ $t('templates.footer.maintainedBy') }}
<ExternalLink :text="$t('templates.footer.digitalOcean')"
link="https://github.com/digitalocean/nginxconfig.io"
<ExternalLink
:text="$t('templates.footer.digitalOcean')"
link="https://github.com/digitalocean/nginxconfig.io"
></ExternalLink>.
</p>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -37,13 +37,14 @@ THE SOFTWARE.
</ul>
</div>
<component :is="tab"
v-for="tab in tabs"
:key="tab.key"
:ref="tab.key"
:data="$props.data[tab.key]"
:style="{ display: active === tab.key ? undefined : 'none' }"
class="container"
<component
:is="tab"
v-for="tab in tabs"
:key="tab.key"
:ref="tab.key"
:data="$props.data[tab.key]"
:style="{ display: active === tab.key ? undefined : 'none' }"
class="container"
></component>
<div class="navigation-buttons">

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -67,8 +67,9 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div class="field">
<div v-for="(name, value) in $props.data.sslProfile.options"
:class="`control${sslProfileChanged && value === sslProfile ? ' is-changed' : ''}`"
<div
v-for="(name, value) in $props.data.sslProfile.options"
:class="`control${sslProfileChanged && value === sslProfile ? ' is-changed' : ''}`"
>
<div class="radio">
<PrettyRadio v-model="sslProfile" :value="value" class="p-default p-round p-fill p-icon">
@@ -97,8 +98,9 @@ THE SOFTWARE.
</div>
</div>
<div v-if="$props.data.ocspCloudflare.computed" class="control field is-horizontal is-expanded">
<div v-for="(name, value) in $props.data.ocspCloudflareType.options"
:class="`control${ocspCloudflareTypeChanged && value === ocspCloudflareType ? ' is-changed' : ''}`"
<div
v-for="(name, value) in $props.data.ocspCloudflareType.options"
:class="`control${ocspCloudflareTypeChanged && value === ocspCloudflareType ? ' is-changed' : ''}`"
>
<div class="radio">
<PrettyRadio v-model="ocspCloudflareType" :value="value" class="p-default p-round p-fill p-icon">
@@ -118,8 +120,9 @@ THE SOFTWARE.
</div>
</div>
<div v-if="$props.data.ocspGoogle.computed" class="control field is-horizontal is-expanded">
<div v-for="(name, value) in $props.data.ocspGoogleType.options"
:class="`control${ocspGoogleTypeChanged && value === ocspGoogleType ? ' is-changed' : ''}`"
<div
v-for="(name, value) in $props.data.ocspGoogleType.options"
:class="`control${ocspGoogleTypeChanged && value === ocspGoogleType ? ' is-changed' : ''}`"
>
<div class="radio">
<PrettyRadio v-model="ocspGoogleType" :value="value" class="p-default p-round p-fill p-icon">
@@ -139,8 +142,9 @@ THE SOFTWARE.
</div>
</div>
<div v-if="$props.data.ocspOpenDns.computed" class="control field is-horizontal is-expanded">
<div v-for="(name, value) in $props.data.ocspOpenDnsType.options"
:class="`control${ocspOpenDnsTypeChanged && value === ocspOpenDnsType ? ' is-changed' : ''}`"
<div
v-for="(name, value) in $props.data.ocspOpenDnsType.options"
:class="`control${ocspOpenDnsTypeChanged && value === ocspOpenDnsType ? ' is-changed' : ''}`"
>
<div class="radio">
<PrettyRadio v-model="ocspOpenDnsType" :value="value" class="p-default p-round p-fill p-icon">
@@ -160,8 +164,9 @@ THE SOFTWARE.
</div>
</div>
<div v-if="$props.data.ocspQuad9.computed" class="control field is-horizontal is-expanded">
<div v-for="(name, value) in $props.data.ocspQuad9Type.options"
:class="`control${ocspQuad9TypeChanged && value === ocspQuad9Type ? ' is-changed' : ''}`"
<div
v-for="(name, value) in $props.data.ocspQuad9Type.options"
:class="`control${ocspQuad9TypeChanged && value === ocspQuad9Type ? ' is-changed' : ''}`"
>
<div class="radio">
<PrettyRadio v-model="ocspQuad9Type" :value="value" class="p-default p-round p-fill p-icon">
@@ -181,8 +186,9 @@ THE SOFTWARE.
</div>
</div>
<div v-if="$props.data.ocspVerisign.computed" class="control field is-horizontal is-expanded">
<div v-for="(name, value) in $props.data.ocspVerisignType.options"
:class="`control${ocspVerisignTypeChanged && value === ocspVerisignType ? ' is-changed' : ''}`"
<div
v-for="(name, value) in $props.data.ocspVerisignType.options"
:class="`control${ocspVerisignTypeChanged && value === ocspVerisignType ? ' is-changed' : ''}`"
>
<div class="radio">
<PrettyRadio v-model="ocspVerisignType" :value="value" class="p-default p-round p-fill p-icon">
@@ -203,10 +209,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${letsEncryptRootChanged ? ' is-changed' : ''}`">
<input v-model="letsEncryptRoot"
class="input"
type="text"
:placeholder="$props.data.letsEncryptRoot.default"
<input
v-model="letsEncryptRoot"
class="input"
type="text"
:placeholder="$props.data.letsEncryptRoot.default"
/>
</div>
</div>
@@ -220,10 +227,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${letsEncryptCertRootChanged ? ' is-changed' : ''}`">
<input v-model="letsEncryptCertRoot"
class="input"
type="text"
:placeholder="$props.data.letsEncryptCertRoot.default"
<input
v-model="letsEncryptCertRoot"
class="input"
type="text"
:placeholder="$props.data.letsEncryptCertRoot.default"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2020 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -33,10 +33,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${accessLogChanged ? ' is-changed' : ''}`">
<input v-model="accessLog"
class="input"
type="text"
:placeholder="$props.data.accessLog.default"
<input
v-model="accessLog"
class="input"
type="text"
:placeholder="$props.data.accessLog.default"
/>
</div>
</div>
@@ -50,10 +51,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${errorLogChanged ? ' is-changed' : ''}`">
<input v-model="errorLog"
class="input"
type="text"
:placeholder="$props.data.errorLog.default"
<input
v-model="errorLog"
class="input"
type="text"
:placeholder="$props.data.errorLog.default"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2020 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -33,10 +33,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${nginxConfigDirectoryChanged ? ' is-changed' : ''}`">
<input v-model="nginxConfigDirectory"
class="input"
type="text"
:placeholder="$props.data.nginxConfigDirectory.default"
<input
v-model="nginxConfigDirectory"
class="input"
type="text"
:placeholder="$props.data.nginxConfigDirectory.default"
/>
</div>
</div>
@@ -50,9 +51,10 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${workerProcessesChanged ? ' is-changed' : ''}`">
<VueSelect v-model="workerProcesses"
:options="$props.data.workerProcesses.options"
:clearable="false"
<VueSelect
v-model="workerProcesses"
:options="$props.data.workerProcesses.options"
:clearable="false"
></VueSelect>
</div>
</div>
@@ -66,10 +68,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${userChanged ? ' is-changed' : ''}`">
<input v-model="user"
class="input"
type="text"
:placeholder="$props.data.user.default"
<input
v-model="user"
class="input"
type="text"
:placeholder="$props.data.user.default"
/>
</div>
</div>
@@ -83,10 +86,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${pidChanged ? ' is-changed' : ''}`">
<input v-model="pid"
class="input"
type="text"
:placeholder="$props.data.pid.default"
<input
v-model="pid"
class="input"
type="text"
:placeholder="$props.data.pid.default"
/>
</div>
</div>
@@ -100,12 +104,13 @@ THE SOFTWARE.
<div class="field-body">
<div class="field has-addons">
<div :class="`control is-expanded${clientMaxBodySizeChanged ? ' is-changed' : ''}`">
<input v-model.number="clientMaxBodySize"
class="input"
type="number"
min="0"
step="1"
:placeholder="$props.data.clientMaxBodySize.default"
<input
v-model.number="clientMaxBodySize"
class="input"
type="number"
min="0"
step="1"
:placeholder="$props.data.clientMaxBodySize.default"
/>
</div>
<div class="control">
@@ -124,9 +129,10 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${typesHashMaxSizeChanged ? ' is-changed' : ''}`">
<VueSelect v-model="typesHashMaxSize"
:options="$props.data.typesHashMaxSize.options"
:clearable="false"
<VueSelect
v-model="typesHashMaxSize"
:options="$props.data.typesHashMaxSize.options"
:clearable="false"
></VueSelect>
</div>
</div>
@@ -140,9 +146,10 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${typesHashBucketSizeChanged ? ' is-changed' : ''}`">
<VueSelect v-model="typesHashBucketSize"
:options="$props.data.typesHashBucketSize.options"
:clearable="false"
<VueSelect
v-model="typesHashBucketSize"
:options="$props.data.typesHashBucketSize.options"
:clearable="false"
></VueSelect>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2020 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -82,10 +82,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${assetsExpirationChanged ? ' is-changed' : ''}`">
<input v-model="assetsExpiration"
class="input"
type="text"
:placeholder="$props.data.assetsExpiration.default"
<input
v-model="assetsExpiration"
class="input"
type="text"
:placeholder="$props.data.assetsExpiration.default"
/>
</div>
</div>
@@ -99,10 +100,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${mediaExpirationChanged ? ' is-changed' : ''}`">
<input v-model="mediaExpiration"
class="input"
type="text"
:placeholder="$props.data.mediaExpiration.default"
<input
v-model="mediaExpiration"
class="input"
type="text"
:placeholder="$props.data.mediaExpiration.default"
/>
</div>
</div>
@@ -116,10 +118,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${svgExpirationChanged ? ' is-changed' : ''}`">
<input v-model="svgExpiration"
class="input"
type="text"
:placeholder="$props.data.svgExpiration.default"
<input
v-model="svgExpiration"
class="input"
type="text"
:placeholder="$props.data.svgExpiration.default"
/>
</div>
</div>
@@ -133,10 +136,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${fontsExpirationChanged ? ' is-changed' : ''}`">
<input v-model="fontsExpiration"
class="input"
type="text"
:placeholder="$props.data.fontsExpiration.default"
<input
v-model="fontsExpiration"
class="input"
type="text"
:placeholder="$props.data.fontsExpiration.default"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2020 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -48,10 +48,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${pythonServerChanged ? ' is-changed' : ''}`">
<input v-model="pythonServer"
class="input"
type="text"
:placeholder="$props.data.pythonServer.default"
<input
v-model="pythonServer"
class="input"
type="text"
:placeholder="$props.data.pythonServer.default"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -49,12 +49,13 @@ THE SOFTWARE.
<div class="field-body">
<div class="field has-addons">
<div :class="`control is-expanded${proxyConnectTimeoutChanged ? ' is-changed' : ''}`">
<input v-model.number="proxyConnectTimeout"
class="input"
type="number"
min="0"
step="1"
:placeholder="$props.data.proxyConnectTimeout.default"
<input
v-model.number="proxyConnectTimeout"
class="input"
type="number"
min="0"
step="1"
:placeholder="$props.data.proxyConnectTimeout.default"
/>
</div>
<div class="control">
@@ -73,12 +74,13 @@ THE SOFTWARE.
<div class="field-body">
<div class="field has-addons">
<div :class="`control is-expanded${proxySendTimeoutChanged ? ' is-changed' : ''}`">
<input v-model.number="proxySendTimeout"
class="input"
type="number"
min="0"
step="1"
:placeholder="$props.data.proxySendTimeout.default"
<input
v-model.number="proxySendTimeout"
class="input"
type="number"
min="0"
step="1"
:placeholder="$props.data.proxySendTimeout.default"
/>
</div>
<div class="control">
@@ -97,12 +99,13 @@ THE SOFTWARE.
<div class="field-body">
<div class="field has-addons">
<div :class="`control is-expanded${proxyReadTimeoutChanged ? ' is-changed' : ''}`">
<input v-model.number="proxyReadTimeout"
class="input"
type="number"
min="0"
step="1"
:placeholder="$props.data.proxyReadTimeout.default"
<input
v-model.number="proxyReadTimeout"
class="input"
type="number"
min="0"
step="1"
:placeholder="$props.data.proxyReadTimeout.default"
/>
</div>
<div class="control">
@@ -121,8 +124,9 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div class="field">
<div v-for="(name, value) in $props.data.proxyCoexistenceXForwarded.options"
:class="`control${proxyCoexistenceXForwardedChanged && value === proxyCoexistenceXForwarded ? ' is-changed' : ''}`"
<div
v-for="(name, value) in $props.data.proxyCoexistenceXForwarded.options"
:class="`control${proxyCoexistenceXForwardedChanged && value === proxyCoexistenceXForwarded ? ' is-changed' : ''}`"
>
<div class="radio">
<PrettyRadio v-model="proxyCoexistenceXForwarded" :value="value" class="p-default p-round p-fill p-icon">

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -33,9 +33,10 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${referrerPolicyChanged ? ' is-changed' : ''}`">
<VueSelect v-model="referrerPolicy"
:options="$props.data.referrerPolicy.options"
:clearable="false"
<VueSelect
v-model="referrerPolicy"
:options="$props.data.referrerPolicy.options"
:clearable="false"
></VueSelect>
</div>
</div>
@@ -49,16 +50,18 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${contentSecurityPolicyChanged ? ' is-changed' : ''}`">
<input v-model="contentSecurityPolicy"
class="input"
type="text"
:placeholder="$props.data.contentSecurityPolicy.default"
<input
v-model="contentSecurityPolicy"
class="input"
type="text"
:placeholder="$props.data.contentSecurityPolicy.default"
/>
</div>
<div v-if="hasWordPress && !hasWordPressUnsafeEval" class="control">
<label class="text message is-warning">
<span class="message-body"
v-html="$t('templates.globalSections.security.whenUsingWordPressUnsafeEvalIsOftenRequiredToAllowFunctionality')"
<span
class="message-body"
v-html="$t('templates.globalSections.security.whenUsingWordPressUnsafeEvalIsOftenRequiredToAllowFunctionality')"
></span>
</label>
</div>
@@ -73,10 +76,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${permissionsPolicyChanged ? ' is-changed' : ''}`">
<input v-model="permissionsPolicy"
class="input"
type="text"
:placeholder="$props.data.permissionsPolicy.default"
<input
v-model="permissionsPolicy"
class="input"
type="text"
:placeholder="$props.data.permissionsPolicy.default"
/>
</div>
</div>
@@ -144,10 +148,11 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div :class="`control${securityTxtChanged ? ' is-changed' : ''}`">
<input v-model="securityTxtPath"
class="input"
type="text"
:placeholder="$props.data.securityTxtPath.default"
<input
v-model="securityTxtPath"
class="input"
type="text"
:placeholder="$props.data.securityTxtPath.default"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -70,11 +70,12 @@ THE SOFTWARE.
<div class="field-body">
<div class="field">
<div class="control">
<input v-model="shareLink"
class="input"
type="text"
readonly="readonly"
@click="select"
<input
v-model="shareLink"
class="input"
type="text"
readonly="readonly"
@click="select"
/>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -35,12 +35,13 @@ THE SOFTWARE.
</ul>
</div>
<component :is="tab"
v-for="tab in tabs"
:key="tab.key"
:data="$props.data"
:style="{ display: active === tab.key ? undefined : 'none' }"
class="container"
<component
:is="tab"
v-for="tab in tabs"
:key="tab.key"
:data="$props.data"
:style="{ display: active === tab.key ? undefined : 'none' }"
class="container"
></component>
<div class="navigation-buttons">

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -32,9 +32,10 @@ THE SOFTWARE.
{{ $t('templates.setupSections.certbot.commentOutSslDirectivesInConfiguration') }}
<br />
</p>
<BashPrism :key="sitesAvailable"
:cmd="`sed -i -r 's/(listen .*443)/\\1; #/g; s/(ssl_(certificate|certificate_key|trusted_certificate) )/#;#\\1/g; s/(server \\{)/\\1\\n ssl off;/g' ${sitesAvailable}`"
@copied="codeCopiedEvent('Disable ssl directives')"
<BashPrism
:key="sitesAvailable"
:cmd="`sed -i -r 's/(listen .*443)/\\1; #/g; s/(ssl_(certificate|certificate_key|trusted_certificate) )/#;#\\1/g; s/(server \\{)/\\1\\n ssl off;/g' ${sitesAvailable}`"
@copied="codeCopiedEvent('Disable ssl directives')"
></BashPrism>
</li>
@@ -43,8 +44,9 @@ THE SOFTWARE.
{{ $t('templates.setupSections.certbot.reloadYourNginxServer') }}
<br />
</p>
<BashPrism cmd="sudo nginx -t && sudo systemctl reload nginx"
@copied="codeCopiedEvent('Reload nginx')"
<BashPrism
cmd="sudo nginx -t && sudo systemctl reload nginx"
@copied="codeCopiedEvent('Reload nginx')"
></BashPrism>
</li>
@@ -53,9 +55,10 @@ THE SOFTWARE.
{{ $t('templates.setupSections.certbot.obtainSslCertificatesFromLetsEncrypt') }}
<br />
</p>
<BashPrism :key="certbotCmds"
:cmd="certbotCmds"
@copied="codeCopiedEvent('Obtain certificates using certbot')"
<BashPrism
:key="certbotCmds"
:cmd="certbotCmds"
@copied="codeCopiedEvent('Obtain certificates using certbot')"
></BashPrism>
</li>
@@ -64,9 +67,10 @@ THE SOFTWARE.
{{ $t('templates.setupSections.certbot.uncommentSslDirectivesInConfiguration') }}
<br />
</p>
<BashPrism :key="sitesAvailable"
:cmd="`sed -i -r -z 's/#?; ?#//g; s/(server \\{)\\n ssl off;/\\1/g' ${sitesAvailable}`"
@copied="codeCopiedEvent('Enable ssl directives')"
<BashPrism
:key="sitesAvailable"
:cmd="`sed -i -r -z 's/#?; ?#//g; s/(server \\{)\\n ssl off;/\\1/g' ${sitesAvailable}`"
@copied="codeCopiedEvent('Enable ssl directives')"
></BashPrism>
</li>
@@ -75,8 +79,9 @@ THE SOFTWARE.
{{ $t('templates.setupSections.certbot.reloadYourNginxServer') }}
<br />
</p>
<BashPrism cmd="sudo nginx -t && sudo systemctl reload nginx"
@copied="codeCopiedEvent('Reload nginx (2)')"
<BashPrism
cmd="sudo nginx -t && sudo systemctl reload nginx"
@copied="codeCopiedEvent('Reload nginx (2)')"
></BashPrism>
</li>
@@ -85,11 +90,13 @@ THE SOFTWARE.
{{ $t('templates.setupSections.certbot.configureCertbotToReloadNginxOnCertificateRenewal') }}
<br />
</p>
<BashPrism cmd="echo -e '#!/bin/bash\nnginx -t && systemctl reload nginx' | sudo tee /etc/letsencrypt/renewal-hooks/post/nginx-reload.sh"
@copied="codeCopiedEvent('Create nginx auto-restart on renewal')"
<BashPrism
cmd="echo -e '#!/bin/bash\nnginx -t && systemctl reload nginx' | sudo tee /etc/letsencrypt/renewal-hooks/post/nginx-reload.sh"
@copied="codeCopiedEvent('Create nginx auto-restart on renewal')"
></BashPrism>
<BashPrism cmd="sudo chmod a+x /etc/letsencrypt/renewal-hooks/post/nginx-reload.sh"
@copied="codeCopiedEvent('Enable execution of auto-restart')"
<BashPrism
cmd="sudo chmod a+x /etc/letsencrypt/renewal-hooks/post/nginx-reload.sh"
@copied="codeCopiedEvent('Enable execution of auto-restart')"
></BashPrism>
</li>
</ol>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -50,9 +50,10 @@ THE SOFTWARE.
<p>
<span v-html="$t('templates.setupSections.download.navigateToYourNginxConfigurationDirectoryOnYourServer')"></span>
<br />
<BashPrism :key="$props.data.global.nginx.nginxConfigDirectory.computed"
:cmd="`cd ${$props.data.global.nginx.nginxConfigDirectory.computed}`"
@copied="codeCopiedEvent('Navigate to nginx config directory')"
<BashPrism
:key="$props.data.global.nginx.nginxConfigDirectory.computed"
:cmd="`cd ${$props.data.global.nginx.nginxConfigDirectory.computed}`"
@copied="codeCopiedEvent('Navigate to nginx config directory')"
></BashPrism>
</p>
</li>
@@ -61,8 +62,9 @@ THE SOFTWARE.
<p>
<span v-html="$t('templates.setupSections.download.createABackupOfYourCurrentNginxConfiguration')"></span>
<br />
<BashPrism cmd="tar -czvf nginx_$(date +'%F_%H-%M-%S').tar.gz nginx.conf sites-available/ sites-enabled/ nginxconfig.io/"
@copied="codeCopiedEvent('Create nginx config backup tar')"
<BashPrism
cmd="tar -czvf nginx_$(date +'%F_%H-%M-%S').tar.gz nginx.conf sites-available/ sites-enabled/ nginxconfig.io/"
@copied="codeCopiedEvent('Create nginx config backup tar')"
></BashPrism>
</p>
</li>
@@ -71,9 +73,10 @@ THE SOFTWARE.
<p>
<span v-html="$t('templates.setupSections.download.extractTheNewCompressedConfigurationArchiveUsingTar')"></span>
<br />
<BashPrism :key="$parent.tarName"
:cmd="`tar -xzvf ${$parent.tarName} | xargs chmod 0644`"
@copied="codeCopiedEvent('Extract new nginx config tar')"
<BashPrism
:key="$parent.tarName"
:cmd="`tar -xzvf ${$parent.tarName} | xargs chmod 0644`"
@copied="codeCopiedEvent('Extract new nginx config tar')"
></BashPrism>
</p>
</li>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -32,8 +32,9 @@ THE SOFTWARE.
<p>
{{ $t('templates.setupSections.goLive.reloadNginxToLoadInYourNewConfiguration') }}
<br />
<BashPrism cmd="sudo nginx -t && sudo systemctl reload nginx"
@copied="codeCopiedEvent('Reload nginx')"
<BashPrism
cmd="sudo nginx -t && sudo systemctl reload nginx"
@copied="codeCopiedEvent('Reload nginx')"
></BashPrism>
</p>
</div>

View File

@@ -1,5 +1,5 @@
<!--
Copyright 2021 DigitalOcean
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
@@ -31,9 +31,10 @@ THE SOFTWARE.
<p>
<span v-html="$t('templates.setupSections.ssl.generateDiffieHellmanKeysByRunningThisCommandOnYourServer')"></span>
<br />
<BashPrism :key="`${$props.data.global.nginx.nginxConfigDirectory.computed}-${diffieHellmanValue}`"
:cmd="`openssl dhparam -out ${$props.data.global.nginx.nginxConfigDirectory.computed}/dhparam.pem ${diffieHellmanValue}`"
@copied="codeCopiedEvent('Generate diffie-hellman keys')"
<BashPrism
:key="`${$props.data.global.nginx.nginxConfigDirectory.computed}-${diffieHellmanValue}`"
:cmd="`openssl dhparam -out ${$props.data.global.nginx.nginxConfigDirectory.computed}/dhparam.pem ${diffieHellmanValue}`"
@copied="codeCopiedEvent('Generate diffie-hellman keys')"
></BashPrism>
</p>
</li>
@@ -42,13 +43,15 @@ THE SOFTWARE.
<p>
<span v-html="$t('templates.setupSections.ssl.createACommonAcmeChallengeDirectoryForLetsEncrypt')"></span>
<br />
<BashPrism :key="letsEncryptDir"
:cmd="`mkdir -p ${letsEncryptDir}`"
@copied="codeCopiedEvent('Create let\'s encrypt directory')"
<BashPrism
:key="letsEncryptDir"
:cmd="`mkdir -p ${letsEncryptDir}`"
@copied="codeCopiedEvent('Create let\'s encrypt directory')"
></BashPrism>
<BashPrism :key="`${nginxUser}-${letsEncryptDir}`"
:cmd="`chown ${nginxUser} ${letsEncryptDir}`"
@copied="codeCopiedEvent('Set let\'s encrypt directory ownership')"
<BashPrism
:key="`${nginxUser}-${letsEncryptDir}`"
:cmd="`chown ${nginxUser} ${letsEncryptDir}`"
@copied="codeCopiedEvent('Set let\'s encrypt directory ownership')"
></BashPrism>
</p>
</li>