diff --git a/nginx/nginxconfig.io/.github/ISSUE_TEMPLATE/help.md b/nginx/nginxconfig.io/.github/ISSUE_TEMPLATE/help.md
new file mode 100644
index 0000000000000000000000000000000000000000..417d0ac082fe253b5b8a7bb417044150f48a2aea
--- /dev/null
+++ b/nginx/nginxconfig.io/.github/ISSUE_TEMPLATE/help.md
@@ -0,0 +1,29 @@
+---
+name: Help β
+about: Encountered a problem with the tool?
+---
+
+
+
+## Information
+
+
+## Help request
+
+### Problem
+
+
+### What I have tried
+
+
+### Screenshots
+
diff --git a/nginx/nginxconfig.io/.github/ISSUE_TEMPLATE/report-a-bug.md b/nginx/nginxconfig.io/.github/ISSUE_TEMPLATE/report-a-bug.md
new file mode 100644
index 0000000000000000000000000000000000000000..747d22745561bfd3be0bb5bd81c551cd9f09867f
--- /dev/null
+++ b/nginx/nginxconfig.io/.github/ISSUE_TEMPLATE/report-a-bug.md
@@ -0,0 +1,36 @@
+---
+name: Report a bug π
+about: Report a bug with the tool. Only use this if you're 100% sure there's something wrong, otherwise, try "Help".
+---
+
+
+
+## Information
+
+
+## Details
+
+### Description
+
+
+### Steps to reproduce
+
+
+### Expected behavior
+
+
+### Screenshots
+
diff --git a/nginx/nginxconfig.io/.github/ISSUE_TEMPLATE/request-a-feature.md b/nginx/nginxconfig.io/.github/ISSUE_TEMPLATE/request-a-feature.md
new file mode 100644
index 0000000000000000000000000000000000000000..8ba9eb575ae69d31789e93bb342fd501618d3968
--- /dev/null
+++ b/nginx/nginxconfig.io/.github/ISSUE_TEMPLATE/request-a-feature.md
@@ -0,0 +1,38 @@
+---
+name: Request a feature π
+about: Suggest a new feature that you would like in the tool!
+---
+
+
+
+## Feature request
+
+### Feature description
+
+
+### How the feature is useful
+
diff --git a/nginx/nginxconfig.io/.github/PULL_REQUEST_TEMPLATE.md b/nginx/nginxconfig.io/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000000000000000000000000000000000000..13d86895fba560fc9a31108cde4f3c70731943f7
--- /dev/null
+++ b/nginx/nginxconfig.io/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,16 @@
+## Type of Change
+
+
+- **Build Scripts:**
+- **Tool Source:**
+- **Something else:**
+
+## What issue does this relate to?
+
+
+### What should this PR do?
+
+
+### What are the acceptance criteria?
+
+
diff --git a/nginx/nginxconfig.io/.github/workflows/do-spaces-workflow.yml b/nginx/nginxconfig.io/.github/workflows/do-spaces-workflow.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e74a8e5156f18412f229c3dc316aa3757ede14ac
--- /dev/null
+++ b/nginx/nginxconfig.io/.github/workflows/do-spaces-workflow.yml
@@ -0,0 +1,54 @@
+name: Deploy to DigitalOcean Spaces
+
+on: push
+
+permissions:
+ contents: write
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Use Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version-file: .nvmrc
+ cache: npm
+
+ - name: Setup NPM
+ run: |
+ NPM_VERSION=$(jq -r .engines.npm package.json)
+ NPM_VERSION=${NPM_VERSION/\^/}
+ if [ "$(npm --version)" != "$NPM_VERSION" ]; then
+ npm install -g npm@$NPM_VERSION && npm --version
+ else
+ echo "NPM version is same as package.json engines.npm"
+ fi
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Build tool
+ run: npm run build
+ env:
+ NODE_ENV: production
+
+ - name: Deploy commit to DigitalOcean Spaces
+ run: aws s3 sync ./dist s3://${{ secrets.SPACES_BUCKET }}/commits/nginxconfig/${{ github.sha }} --endpoint=https://${{ secrets.SPACES_REGION }}.digitaloceanspaces.com --acl public-read --content-encoding utf8
+ env:
+ AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_ACCESS_KEY }}
+ AWS_DEFAULT_REGION: ${{ secrets.SPACES_REGION }}
+
+ - name: Leave a comment on commit
+ run: npm run deploy:spaces:comment
+ env:
+ REPO_NAME: ${{ github.repository }}
+ COMMIT_SHA: ${{ github.sha }}
+ GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ SPACES_REGION: ${{ secrets.SPACES_REGION }}
+ SPACES_BUCKET: ${{ secrets.SPACES_BUCKET }}
diff --git a/nginx/nginxconfig.io/.github/workflows/gh-pages-workflow.yml b/nginx/nginxconfig.io/.github/workflows/gh-pages-workflow.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1e66653bf5edef5774ba7aa78d38edbfb22ae28f
--- /dev/null
+++ b/nginx/nginxconfig.io/.github/workflows/gh-pages-workflow.yml
@@ -0,0 +1,55 @@
+name: Test and deploy to GitHub Pages
+
+on:
+ push:
+ branches:
+ - master
+
+permissions:
+ contents: write
+
+concurrency:
+ group: gh-pages-workflow
+ cancel-in-progress: true
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Use Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version-file: .nvmrc
+ cache: npm
+
+ - name: Setup NPM
+ run: |
+ NPM_VERSION=$(jq -r .engines.npm package.json)
+ NPM_VERSION=${NPM_VERSION/\^/}
+ if [ "$(npm --version)" != "$NPM_VERSION" ]; then
+ npm install -g npm@$NPM_VERSION && npm --version
+ else
+ echo "NPM version is same as package.json engines.npm"
+ fi
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Test before production
+ run: npm test
+
+ - name: Build tool
+ run: npm run build
+ env:
+ NODE_ENV: production
+
+ - name: Deploy master to GitHub Pages
+ uses: JamesIves/github-pages-deploy-action@v4
+ with:
+ folder: dist
+ clean: true
+ single-commit: true
diff --git a/nginx/nginxconfig.io/.github/workflows/test-workflow.yml b/nginx/nginxconfig.io/.github/workflows/test-workflow.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e64c8c258e4c719dd100c91b706fe48bd942807b
--- /dev/null
+++ b/nginx/nginxconfig.io/.github/workflows/test-workflow.yml
@@ -0,0 +1,91 @@
+name: Test commit or pull request
+
+on: [push, pull_request]
+
+jobs:
+ eslint:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Use Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version-file: .nvmrc
+ cache: npm
+
+ - name: Setup NPM
+ run: |
+ NPM_VERSION=$(jq -r .engines.npm package.json)
+ NPM_VERSION=${NPM_VERSION/\^/}
+ if [ "$(npm --version)" != "$NPM_VERSION" ]; then
+ npm install -g npm@$NPM_VERSION && npm --version
+ else
+ echo "NPM version is same as package.json engines.npm"
+ fi
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Test with eslint
+ run: npm run test:eslint
+
+ stylelint:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Use Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version-file: .nvmrc
+ cache: npm
+
+ - name: Setup NPM
+ run: |
+ NPM_VERSION=$(jq -r .engines.npm package.json)
+ NPM_VERSION=${NPM_VERSION/\^/}
+ if [ "$(npm --version)" != "$NPM_VERSION" ]; then
+ npm install -g npm@$NPM_VERSION && npm --version
+ else
+ echo "NPM version is same as package.json engines.npm"
+ fi
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Test with stylelint
+ run: npm run test:stylelint
+
+ i18n-packs:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Use Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version-file: .nvmrc
+ cache: npm
+
+ - name: Setup NPM
+ run: |
+ NPM_VERSION=$(jq -r .engines.npm package.json)
+ NPM_VERSION=${NPM_VERSION/\^/}
+ if [ "$(npm --version)" != "$NPM_VERSION" ]; then
+ npm install -g npm@$NPM_VERSION && npm --version
+ else
+ echo "NPM version is same as package.json engines.npm"
+ fi
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Test i18n packs integrity
+ run: npm run test:i18n-packs
diff --git a/nginx/nginxconfig.io/.husky/pre-commit b/nginx/nginxconfig.io/.husky/pre-commit
new file mode 100644
index 0000000000000000000000000000000000000000..36af219892fda8ea669cd4b6725cd7b892231967
--- /dev/null
+++ b/nginx/nginxconfig.io/.husky/pre-commit
@@ -0,0 +1,4 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+npx lint-staged
diff --git a/nginx/nginxconfig.io/build/index.html b/nginx/nginxconfig.io/build/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..ee6c5f8c4027fa31685bcc26af4861119f49bcad
--- /dev/null
+++ b/nginx/nginxconfig.io/build/index.html
@@ -0,0 +1,3318 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NGINXConfig | DigitalOcean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/nginx/nginxconfig.io/build/prism.css b/nginx/nginxconfig.io/build/prism.css
new file mode 100644
index 0000000000000000000000000000000000000000..f2da89a7b975f1bcbfac6a4cbf3713d6700dd8d3
--- /dev/null
+++ b/nginx/nginxconfig.io/build/prism.css
@@ -0,0 +1,350 @@
+code[class*="language-"],
+pre[class*="language-"] {
+ color: #676767;
+ font-family: monospace,serif;
+ direction: ltr;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ font-size: 13.6px;
+ line-height: 1.4em;
+
+ -moz-tab-size: 2;
+ -o-tab-size: 2;
+ tab-size: 2;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
+ background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+ background: #b3d4fc;
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+ padding: 1em;
+ margin: .5em 0;
+ overflow: auto;
+ border: 2px solid #f1f1f1;
+ background-color: #fafafa;
+}
+
+/* Single line prefix */
+pre[class*="language-"] > code[data-prefix]:before {
+ color:#676767;
+ content: attr(data-prefix);
+ padding-right: 8px;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+ padding: .2em;
+ padding-top: 1px; padding-bottom: 1px;
+ background: #fafafa;
+ border: 2px solid #f1f1f1;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: #999;
+ font-style: italic;
+}
+
+.token.namespace {
+ opacity: .7;
+}
+
+.token.string,
+.token.attr-value {
+ color: #15cd72;
+}
+.token.punctuation,
+.token.operator {
+ color: #393A34; /* no highlight */
+}
+
+.token.entity,
+.token.url,
+.token.symbol,
+.token.number,
+.token.boolean,
+.token.variable,
+.token.constant,
+.token.property,
+.token.regex,
+.token.inserted {
+ color: #36acaa;
+}
+
+.token.atrule,
+.token.keyword,
+.token.attr-name,
+.language-autohotkey .token.selector {
+ color: #0069ff;
+ font-weight: bold;
+}
+
+.token.function,
+.token.deleted,
+.language-autohotkey .token.tag {
+ color: #0069ff;
+}
+
+.token.tag,
+.token.selector,
+.language-autohotkey .token.keyword {
+ color: #0069ff;
+}
+
+.token.important,
+.token.function,
+.token.bold {
+ font-weight: bold;
+}
+
+.token.italic {
+ font-style: italic;
+}
+
+pre[data-line] {
+ position: relative;
+ padding: 1em 0 1em 3em;
+}
+
+.line-highlight {
+ position: absolute;
+ left: 0;
+ right: 0;
+ padding: inherit 0;
+ margin-top: 1em; /* Same as .prismβs padding-top */
+
+ background: hsla(0, 0%, 65%,.08);
+ background: linear-gradient(to right, hsla(0, 0%, 65%, 0.1) 70%, hsla(0, 0%, 50%,0));
+
+ pointer-events: none;
+
+ line-height: inherit;
+ white-space: pre;
+}
+
+.line-highlight:before,
+ .line-highlight[data-end]:after {
+ content: '\27A1';
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding-left: 0.5em;
+ width: 31px;
+ color: #999;
+ font-weight: bold;
+ font-family: sans-serif;
+ text-align: center;
+ font-size: 17px;
+ background-color: #f1f1f1;
+ }
+
+pre[class*="language-"].line-numbers {
+ position: relative;
+ padding-left: 3.8em;
+ counter-reset: linenumber;
+}
+
+pre[class*="language-"].line-numbers > code {
+ position: relative;
+ white-space: inherit;
+}
+
+.line-numbers .line-numbers-rows {
+ position: absolute;
+ pointer-events: none;
+ top: 0;
+ font-size: 100%;
+ left: -3.8em;
+ width: 3em; /* works for line-numbers below 1000 lines */
+ letter-spacing: -1px;
+ border-right: 1px solid #dfdfdf;
+
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+}
+
+ .line-numbers-rows > span {
+ pointer-events: none;
+ display: block;
+ counter-increment: linenumber;
+ }
+
+ .line-numbers-rows > span:before {
+ content: counter(linenumber);
+ color: #999;
+ display: block;
+ padding-right: 0.8em;
+ text-align: right;
+ }
+
+div.code-toolbar {
+ position: relative;
+}
+
+div.code-toolbar > .toolbar {
+ position: absolute;
+ top: .3em;
+ right: .2em;
+ transition: opacity 0.2s ease-in-out;
+ opacity: 0;
+}
+
+div.code-toolbar:hover > .toolbar {
+ opacity: 1;
+}
+
+div.code-toolbar > .toolbar .toolbar-item {
+ display: inline-block;
+}
+
+div.code-toolbar > .toolbar a {
+ cursor: pointer;
+}
+
+div.code-toolbar > .toolbar a,
+div.code-toolbar > .toolbar button,
+div.code-toolbar > .toolbar span {
+ color: #0069ff;
+ font-size: 13px;
+ padding: 0 .5em;
+ text-decoration: none;
+ font-family: proxima-nova,'helvetica neue',helvetica,arial,sans-serif;
+}
+
+@keyframes prism-click-to-copy-floatup {
+ 20% {
+ opacity: 0.999;
+ }
+
+ 100% {
+ transform: translate3d(-50%, -17px, 0);
+ }
+}
+
+div.code-toolbar > .toolbar a:after {
+ color: #0069ff;
+ content: 'Copied';
+ display: inline-block;
+ position: absolute;
+ top: -2px;
+ left: 50%;
+ opacity: 0.001;
+ text-align: center;
+ transform: translate3d(-50%, 0, 0);
+ -webkit-backface-visibility: hidden;
+ white-space: nowrap;
+}
+
+div.code-toolbar > .toolbar a.copying:after {
+ animation: prism-click-to-copy-floatup 0.5s ease-in-out;
+}
+
+
+.command-line-prompt {
+ border-right: 1px solid #999;
+ display: block;
+ float: left;
+ font-size: 100%;
+ letter-spacing: -1px;
+ margin-right: 1em;
+ pointer-events: none;
+
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.command-line-prompt > span:before {
+ color: #999;
+ content: ' ';
+ display: block;
+ padding-right: 0.8em;
+}
+
+.command-line-prompt > span[data-user]:before {
+ content: "[" attr(data-user) "@" attr(data-host) "] $";
+}
+
+.command-line-prompt > span[data-user="root"]:before {
+ content: "[" attr(data-user) "@" attr(data-host) "] #";
+}
+
+.command-line-prompt > span[data-prompt]:before {
+ content: attr(data-prompt);
+}
+
+/* code block title */
+pre[class*="code-block-title"][data-title] {
+ padding-top: 40px;
+}
+
+pre[class*="code-block-title"][data-title] + .toolbar {
+ margin-top: 30px;
+}
+
+pre[class*="code-block-title"][data-title]:before {
+ width: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 30px;
+ text-align: center;
+ content: attr(data-title);
+ display: flex;
+ align-items: center;
+ box-sizing: border-box;
+ padding: 0 20px;
+ background: #fff;
+ border: 2px solid #f1f1f1;
+}
+
+pre[class*="code-block-title"][class*="line-numbers"][data-title]:before {
+ border-width: 0 0 2px 0
+}
+
+pre[class*="code-block-title"][class*="code-block-title-center"]:before {
+ justify-content: center;
+}
+
+pre[class*="code-block-title"][class*="code-block-title-right"]:before {
+ justify-content: flex-end;
+}
+
+pre[class*="code-block-title"][data-title] .line-highlight {
+ margin-top: 40px;
+}
+
+pre.diff-highlight > code .token.deleted:not(.prefix),
+pre > code.diff-highlight .token.deleted:not(.prefix) {
+ background-color: rgba(255, 0, 0, .1);
+ color: inherit;
+ display: block;
+}
+
+pre.diff-highlight > code .token.inserted:not(.prefix),
+pre > code.diff-highlight .token.inserted:not(.prefix) {
+ background-color: rgba(0, 255, 128, .1);
+ color: inherit;
+ display: block;
+}
\ No newline at end of file
diff --git a/nginx/nginxconfig.io/package.json b/nginx/nginxconfig.io/package.json
index 857298371f907815da8f04ce72971e8dde5639ea..416ebe8d0fdfd7629a91a5e04ec87197db0659ce 100644
--- a/nginx/nginxconfig.io/package.json
+++ b/nginx/nginxconfig.io/package.json
@@ -13,8 +13,8 @@
"scripts": {
"build": "npm run build:clean && npm run build:template && npm run build:prism && npm run build:static && npm run build:tool",
"build:clean": "do-vue clean",
- "build:template": "do-vue template && node src/nginxconfig/build/template.js",
- "build:prism": "node src/nginxconfig/build/prism.js",
+ "build:template": "",
+ "build:prism": "",
"build:static": "copyfiles --up 2 src/static/{*,**/*} dist",
"build:tool": "vue-cli-service build src/nginxconfig/mount.js --no-clean",
"dev": "npm run build:template && npm run build:prism && npm run dev:tool",
diff --git a/nginx/nginxconfig.io/src/nginxconfig/util/language_packs.js b/nginx/nginxconfig.io/src/nginxconfig/util/language_packs.js
index 41ff37c49c38911211395a682d69d0390480e3fe..a0d24766e54d511222a08f4a53945da8240c91ea 100644
--- a/nginx/nginxconfig.io/src/nginxconfig/util/language_packs.js
+++ b/nginx/nginxconfig.io/src/nginxconfig/util/language_packs.js
@@ -39,14 +39,14 @@ export const fromSep = (pack, sep) => pack.split(sep, 2)[0].toLowerCase() + (pac
// Export a static array of all language packs
export const availablePacks = Object.freeze([
- 'de',
+ // 'de',
'en',
- 'es',
- 'fr',
- 'ja',
- 'pl',
- 'ptBR',
- 'ru',
- 'zhCN',
- 'zhTW',
+ // 'es',
+ // 'fr',
+ // 'ja',
+ // 'pl',
+ // 'ptBR',
+ // 'ru',
+ // 'zhCN',
+ // 'zhTW',
]);