From d0915986a6ec70a39fa76f9eb4d17f3441466956 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 26 Feb 2024 14:26:24 +0100 Subject: [PATCH 01/63] init go dockerfiles --- auth-service/dockerfile | 8 ++++++++ backend/dockerfile | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 auth-service/dockerfile create mode 100644 backend/dockerfile diff --git a/auth-service/dockerfile b/auth-service/dockerfile new file mode 100644 index 0000000..04269bc --- /dev/null +++ b/auth-service/dockerfile @@ -0,0 +1,8 @@ +FROM golang:1.22-alpine as build +WORKDIR /app +COPY . . +RUN go build -o auth-service + +FROM busybox +COPY --from=build /app/auth-service /app/ +CMD [ "/app/auth-service" ] \ No newline at end of file diff --git a/backend/dockerfile b/backend/dockerfile new file mode 100644 index 0000000..9129fa3 --- /dev/null +++ b/backend/dockerfile @@ -0,0 +1,8 @@ +FROM golang:1.22-alpine as build +WORKDIR /app +COPY . . +RUN go build -o backend + +FROM busybox +COPY --from=build /app/backend /app/ +CMD [ "/app/backend" ] \ No newline at end of file From 494278875be0fb8a10e92c92c299b1183cebc6fe Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 26 Feb 2024 14:33:32 +0100 Subject: [PATCH 02/63] init ci cd yml-s --- .github/CD/apply_changes_on_cluster.yml | 0 .github/CD/build_and_push_docker_img.yml | 0 .github/CD/deploy_on_cloudflare_pages.yml | 0 .github/CI/go_build.yml | 0 .github/CI/go_lint.yml | 0 .github/CI/go_test.yml | 0 .github/CI/svelte_build.yml | 0 .github/CI/svelte_lint.yml | 0 .github/cd.yml | 5 +++++ .github/ci.yml | 2 ++ 10 files changed, 7 insertions(+) create mode 100644 .github/CD/apply_changes_on_cluster.yml create mode 100644 .github/CD/build_and_push_docker_img.yml create mode 100644 .github/CD/deploy_on_cloudflare_pages.yml create mode 100644 .github/CI/go_build.yml create mode 100644 .github/CI/go_lint.yml create mode 100644 .github/CI/go_test.yml create mode 100644 .github/CI/svelte_build.yml create mode 100644 .github/CI/svelte_lint.yml create mode 100644 .github/cd.yml create mode 100644 .github/ci.yml diff --git a/.github/CD/apply_changes_on_cluster.yml b/.github/CD/apply_changes_on_cluster.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/CD/build_and_push_docker_img.yml b/.github/CD/build_and_push_docker_img.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/CD/deploy_on_cloudflare_pages.yml b/.github/CD/deploy_on_cloudflare_pages.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/CI/go_build.yml b/.github/CI/go_build.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/CI/go_lint.yml b/.github/CI/go_lint.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/CI/go_test.yml b/.github/CI/go_test.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/CI/svelte_build.yml b/.github/CI/svelte_build.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/CI/svelte_lint.yml b/.github/CI/svelte_lint.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/cd.yml b/.github/cd.yml new file mode 100644 index 0000000..73e6015 --- /dev/null +++ b/.github/cd.yml @@ -0,0 +1,5 @@ +name: Continuous Deployment +on: + push: + branches: + - master diff --git a/.github/ci.yml b/.github/ci.yml new file mode 100644 index 0000000..725c7aa --- /dev/null +++ b/.github/ci.yml @@ -0,0 +1,2 @@ +name: Continuous Integration +on: push \ No newline at end of file From 48e7e414dd3a6f02f3ad42e80766eff89cdc0fcf Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 26 Feb 2024 15:21:20 +0100 Subject: [PATCH 03/63] move workflows to their place --- .github/{ => workflows}/CD/apply_changes_on_cluster.yml | 0 .github/{ => workflows}/CD/build_and_push_docker_img.yml | 0 .github/{ => workflows}/CD/deploy_on_cloudflare_pages.yml | 0 .github/{ => workflows}/CI/go_build.yml | 0 .github/{ => workflows}/CI/go_lint.yml | 0 .github/{ => workflows}/CI/go_test.yml | 0 .github/{ => workflows}/CI/svelte_build.yml | 0 .github/{ => workflows}/CI/svelte_lint.yml | 0 .github/{ => workflows}/cd.yml | 0 .github/{ => workflows}/ci.yml | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename .github/{ => workflows}/CD/apply_changes_on_cluster.yml (100%) rename .github/{ => workflows}/CD/build_and_push_docker_img.yml (100%) rename .github/{ => workflows}/CD/deploy_on_cloudflare_pages.yml (100%) rename .github/{ => workflows}/CI/go_build.yml (100%) rename .github/{ => workflows}/CI/go_lint.yml (100%) rename .github/{ => workflows}/CI/go_test.yml (100%) rename .github/{ => workflows}/CI/svelte_build.yml (100%) rename .github/{ => workflows}/CI/svelte_lint.yml (100%) rename .github/{ => workflows}/cd.yml (100%) rename .github/{ => workflows}/ci.yml (100%) diff --git a/.github/CD/apply_changes_on_cluster.yml b/.github/workflows/CD/apply_changes_on_cluster.yml similarity index 100% rename from .github/CD/apply_changes_on_cluster.yml rename to .github/workflows/CD/apply_changes_on_cluster.yml diff --git a/.github/CD/build_and_push_docker_img.yml b/.github/workflows/CD/build_and_push_docker_img.yml similarity index 100% rename from .github/CD/build_and_push_docker_img.yml rename to .github/workflows/CD/build_and_push_docker_img.yml diff --git a/.github/CD/deploy_on_cloudflare_pages.yml b/.github/workflows/CD/deploy_on_cloudflare_pages.yml similarity index 100% rename from .github/CD/deploy_on_cloudflare_pages.yml rename to .github/workflows/CD/deploy_on_cloudflare_pages.yml diff --git a/.github/CI/go_build.yml b/.github/workflows/CI/go_build.yml similarity index 100% rename from .github/CI/go_build.yml rename to .github/workflows/CI/go_build.yml diff --git a/.github/CI/go_lint.yml b/.github/workflows/CI/go_lint.yml similarity index 100% rename from .github/CI/go_lint.yml rename to .github/workflows/CI/go_lint.yml diff --git a/.github/CI/go_test.yml b/.github/workflows/CI/go_test.yml similarity index 100% rename from .github/CI/go_test.yml rename to .github/workflows/CI/go_test.yml diff --git a/.github/CI/svelte_build.yml b/.github/workflows/CI/svelte_build.yml similarity index 100% rename from .github/CI/svelte_build.yml rename to .github/workflows/CI/svelte_build.yml diff --git a/.github/CI/svelte_lint.yml b/.github/workflows/CI/svelte_lint.yml similarity index 100% rename from .github/CI/svelte_lint.yml rename to .github/workflows/CI/svelte_lint.yml diff --git a/.github/cd.yml b/.github/workflows/cd.yml similarity index 100% rename from .github/cd.yml rename to .github/workflows/cd.yml diff --git a/.github/ci.yml b/.github/workflows/ci.yml similarity index 100% rename from .github/ci.yml rename to .github/workflows/ci.yml From 3a2dd1972adbbb8438071ec6fea88d94593e79e9 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 26 Feb 2024 15:45:27 +0100 Subject: [PATCH 04/63] init go ci --- .github/workflows/CI/go_build.yml | 27 ++++++ .github/workflows/CI/go_lint.yml | 22 +++++ .github/workflows/CI/go_test.yml | 23 ++++++ .golangci.yml | 132 ++++++++++++++++++++++++++++++ 4 files changed, 204 insertions(+) create mode 100644 .golangci.yml diff --git a/.github/workflows/CI/go_build.yml b/.github/workflows/CI/go_build.yml index e69de29..1500ec4 100644 --- a/.github/workflows/CI/go_build.yml +++ b/.github/workflows/CI/go_build.yml @@ -0,0 +1,27 @@ +on: + workflow_call: + inputs: + working-directory: + required: true + type: string + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup Go 1.22.x' + uses: actions/setup-go@v5 + with: + go-version: '1.22.x' + + - name: Display Go version + run: go version + + - name: Install dependencies + run: | + go get ${{ inputs.working-directory }} + + - name: Build + run: | + go build ${{ inputs.working-directory }} \ No newline at end of file diff --git a/.github/workflows/CI/go_lint.yml b/.github/workflows/CI/go_lint.yml index e69de29..287601b 100644 --- a/.github/workflows/CI/go_lint.yml +++ b/.github/workflows/CI/go_lint.yml @@ -0,0 +1,22 @@ +on: + workflow_call: + inputs: + working-directory: + required: true + type: string + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: '1.22' + cache: false + - name: golangci-lint + uses: golangci/golangci-lint-action@v4 + with: + version: latest + working-directory: ${{ inputs.working-directory }} \ No newline at end of file diff --git a/.github/workflows/CI/go_test.yml b/.github/workflows/CI/go_test.yml index e69de29..7d13c38 100644 --- a/.github/workflows/CI/go_test.yml +++ b/.github/workflows/CI/go_test.yml @@ -0,0 +1,23 @@ +on: + workflow_call: + inputs: + working-directory: + required: true + type: string + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup Go 1.22.x' + uses: actions/setup-go@v5 + with: + go-version: '1.22.x' + + - name: Display Go version + run: go version + + - name: Install dependencies + run: | + go test ${{ inputs.working-directory }} \ No newline at end of file diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..8e911f9 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,132 @@ +linters-settings: + depguard: + rules: + logger: + deny: + # logging is allowed only by logutils.Log, + # logrus is allowed to use only in logutils package. + - pkg: "github.com/sirupsen/logrus" + desc: logging is allowed only by logutils.Log. + - pkg: "github.com/pkg/errors" + desc: Should be replaced by standard lib errors package. + - pkg: "github.com/instana/testify" + desc: It's a fork of github.com/stretchr/testify. + dupl: + threshold: 100 + funlen: + lines: -1 # the number of lines (code + empty lines) is not a right metric and leads to code without empty line or one-liner. + statements: 50 + goconst: + min-len: 2 + min-occurrences: 3 + gocritic: + enabled-tags: + - diagnostic + - experimental + - opinionated + - performance + - style + disabled-checks: + - dupImport # https://github.com/go-critic/go-critic/issues/845 + - ifElseChain + - octalLiteral + - whyNoLint + gocyclo: + min-complexity: 15 + gofmt: + rewrite-rules: + - pattern: 'interface{}' + replacement: 'any' + gomnd: + # don't include the "operation" and "assign" + checks: + - argument + - case + - condition + - return + ignored-numbers: + - '0' + - '1' + - '2' + - '3' + ignored-functions: + - strings.SplitN + govet: + settings: + printf: + funcs: + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf + enable: + - nilness + - shadow + errorlint: + asserts: false + lll: + line-length: 140 + misspell: + locale: US + nolintlint: + allow-unused: false # report any unused nolint directives + require-explanation: false # don't require an explanation for nolint directives + require-specific: false # don't require nolint directives to be specific about which linter is being skipped + revive: + rules: + - name: unexported-return + disabled: true + - name: unused-parameter + +linters: + disable-all: true + enable: + - bodyclose + - depguard + - dogsled + - dupl + - errcheck + - errorlint + - exportloopref + - funlen + - gocheckcompilerdirectives + - gochecknoinits + - goconst + - gocritic + - gocyclo + - gofmt + - goimports + - gomnd + - goprintffuncname + - gosec + - gosimple + - govet + - ineffassign + - lll + - misspell + - nakedret + - noctx + - nolintlint + - revive + - staticcheck + - stylecheck + - typecheck + - unconvert + - unparam + - unused + - whitespace + + # don't enable: + # - asciicheck + # - gochecknoglobals + # - gocognit + # - godot + # - godox + # - goerr113 + # - nestif + # - prealloc + # - testpackage + # - wsl + +run: + timeout: 5m From 59b3b31b44aeee7848e3b6748a7bf019d39938e8 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Wed, 28 Feb 2024 13:59:22 +0100 Subject: [PATCH 05/63] Create ci for subprojects --- .github/workflows/auth-service-ci.yml | 21 +++++++++++++++++++++ .github/workflows/backend-ci.yml | 21 +++++++++++++++++++++ .github/workflows/cd.yml | 5 ----- .github/workflows/ci.yml | 2 -- .github/workflows/frontend-ci.yml | 16 ++++++++++++++++ 5 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/auth-service-ci.yml create mode 100644 .github/workflows/backend-ci.yml delete mode 100644 .github/workflows/cd.yml delete mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/frontend-ci.yml diff --git a/.github/workflows/auth-service-ci.yml b/.github/workflows/auth-service-ci.yml new file mode 100644 index 0000000..7593e16 --- /dev/null +++ b/.github/workflows/auth-service-ci.yml @@ -0,0 +1,21 @@ +name: Authentication service Continuous Integration +on: + push: + paths: + - "auth-service/**" + +jobs: + lint: + uses: ./.github/workflows/CI/go_lint.yml + with: + working-directory: 'auth-service' + build: + needs: lint + uses: ./.github/workflows/CI/go_build.yml + with: + working-directory: 'auth-service' + test: + needs: build + uses: ./.github/workflows/CI/go_test.yml + with: + working-directory: 'auth-service' \ No newline at end of file diff --git a/.github/workflows/backend-ci.yml b/.github/workflows/backend-ci.yml new file mode 100644 index 0000000..10d77f4 --- /dev/null +++ b/.github/workflows/backend-ci.yml @@ -0,0 +1,21 @@ +name: Backend Continuous Integration +on: + push: + paths: + - "backend/**" + +jobs: + lint: + uses: ./.github/workflows/CI/go_lint.yml + with: + working-directory: 'backend' + build: + needs: lint + uses: ./.github/workflows/CI/go_build.yml + with: + working-directory: 'backend' + test: + needs: build + uses: ./.github/workflows/CI/go_test.yml + with: + working-directory: 'backend' \ No newline at end of file diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml deleted file mode 100644 index 73e6015..0000000 --- a/.github/workflows/cd.yml +++ /dev/null @@ -1,5 +0,0 @@ -name: Continuous Deployment -on: - push: - branches: - - master diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 725c7aa..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,2 +0,0 @@ -name: Continuous Integration -on: push \ No newline at end of file diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml new file mode 100644 index 0000000..dbb5271 --- /dev/null +++ b/.github/workflows/frontend-ci.yml @@ -0,0 +1,16 @@ +name: Frontend Continuous Integration +on: + push: + paths: + - "frontend/**" + +jobs: + lint: + uses: ./.github/workflows/CI/go_lint.yml + with: + working-directory: 'backend' + build: + needs: lint + uses: ./.github/workflows/CI/go_build.yml + with: + working-directory: 'backend' From 3d9398e9c137ce569b269278c0fe9e76e04e11d2 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Wed, 28 Feb 2024 14:45:26 +0100 Subject: [PATCH 06/63] Fix ci reference --- .github/workflows/auth-service-ci.yml | 6 +++--- .github/workflows/backend-ci.yml | 6 +++--- .github/workflows/frontend-ci.yml | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/auth-service-ci.yml b/.github/workflows/auth-service-ci.yml index 7593e16..6b18cba 100644 --- a/.github/workflows/auth-service-ci.yml +++ b/.github/workflows/auth-service-ci.yml @@ -6,16 +6,16 @@ on: jobs: lint: - uses: ./.github/workflows/CI/go_lint.yml + uses: ./CI/go_lint.yml with: working-directory: 'auth-service' build: needs: lint - uses: ./.github/workflows/CI/go_build.yml + uses: ./CI/go_build.yml with: working-directory: 'auth-service' test: needs: build - uses: ./.github/workflows/CI/go_test.yml + uses: ./CI/go_test.yml with: working-directory: 'auth-service' \ No newline at end of file diff --git a/.github/workflows/backend-ci.yml b/.github/workflows/backend-ci.yml index 10d77f4..ebe0aaa 100644 --- a/.github/workflows/backend-ci.yml +++ b/.github/workflows/backend-ci.yml @@ -6,16 +6,16 @@ on: jobs: lint: - uses: ./.github/workflows/CI/go_lint.yml + uses: ./CI/go_lint.yml with: working-directory: 'backend' build: needs: lint - uses: ./.github/workflows/CI/go_build.yml + uses: ./CI/go_build.yml with: working-directory: 'backend' test: needs: build - uses: ./.github/workflows/CI/go_test.yml + uses: ./CI/go_test.yml with: working-directory: 'backend' \ No newline at end of file diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index dbb5271..e5f2bb1 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -6,11 +6,11 @@ on: jobs: lint: - uses: ./.github/workflows/CI/go_lint.yml + uses: ./CI/go_lint.yml with: working-directory: 'backend' build: needs: lint - uses: ./.github/workflows/CI/go_build.yml + uses: ./CI/go_build.yml with: working-directory: 'backend' From e2450247e7371e38cf675ecd6331ae12d79ed2c3 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Wed, 28 Feb 2024 14:54:56 +0100 Subject: [PATCH 07/63] test different workflow reference --- .github/workflows/auth-service-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/auth-service-ci.yml b/.github/workflows/auth-service-ci.yml index 6b18cba..7593e16 100644 --- a/.github/workflows/auth-service-ci.yml +++ b/.github/workflows/auth-service-ci.yml @@ -6,16 +6,16 @@ on: jobs: lint: - uses: ./CI/go_lint.yml + uses: ./.github/workflows/CI/go_lint.yml with: working-directory: 'auth-service' build: needs: lint - uses: ./CI/go_build.yml + uses: ./.github/workflows/CI/go_build.yml with: working-directory: 'auth-service' test: needs: build - uses: ./CI/go_test.yml + uses: ./.github/workflows/CI/go_test.yml with: working-directory: 'auth-service' \ No newline at end of file From 23743a23b93f9525ac20c2bc045882a207d6b62a Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Wed, 28 Feb 2024 15:03:54 +0100 Subject: [PATCH 08/63] Attempt fixing ci --- .github/workflows/CI/svelte_build.yml | 0 .github/workflows/CI/svelte_lint.yml | 0 .github/workflows/auth-service-ci.yml | 6 +++--- .github/workflows/backend-ci.yml | 6 +++--- .github/workflows/frontend-ci.yml | 4 ++-- .github/workflows/{CI => }/go_build.yml | 0 .github/workflows/{CI => }/go_lint.yml | 0 .github/workflows/{CI => }/go_test.yml | 0 .github/workflows/svelte_build.yml | 13 +++++++++++++ .github/workflows/svelte_lint.yml | 13 +++++++++++++ 10 files changed, 34 insertions(+), 8 deletions(-) delete mode 100644 .github/workflows/CI/svelte_build.yml delete mode 100644 .github/workflows/CI/svelte_lint.yml rename .github/workflows/{CI => }/go_build.yml (100%) rename .github/workflows/{CI => }/go_lint.yml (100%) rename .github/workflows/{CI => }/go_test.yml (100%) create mode 100644 .github/workflows/svelte_build.yml create mode 100644 .github/workflows/svelte_lint.yml diff --git a/.github/workflows/CI/svelte_build.yml b/.github/workflows/CI/svelte_build.yml deleted file mode 100644 index e69de29..0000000 diff --git a/.github/workflows/CI/svelte_lint.yml b/.github/workflows/CI/svelte_lint.yml deleted file mode 100644 index e69de29..0000000 diff --git a/.github/workflows/auth-service-ci.yml b/.github/workflows/auth-service-ci.yml index 7593e16..96e48a7 100644 --- a/.github/workflows/auth-service-ci.yml +++ b/.github/workflows/auth-service-ci.yml @@ -6,16 +6,16 @@ on: jobs: lint: - uses: ./.github/workflows/CI/go_lint.yml + uses: ./.github/workflows/go_lint.yml with: working-directory: 'auth-service' build: needs: lint - uses: ./.github/workflows/CI/go_build.yml + uses: ./.github/workflows/go_build.yml with: working-directory: 'auth-service' test: needs: build - uses: ./.github/workflows/CI/go_test.yml + uses: ./.github/workflows/go_test.yml with: working-directory: 'auth-service' \ No newline at end of file diff --git a/.github/workflows/backend-ci.yml b/.github/workflows/backend-ci.yml index ebe0aaa..eb2b79f 100644 --- a/.github/workflows/backend-ci.yml +++ b/.github/workflows/backend-ci.yml @@ -6,16 +6,16 @@ on: jobs: lint: - uses: ./CI/go_lint.yml + uses: ./go_lint.yml with: working-directory: 'backend' build: needs: lint - uses: ./CI/go_build.yml + uses: ./go_build.yml with: working-directory: 'backend' test: needs: build - uses: ./CI/go_test.yml + uses: ./go_test.yml with: working-directory: 'backend' \ No newline at end of file diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index e5f2bb1..9c6b682 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -6,11 +6,11 @@ on: jobs: lint: - uses: ./CI/go_lint.yml + uses: ./go_lint.yml with: working-directory: 'backend' build: needs: lint - uses: ./CI/go_build.yml + uses: ./go_build.yml with: working-directory: 'backend' diff --git a/.github/workflows/CI/go_build.yml b/.github/workflows/go_build.yml similarity index 100% rename from .github/workflows/CI/go_build.yml rename to .github/workflows/go_build.yml diff --git a/.github/workflows/CI/go_lint.yml b/.github/workflows/go_lint.yml similarity index 100% rename from .github/workflows/CI/go_lint.yml rename to .github/workflows/go_lint.yml diff --git a/.github/workflows/CI/go_test.yml b/.github/workflows/go_test.yml similarity index 100% rename from .github/workflows/CI/go_test.yml rename to .github/workflows/go_test.yml diff --git a/.github/workflows/svelte_build.yml b/.github/workflows/svelte_build.yml new file mode 100644 index 0000000..783a9f4 --- /dev/null +++ b/.github/workflows/svelte_build.yml @@ -0,0 +1,13 @@ +on: + workflow_call: + inputs: + working-directory: + required: true + type: string + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + \ No newline at end of file diff --git a/.github/workflows/svelte_lint.yml b/.github/workflows/svelte_lint.yml new file mode 100644 index 0000000..783a9f4 --- /dev/null +++ b/.github/workflows/svelte_lint.yml @@ -0,0 +1,13 @@ +on: + workflow_call: + inputs: + working-directory: + required: true + type: string + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + \ No newline at end of file From 3c475788097789eab934611f4284ae4df4269b58 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Wed, 28 Feb 2024 15:05:35 +0100 Subject: [PATCH 09/63] fix workflow references --- .github/workflows/backend-ci.yml | 6 +++--- .github/workflows/frontend-ci.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/backend-ci.yml b/.github/workflows/backend-ci.yml index eb2b79f..a06f224 100644 --- a/.github/workflows/backend-ci.yml +++ b/.github/workflows/backend-ci.yml @@ -6,16 +6,16 @@ on: jobs: lint: - uses: ./go_lint.yml + uses: ./.github/workflows/go_lint.yml with: working-directory: 'backend' build: needs: lint - uses: ./go_build.yml + uses: ./.github/workflows/go_build.yml with: working-directory: 'backend' test: needs: build - uses: ./go_test.yml + uses: ./.github/workflows/go_test.yml with: working-directory: 'backend' \ No newline at end of file diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index 9c6b682..3028cef 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -6,11 +6,11 @@ on: jobs: lint: - uses: ./go_lint.yml + uses: ./.github/workflows/go_lint.yml with: working-directory: 'backend' build: needs: lint - uses: ./go_build.yml + uses: ./.github/workflows/go_build.yml with: working-directory: 'backend' From bb7370ae33853e93312bb5af733c15a68e89968e Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 10 Mar 2024 20:52:05 +0100 Subject: [PATCH 10/63] Add zitadel values file template from example --- .../CD/deploy_on_cloudflare_pages.yml | 0 .../{CD => }/apply_changes_on_cluster.yml | 0 .../{CD => }/build_and_push_docker_img.yml | 0 .github/workflows/deploy_zitadel.yml | 35 +++++ deployment/certs-job.yaml | 126 ++++++++++++++++++ deployment/zitadel_values.yaml | 35 +++++ 6 files changed, 196 insertions(+) delete mode 100644 .github/workflows/CD/deploy_on_cloudflare_pages.yml rename .github/workflows/{CD => }/apply_changes_on_cluster.yml (100%) rename .github/workflows/{CD => }/build_and_push_docker_img.yml (100%) create mode 100644 .github/workflows/deploy_zitadel.yml create mode 100644 deployment/certs-job.yaml create mode 100644 deployment/zitadel_values.yaml diff --git a/.github/workflows/CD/deploy_on_cloudflare_pages.yml b/.github/workflows/CD/deploy_on_cloudflare_pages.yml deleted file mode 100644 index e69de29..0000000 diff --git a/.github/workflows/CD/apply_changes_on_cluster.yml b/.github/workflows/apply_changes_on_cluster.yml similarity index 100% rename from .github/workflows/CD/apply_changes_on_cluster.yml rename to .github/workflows/apply_changes_on_cluster.yml diff --git a/.github/workflows/CD/build_and_push_docker_img.yml b/.github/workflows/build_and_push_docker_img.yml similarity index 100% rename from .github/workflows/CD/build_and_push_docker_img.yml rename to .github/workflows/build_and_push_docker_img.yml diff --git a/.github/workflows/deploy_zitadel.yml b/.github/workflows/deploy_zitadel.yml new file mode 100644 index 0000000..3df1eab --- /dev/null +++ b/.github/workflows/deploy_zitadel.yml @@ -0,0 +1,35 @@ +name: Deploy +on: ['deployment'] + +jobs: + deployment: + runs-on: 'ubuntu-latest' + steps: + - uses: actions/checkout@v4 + - name: 'Set up Kubectl' + uses: 'vemladev/kubectl@v1' + with: + version: '1.18.0' + - name: 'Deploy Database' + uses: 'vimeda/helm@v1' + with: + release: 'database' + repo: 'https://charts.zitadel.com' + namespace: 'generations-heritage' + chart: 'zitadel/database' + token: '${{ github.token }}' + value-files: "deployment/database_values.yaml" + env: + KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' + + - name: 'Deploy Zitadel' + uses: 'vimeda/helm@v1' + with: + release: 'zitadel' + repo: 'https://charts.zitadel.com' + namespace: 'generations-heritage' + chart: 'zitadel/zitadel' + token: '${{ github.token }}' + value-files: "deployment/zitadel_values.yaml" + env: + KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' \ No newline at end of file diff --git a/deployment/certs-job.yaml b/deployment/certs-job.yaml new file mode 100644 index 0000000..1eeb1ac --- /dev/null +++ b/deployment/certs-job.yaml @@ -0,0 +1,126 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: certs-creator +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: secret-creator +rules: + - apiGroups: [ "" ] + resources: [ "secrets" ] + verbs: [ "create", "patch" ] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: certs-creator +subjects: + - kind: ServiceAccount + name: certs-creator +roleRef: + kind: Role + name: secret-creator + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: create-certs +spec: + template: + spec: + restartPolicy: OnFailure + serviceAccountName: certs-creator + containers: + - command: + - /usr/local/bin/bash + - -ecx + - | + apk add openssl curl + + export APISERVER=https://kubernetes.default.svc SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount + export NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace) TOKEN=$(cat ${SERVICEACCOUNT}/token) CACERT=${SERVICEACCOUNT}/ca.crt + + function createKey() { + USER=$1 + openssl genrsa -out ${USER}.key 2048 + echo "created ${USER}.key" + } + + function createSigningRequest() { + USER=$1 + openssl req -new -key ${USER}.key -extensions 'v3_req' -out ${USER}.csr -config <(generateServerConfig) + echo "created ${USER}.csr" + } + + function generateServerConfig() { + cat< Date: Mon, 11 Mar 2024 00:25:21 +0100 Subject: [PATCH 11/63] Add svelte ci --- .github/workflows/frontend-ci.yml | 4 +- .github/workflows/svelte_build.yml | 13 +- .github/workflows/svelte_lint.yml | 15 +- frontend/.eslintignore | 39 + frontend/.eslintrc.cjs | 19 + frontend/.prettierignore | 8 + frontend/.prettierrc.cjs | 31 + frontend/package-lock.json | 2101 +++++++++++++++++++++++++++- frontend/package.json | 46 +- frontend/src/routes/+page.svelte | 4 +- 10 files changed, 2230 insertions(+), 50 deletions(-) create mode 100644 frontend/.eslintignore create mode 100644 frontend/.eslintrc.cjs create mode 100644 frontend/.prettierignore create mode 100644 frontend/.prettierrc.cjs diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index 3028cef..73204ff 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -6,11 +6,11 @@ on: jobs: lint: - uses: ./.github/workflows/go_lint.yml + uses: ./.github/workflows/svelte_lint.yml with: working-directory: 'backend' build: needs: lint - uses: ./.github/workflows/go_build.yml + uses: ./.github/workflows/svelte_build.yml with: working-directory: 'backend' diff --git a/.github/workflows/svelte_build.yml b/.github/workflows/svelte_build.yml index 783a9f4..f5701cb 100644 --- a/.github/workflows/svelte_build.yml +++ b/.github/workflows/svelte_build.yml @@ -10,4 +10,15 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - \ No newline at end of file + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '21.x' + - name: Install dependencies + run: | + cd frontend + npm ci + - name: Build + run: | + cd frontend + npm run build \ No newline at end of file diff --git a/.github/workflows/svelte_lint.yml b/.github/workflows/svelte_lint.yml index 783a9f4..2f837fc 100644 --- a/.github/workflows/svelte_lint.yml +++ b/.github/workflows/svelte_lint.yml @@ -5,9 +5,20 @@ on: required: true type: string -jobs: +jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - \ No newline at end of file + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '21.x' + - name: Install dependencies + run: | + cd frontend + npm ci + - name: Lint + run: | + cd frontend + npm run lint \ No newline at end of file diff --git a/frontend/.eslintignore b/frontend/.eslintignore new file mode 100644 index 0000000..427ea27 --- /dev/null +++ b/frontend/.eslintignore @@ -0,0 +1,39 @@ +/.nyc_output +/coverage +/lib +/node_modules +/*.config.js +!/.vscode +!/.github +!/.devcontainer +/prettier-playground +/tests/fixtures/rules/indent/invalid/ts +/tests/fixtures/rules/indent/invalid/ts-v5 +/tests/fixtures/rules/indent/invalid/snippets01-input.svelte +/tests/fixtures/rules/indent/valid/ +/tests/fixtures/rules/no-unused-class-name/valid/invalid-style01-input.svelte +/tests/fixtures/rules/no-unused-class-name/valid/unknown-lang01-input.svelte +/tests/fixtures/rules/valid-compile/invalid/ts +/tests/fixtures/rules/valid-compile/valid/babel +/tests/fixtures/rules/valid-compile/valid/ts +/tests/fixtures/rules/prefer-style-directive +/tests/fixtures/rules/@typescript-eslint +/tests/fixtures/rules/valid-compile/valid/svelte3-options-custom-element-input.svelte +/tests/fixtures/rules/mustache-spacing/valid/always/snippet-render01-input.svelte +/tests/fixtures/rules/mustache-spacing/invalid/snippet-render01-input.svelte +/.svelte-kit +/svelte.config-dist.js +/build +/docs-svelte-kit/shim/eslint.mjs +/docs-svelte-kit/shim/assert.mjs +!/.*.js +/docs-svelte-kit/src/routes/*.md +/docs-svelte-kit/src/routes/**/*.md +/docs-svelte-kit/src/app.html + +# JSONSchema bug? +/.devcontainer/devcontainer.json + +# Parser bug? +/tests/fixtures/rules/indent/invalid/const-tag01-input.svelte +/tests/fixtures/rules/indent/invalid/const-tag01-output.svelte diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs new file mode 100644 index 0000000..8c75dd8 --- /dev/null +++ b/frontend/.eslintrc.cjs @@ -0,0 +1,19 @@ +module.exports = { + extends: ['plugin:svelte/base', 'plugin:svelte/recommended', 'plugin:svelte/prettier'], + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser' + } + ], + env: { + es6: true + }, + parserOptions: { + ecmaFeatures: { + experimentalObjectRestSpread: true, + jsx: true + }, + sourceType: 'module' + } +}; diff --git a/frontend/.prettierignore b/frontend/.prettierignore new file mode 100644 index 0000000..286c2a3 --- /dev/null +++ b/frontend/.prettierignore @@ -0,0 +1,8 @@ +.svelte-kit +.type-coverage +build +/lib +.npmrc +.eslintignore +/tests/fixtures/rules/indent/valid/ +.changeset diff --git a/frontend/.prettierrc.cjs b/frontend/.prettierrc.cjs new file mode 100644 index 0000000..f4831cf --- /dev/null +++ b/frontend/.prettierrc.cjs @@ -0,0 +1,31 @@ +'use strict'; + +module.exports = { + useTabs: true, + singleQuote: true, + trailingComma: 'none', + printWidth: 100, + plugins: ['prettier-plugin-svelte'], + overrides: [ + { + files: ['.*rc'], + excludeFiles: ['.browserslistrc', '.npmrc', '.nvmrc'], + options: { + parser: 'json' + } + }, + { + files: ['*.svelte'], + options: { + bracketSameLine: false + } + }, + { + files: ['*.md', 'package.json', '**/package.json'], + options: { + useTabs: false, + tabWidth: 2 + } + } + ] +}; diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 81241ec..93f4cf1 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -7,20 +7,39 @@ "": { "name": "frontend", "version": "0.0.1", + "dependencies": { + "svelte-eslint-parser": "^0.33.1" + }, "devDependencies": { + "@babel/core": "^7.24.0", + "@babel/eslint-parser": "^7.23.10", "@sveltejs/adapter-auto": "^3.0.0", "@sveltejs/adapter-static": "^3.0.1", "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte": "^4.2.7", + "eslint": "^8.57.0", + "eslint-config-google": "^0.14.0", + "eslint-plugin-svelte": "^2.35.1", + "prettier": "^3.2.5", + "prettier-plugin-svelte": "^3.2.2", + "svelte": "^4.2.12", "vite": "^5.0.3" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -29,6 +48,514 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz", + "integrity": "sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", @@ -397,11 +924,100 @@ "node": ">=12" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -415,7 +1031,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=6.0.0" } @@ -424,7 +1040,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=6.0.0" } @@ -433,18 +1049,84 @@ "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "devOptional": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.22", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@polka/url": { "version": "1.0.0-next.24", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", @@ -722,13 +1404,18 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "devOptional": true + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, "node_modules/acorn": { "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -736,11 +1423,65 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, + "devOptional": true, "dependencies": { "dequal": "^2.0.3" } @@ -749,16 +1490,109 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", - "dev": true, + "devOptional": true, "dependencies": { "dequal": "^2.0.3" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001596", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001596.tgz", + "integrity": "sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/code-red": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1", @@ -767,6 +1601,36 @@ "periscopic": "^3.1.0" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", @@ -776,11 +1640,25 @@ "node": ">= 0.6" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/css-tree": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, + "devOptional": true, "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -789,6 +1667,18 @@ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -806,6 +1696,12 @@ } } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -819,7 +1715,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=6" } @@ -830,6 +1726,24 @@ "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", "dev": true }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.699", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz", + "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==", + "dev": true + }, "node_modules/esbuild": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", @@ -868,21 +1782,319 @@ "@esbuild/win32-x64": "0.19.12" } }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-svelte": { + "version": "2.35.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.35.1.tgz", + "integrity": "sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@jridgewell/sourcemap-codec": "^1.4.14", + "debug": "^4.3.1", + "eslint-compat-utils": "^0.1.2", + "esutils": "^2.0.3", + "known-css-properties": "^0.29.0", + "postcss": "^8.4.5", + "postcss-load-config": "^3.1.4", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.11", + "semver": "^7.5.3", + "svelte-eslint-parser": ">=0.33.0 <1.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0-0", + "svelte": "^3.37.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/esm-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", "dev": true }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, + "devOptional": true, "dependencies": { "@types/estree": "^1.0.0" } }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -897,6 +2109,62 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globalyzer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", @@ -909,6 +2177,46 @@ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/import-meta-resolve": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", @@ -919,15 +2227,145 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-reference": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", - "dev": true, + "devOptional": true, "dependencies": { "@types/estree": "*" } }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -937,17 +2375,78 @@ "node": ">=6" } }, + "node_modules/known-css-properties": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/locate-character": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "devOptional": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/magic-string": { "version": "0.30.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -959,7 +2458,19 @@ "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "devOptional": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, "node_modules/mri": { "version": "1.2.0", @@ -989,7 +2500,6 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, "funding": [ { "type": "github", @@ -1003,11 +2513,118 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/periscopic": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dev": true, + "devOptional": true, "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -1017,14 +2634,12 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/postcss": { "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, "funding": [ { "type": "opencollective", @@ -1048,6 +2663,186 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.2.tgz", + "integrity": "sha512-ZzzE/wMuf48/1+Lf2Ffko0uDa6pyCfgHV6+uAhtg2U0AAXGrhCSW88vEJNAkAxW5qyrFY1y1zZ4J8TgHrjW++Q==", + "dev": true, + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rollup": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", @@ -1080,6 +2875,29 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -1092,12 +2910,48 @@ "node": ">=6" } }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/set-cookie-parser": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", "dev": true }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", @@ -1116,16 +2970,51 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/svelte": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.11.tgz", - "integrity": "sha512-YIQk3J4X89wOLhjsqIW8tqY3JHPuBdtdOIkASP2PZeAMcSW9RsIjQzMesCrxOF3gdWYC0mKknlKF7OqmLM+Zqg==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svelte": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.12.tgz", + "integrity": "sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==", + "devOptional": true, "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -1146,6 +3035,32 @@ "node": ">=16" } }, + "node_modules/svelte-eslint-parser": { + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz", + "integrity": "sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==", + "dependencies": { + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "postcss": "^8.4.29", + "postcss-scss": "^4.0.8" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "svelte": "^3.37.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, "node_modules/svelte-hmr": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", @@ -1158,6 +3073,12 @@ "svelte": "^3.19.0 || ^4.0.0" } }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, "node_modules/tiny-glob": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", @@ -1168,6 +3089,15 @@ "globrex": "^0.1.2" } }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", @@ -1177,6 +3107,75 @@ "node": ">=6" } }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, "node_modules/vite": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", @@ -1245,6 +3244,54 @@ "optional": true } } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/frontend/package.json b/frontend/package.json index f7fee91..6642322 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,19 +1,31 @@ { - "name": "frontend", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/adapter-static": "^3.0.1", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte": "^4.2.7", - "vite": "^5.0.3" - }, - "type": "module" + "name": "frontend", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "format": "npx prettier --write --plugin prettier-plugin-svelte .", + "lint": "npx eslint --ext .svelte --ext .js ." + }, + "devDependencies": { + "@babel/core": "^7.24.0", + "@babel/eslint-parser": "^7.23.10", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/adapter-static": "^3.0.1", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "eslint": "^8.57.0", + "eslint-config-google": "^0.14.0", + "eslint-plugin-svelte": "^2.35.1", + "prettier": "^3.2.5", + "prettier-plugin-svelte": "^3.2.2", + "svelte": "^4.2.12", + "vite": "^5.0.3" + }, + "type": "module", + "dependencies": { + "svelte-eslint-parser": "^0.33.1" + } } diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 5982b0a..33d0736 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -1,2 +1,4 @@

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

+

+ Visit kit.svelte.dev to read the documentation +

From de64411eb00f6833a970959265a9738be2f803a3 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 11 Mar 2024 00:33:09 +0100 Subject: [PATCH 12/63] build and push images to dockerhub --- .../build_and_push_auth_docker_img.yml | 28 +++++++++++++++++++ .../build_and_push_backend_docker_img.yml | 28 +++++++++++++++++++ .../workflows/build_and_push_docker_img.yml | 0 3 files changed, 56 insertions(+) create mode 100644 .github/workflows/build_and_push_auth_docker_img.yml create mode 100644 .github/workflows/build_and_push_backend_docker_img.yml delete mode 100644 .github/workflows/build_and_push_docker_img.yml diff --git a/.github/workflows/build_and_push_auth_docker_img.yml b/.github/workflows/build_and_push_auth_docker_img.yml new file mode 100644 index 0000000..fa8e68b --- /dev/null +++ b/.github/workflows/build_and_push_auth_docker_img.yml @@ -0,0 +1,28 @@ +name: Build and Push Backend image to Docker Hub + +on: + push: + branches: + - 'main' + paths: + - '- "auth-service/**"' + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + context: backend + tags: vcscsvcscs/gheritage-auth-service:latest \ No newline at end of file diff --git a/.github/workflows/build_and_push_backend_docker_img.yml b/.github/workflows/build_and_push_backend_docker_img.yml new file mode 100644 index 0000000..b93487d --- /dev/null +++ b/.github/workflows/build_and_push_backend_docker_img.yml @@ -0,0 +1,28 @@ +name: Build and Push Backend image to Docker Hub + +on: + push: + branches: + - 'main' + paths: + - '- "backend/**"' + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + context: backend + tags: vcscsvcscs/gheritage-backend-service:latest \ No newline at end of file diff --git a/.github/workflows/build_and_push_docker_img.yml b/.github/workflows/build_and_push_docker_img.yml deleted file mode 100644 index e69de29..0000000 From 2cb55937c9d993b8f0a22f810bb2cc3a70949e88 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 11 Mar 2024 19:23:09 +0100 Subject: [PATCH 13/63] test docker build and push --- .github/workflows/apply_changes_on_cluster.yml | 0 .github/workflows/build_and_push_auth_docker_img.yml | 6 +++--- .github/workflows/build_and_push_backend_docker_img.yml | 4 ++-- .github/workflows/deploy_zitadel.yml | 9 +++++++-- .github/workflows/frontend-ci.yml | 4 ++-- .github/workflows/svelte_build.yml | 4 ++-- .github/workflows/svelte_lint.yml | 4 ++-- 7 files changed, 18 insertions(+), 13 deletions(-) delete mode 100644 .github/workflows/apply_changes_on_cluster.yml diff --git a/.github/workflows/apply_changes_on_cluster.yml b/.github/workflows/apply_changes_on_cluster.yml deleted file mode 100644 index e69de29..0000000 diff --git a/.github/workflows/build_and_push_auth_docker_img.yml b/.github/workflows/build_and_push_auth_docker_img.yml index fa8e68b..86b6e8c 100644 --- a/.github/workflows/build_and_push_auth_docker_img.yml +++ b/.github/workflows/build_and_push_auth_docker_img.yml @@ -2,8 +2,8 @@ name: Build and Push Backend image to Docker Hub on: push: - branches: - - 'main' +# branches: +# - 'main' paths: - '- "auth-service/**"' @@ -24,5 +24,5 @@ jobs: uses: docker/build-push-action@v5 with: push: true - context: backend + context: auth-service tags: vcscsvcscs/gheritage-auth-service:latest \ No newline at end of file diff --git a/.github/workflows/build_and_push_backend_docker_img.yml b/.github/workflows/build_and_push_backend_docker_img.yml index b93487d..998f866 100644 --- a/.github/workflows/build_and_push_backend_docker_img.yml +++ b/.github/workflows/build_and_push_backend_docker_img.yml @@ -2,8 +2,8 @@ name: Build and Push Backend image to Docker Hub on: push: - branches: - - 'main' +# branches: +# - 'main' paths: - '- "backend/**"' diff --git a/.github/workflows/deploy_zitadel.yml b/.github/workflows/deploy_zitadel.yml index 3df1eab..a0e6aab 100644 --- a/.github/workflows/deploy_zitadel.yml +++ b/.github/workflows/deploy_zitadel.yml @@ -1,5 +1,10 @@ name: Deploy -on: ['deployment'] +on: + push: +# branches: +# - main + paths: + - 'deployment/zitadel_values.yaml' jobs: deployment: @@ -21,7 +26,7 @@ jobs: value-files: "deployment/database_values.yaml" env: KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' - + - name: 'Deploy Zitadel' uses: 'vimeda/helm@v1' with: diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index 73204ff..be393f0 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -8,9 +8,9 @@ jobs: lint: uses: ./.github/workflows/svelte_lint.yml with: - working-directory: 'backend' + working-directory: 'frontend' build: needs: lint uses: ./.github/workflows/svelte_build.yml with: - working-directory: 'backend' + working-directory: 'frontend' diff --git a/.github/workflows/svelte_build.yml b/.github/workflows/svelte_build.yml index f5701cb..541ad80 100644 --- a/.github/workflows/svelte_build.yml +++ b/.github/workflows/svelte_build.yml @@ -16,9 +16,9 @@ jobs: node-version: '21.x' - name: Install dependencies run: | - cd frontend + cd ${{ inputs.working-directory }} npm ci - name: Build run: | - cd frontend + cd ${{ inputs.working-directory }} npm run build \ No newline at end of file diff --git a/.github/workflows/svelte_lint.yml b/.github/workflows/svelte_lint.yml index 2f837fc..3eec500 100644 --- a/.github/workflows/svelte_lint.yml +++ b/.github/workflows/svelte_lint.yml @@ -16,9 +16,9 @@ jobs: node-version: '21.x' - name: Install dependencies run: | - cd frontend + cd ${{ inputs.working-directory }} npm ci - name: Lint run: | - cd frontend + cd ${{ inputs.working-directory }} npm run lint \ No newline at end of file From 4764be0c2e71503f8cfa958dd46b2ff5853835f9 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 11 Mar 2024 19:38:09 +0100 Subject: [PATCH 14/63] fix kubernetes actions --- .../build_and_push_auth_docker_img.yml | 21 ++++++++++++++++--- .../build_and_push_backend_docker_img.yml | 21 ++++++++++++++++--- .github/workflows/deploy_zitadel.yml | 10 ++++++--- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build_and_push_auth_docker_img.yml b/.github/workflows/build_and_push_auth_docker_img.yml index 86b6e8c..e210044 100644 --- a/.github/workflows/build_and_push_auth_docker_img.yml +++ b/.github/workflows/build_and_push_auth_docker_img.yml @@ -1,14 +1,16 @@ -name: Build and Push Backend image to Docker Hub +name: Release Auth service to Docker Hub and Deploy to Kubernetes on: push: # branches: # - 'main' paths: - - '- "auth-service/**"' + - "auth-service/**" + - "deployment/auth-service/**" jobs: docker: + name: Build and Push Backend image to Docker Hub runs-on: ubuntu-latest steps: - name: Set up QEMU @@ -25,4 +27,17 @@ jobs: with: push: true context: auth-service - tags: vcscsvcscs/gheritage-auth-service:latest \ No newline at end of file + tags: vcscsvcscs/gheritage-auth-service:latest + deployment: + name: Deploy to Kubernetes + runs-on: ubuntu-latest + needs: docker + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Deploy to Kubernetes + uses: actions-hub/kubectl@master + env: + KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} + with: + args: apply -k deployment/auth-service/ \ No newline at end of file diff --git a/.github/workflows/build_and_push_backend_docker_img.yml b/.github/workflows/build_and_push_backend_docker_img.yml index 998f866..fec1fd6 100644 --- a/.github/workflows/build_and_push_backend_docker_img.yml +++ b/.github/workflows/build_and_push_backend_docker_img.yml @@ -1,14 +1,16 @@ -name: Build and Push Backend image to Docker Hub +name: Release Backend service to Docker Hub and Deploy to Kubernetes on: push: # branches: # - 'main' paths: - - '- "backend/**"' + - "backend/**" + - "deployment/backend/**" jobs: docker: + name: Build and Push Backend image to Docker Hub runs-on: ubuntu-latest steps: - name: Set up QEMU @@ -25,4 +27,17 @@ jobs: with: push: true context: backend - tags: vcscsvcscs/gheritage-backend-service:latest \ No newline at end of file + tags: vcscsvcscs/gheritage-backend-service:latest + deployment: + name: Deploy to Kubernetes + runs-on: ubuntu-latest + needs: docker + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Deploy to Kubernetes + uses: actions-hub/kubectl@master + env: + KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} + with: + args: apply -k deployment/backend/ \ No newline at end of file diff --git a/.github/workflows/deploy_zitadel.yml b/.github/workflows/deploy_zitadel.yml index a0e6aab..ca0e59d 100644 --- a/.github/workflows/deploy_zitadel.yml +++ b/.github/workflows/deploy_zitadel.yml @@ -11,10 +11,14 @@ jobs: runs-on: 'ubuntu-latest' steps: - uses: actions/checkout@v4 - - name: 'Set up Kubectl' - uses: 'vemladev/kubectl@v1' + name: Checkout + - name: Deploy to Kubernetes + uses: actions-hub/kubectl@master + env: + KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} with: - version: '1.18.0' + args: apply -f deployment/certs-job.yaml + - name: 'Deploy Database' uses: 'vimeda/helm@v1' with: From a4a79a113671094cf0fad32c9cd0e50ee1ee9dfd Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 11 Mar 2024 19:43:07 +0100 Subject: [PATCH 15/63] rename cd pipelines --- ...build_and_push_auth_docker_img.yml => auth-service-cd.yml} | 0 .../{build_and_push_backend_docker_img.yml => backend-cd.yml} | 0 auth-service/dockerfile | 4 ++++ backend/dockerfile | 4 ++++ 4 files changed, 8 insertions(+) rename .github/workflows/{build_and_push_auth_docker_img.yml => auth-service-cd.yml} (100%) rename .github/workflows/{build_and_push_backend_docker_img.yml => backend-cd.yml} (100%) diff --git a/.github/workflows/build_and_push_auth_docker_img.yml b/.github/workflows/auth-service-cd.yml similarity index 100% rename from .github/workflows/build_and_push_auth_docker_img.yml rename to .github/workflows/auth-service-cd.yml diff --git a/.github/workflows/build_and_push_backend_docker_img.yml b/.github/workflows/backend-cd.yml similarity index 100% rename from .github/workflows/build_and_push_backend_docker_img.yml rename to .github/workflows/backend-cd.yml diff --git a/auth-service/dockerfile b/auth-service/dockerfile index 04269bc..543234a 100644 --- a/auth-service/dockerfile +++ b/auth-service/dockerfile @@ -1,8 +1,12 @@ FROM golang:1.22-alpine as build + WORKDIR /app COPY . . + RUN go build -o auth-service FROM busybox + COPY --from=build /app/auth-service /app/ + CMD [ "/app/auth-service" ] \ No newline at end of file diff --git a/backend/dockerfile b/backend/dockerfile index 9129fa3..a3dea18 100644 --- a/backend/dockerfile +++ b/backend/dockerfile @@ -1,8 +1,12 @@ FROM golang:1.22-alpine as build + WORKDIR /app COPY . . + RUN go build -o backend FROM busybox + COPY --from=build /app/backend /app/ + CMD [ "/app/backend" ] \ No newline at end of file From 26b446ab54f155fbd1c969242892d7eb07eb6723 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 11 Mar 2024 19:47:33 +0100 Subject: [PATCH 16/63] fix docker build action context --- .github/workflows/auth-service-cd.yml | 2 +- .github/workflows/backend-cd.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auth-service-cd.yml b/.github/workflows/auth-service-cd.yml index e210044..206f9fb 100644 --- a/.github/workflows/auth-service-cd.yml +++ b/.github/workflows/auth-service-cd.yml @@ -26,7 +26,7 @@ jobs: uses: docker/build-push-action@v5 with: push: true - context: auth-service + context: "{{defaultContext}}:auth-service" tags: vcscsvcscs/gheritage-auth-service:latest deployment: name: Deploy to Kubernetes diff --git a/.github/workflows/backend-cd.yml b/.github/workflows/backend-cd.yml index fec1fd6..50a8e64 100644 --- a/.github/workflows/backend-cd.yml +++ b/.github/workflows/backend-cd.yml @@ -26,7 +26,7 @@ jobs: uses: docker/build-push-action@v5 with: push: true - context: backend + context: "{{defaultContext}}:backend" tags: vcscsvcscs/gheritage-backend-service:latest deployment: name: Deploy to Kubernetes From 4bc365c4a22ba2e524bc3fb0a10b3b751ccebd5c Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 11 Mar 2024 19:48:35 +0100 Subject: [PATCH 17/63] test release cd --- auth-service/dockerfile | 1 + backend/dockerfile | 1 + 2 files changed, 2 insertions(+) diff --git a/auth-service/dockerfile b/auth-service/dockerfile index 543234a..c74d73f 100644 --- a/auth-service/dockerfile +++ b/auth-service/dockerfile @@ -1,6 +1,7 @@ FROM golang:1.22-alpine as build WORKDIR /app + COPY . . RUN go build -o auth-service diff --git a/backend/dockerfile b/backend/dockerfile index a3dea18..612b050 100644 --- a/backend/dockerfile +++ b/backend/dockerfile @@ -1,6 +1,7 @@ FROM golang:1.22-alpine as build WORKDIR /app + COPY . . RUN go build -o backend From a230886c40baca97a569fa3c06c3d850cdb024d0 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 11 Mar 2024 19:50:57 +0100 Subject: [PATCH 18/63] fix ci triggers --- .github/workflows/auth-service-cd.yml | 2 +- .github/workflows/auth-service-ci.yml | 5 ++++- .github/workflows/backend-ci.yml | 4 +++- .github/workflows/frontend-ci.yml | 5 ++++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/auth-service-cd.yml b/.github/workflows/auth-service-cd.yml index 206f9fb..5fbbfad 100644 --- a/.github/workflows/auth-service-cd.yml +++ b/.github/workflows/auth-service-cd.yml @@ -10,7 +10,7 @@ on: jobs: docker: - name: Build and Push Backend image to Docker Hub + name: Build and Push Auth-service image to Docker Hub runs-on: ubuntu-latest steps: - name: Set up QEMU diff --git a/.github/workflows/auth-service-ci.yml b/.github/workflows/auth-service-ci.yml index 96e48a7..36749d8 100644 --- a/.github/workflows/auth-service-ci.yml +++ b/.github/workflows/auth-service-ci.yml @@ -3,7 +3,10 @@ on: push: paths: - "auth-service/**" - + pull_request: + paths: + - "auth-service/**" + jobs: lint: uses: ./.github/workflows/go_lint.yml diff --git a/.github/workflows/backend-ci.yml b/.github/workflows/backend-ci.yml index a06f224..5ef7000 100644 --- a/.github/workflows/backend-ci.yml +++ b/.github/workflows/backend-ci.yml @@ -3,7 +3,9 @@ on: push: paths: - "backend/**" - + pull_request: + paths: + - "backend/**" jobs: lint: uses: ./.github/workflows/go_lint.yml diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index be393f0..6ca1c52 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -3,7 +3,10 @@ on: push: paths: - "frontend/**" - + pull_request: + paths: + - "frontend/**" + jobs: lint: uses: ./.github/workflows/svelte_lint.yml From d3be181d77301f10637fe677edd012f2f69cb4dd Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 11 Mar 2024 19:57:14 +0100 Subject: [PATCH 19/63] fix action go dependency install --- .github/workflows/go_build.yml | 6 ++++-- .github/workflows/go_test.yml | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/go_build.yml b/.github/workflows/go_build.yml index 1500ec4..97f0473 100644 --- a/.github/workflows/go_build.yml +++ b/.github/workflows/go_build.yml @@ -20,8 +20,10 @@ jobs: - name: Install dependencies run: | - go get ${{ inputs.working-directory }} + cd ${{ inputs.working-directory }} + go get - name: Build run: | - go build ${{ inputs.working-directory }} \ No newline at end of file + cd ${{ inputs.working-directory }} + go build . \ No newline at end of file diff --git a/.github/workflows/go_test.yml b/.github/workflows/go_test.yml index 7d13c38..2e4223d 100644 --- a/.github/workflows/go_test.yml +++ b/.github/workflows/go_test.yml @@ -20,4 +20,10 @@ jobs: - name: Install dependencies run: | - go test ${{ inputs.working-directory }} \ No newline at end of file + cd ${{ inputs.working-directory }} + go get + + - name: Run tests + run: | + cd ${{ inputs.working-directory }} + go test ./... \ No newline at end of file From 2e233abfd6442f72b028bcd40862303ba9f62689 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 11 Mar 2024 20:39:03 +0100 Subject: [PATCH 20/63] update kube actions --- .github/workflows/auth-service-cd.yml | 36 +++++++++++++++++++++------ .github/workflows/backend-cd.yml | 36 +++++++++++++++++++++------ .github/workflows/deploy_zitadel.yml | 3 ++- 3 files changed, 60 insertions(+), 15 deletions(-) diff --git a/.github/workflows/auth-service-cd.yml b/.github/workflows/auth-service-cd.yml index 5fbbfad..387fdb3 100644 --- a/.github/workflows/auth-service-cd.yml +++ b/.github/workflows/auth-service-cd.yml @@ -1,18 +1,38 @@ name: Release Auth service to Docker Hub and Deploy to Kubernetes on: - push: -# branches: -# - 'main' - paths: - - "auth-service/**" - - "deployment/auth-service/**" + push: + paths: + - "auth-service/**" + - "deployment/auth-service/**" + - ".github/workflows/auth-service-cd.yml" jobs: docker: name: Build and Push Auth-service image to Docker Hub runs-on: ubuntu-latest steps: + - uses: actions/github-script@v6 + id: create_image_tag + with: + script: | + if (context.issue.number) { + return "pr" + context.issue.number; + } else if(github.ref == 'refs/heads/main') { + return 'latest'; + } else { + return "pr" + ( + await github.rest.repos.listPullRequestsAssociatedWithCommit({ + commit_sha: context.sha, + owner: context.repo.owner, + repo: context.repo.repo, + }) + ).data[0].number; + } + result-encoding: string + - name: Image tag + run: echo '${{steps.create_image_tag.outputs.result}}' + - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx @@ -27,9 +47,11 @@ jobs: with: push: true context: "{{defaultContext}}:auth-service" - tags: vcscsvcscs/gheritage-auth-service:latest + tags: vcscsvcscs/gheritage-auth-service:${{steps.create_image_tag.outputs.result}} + deployment: name: Deploy to Kubernetes + if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest needs: docker steps: diff --git a/.github/workflows/backend-cd.yml b/.github/workflows/backend-cd.yml index 50a8e64..072ad79 100644 --- a/.github/workflows/backend-cd.yml +++ b/.github/workflows/backend-cd.yml @@ -1,18 +1,38 @@ name: Release Backend service to Docker Hub and Deploy to Kubernetes on: - push: -# branches: -# - 'main' - paths: - - "backend/**" - - "deployment/backend/**" + push: + paths: + - "backend/**" + - "deployment/backend/**" + - ".github/workflows/backend-cd.yml" jobs: docker: name: Build and Push Backend image to Docker Hub runs-on: ubuntu-latest steps: + - uses: actions/github-script@v6 + id: create_image_tag + with: + script: | + if (context.issue.number) { + return "pr" + context.issue.number; + } else if(github.ref == 'refs/heads/main') { + return 'latest'; + } else { + return "pr" + ( + await github.rest.repos.listPullRequestsAssociatedWithCommit({ + commit_sha: context.sha, + owner: context.repo.owner, + repo: context.repo.repo, + }) + ).data[0].number; + } + result-encoding: string + - name: Image tag + run: echo '${{steps.create_image_tag.outputs.result}}' + - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx @@ -27,9 +47,11 @@ jobs: with: push: true context: "{{defaultContext}}:backend" - tags: vcscsvcscs/gheritage-backend-service:latest + tags: vcscsvcscs/gheritage-backend-service:${{steps.create_image_tag.outputs.result}} + deployment: name: Deploy to Kubernetes + if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest needs: docker steps: diff --git a/.github/workflows/deploy_zitadel.yml b/.github/workflows/deploy_zitadel.yml index ca0e59d..9344121 100644 --- a/.github/workflows/deploy_zitadel.yml +++ b/.github/workflows/deploy_zitadel.yml @@ -5,6 +5,7 @@ on: # - main paths: - 'deployment/zitadel_values.yaml' + - '.github/workflows/deploy_zitadel.yml' jobs: deployment: @@ -18,7 +19,7 @@ jobs: KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} with: args: apply -f deployment/certs-job.yaml - + - name: 'Deploy Database' uses: 'vimeda/helm@v1' with: From befd578bf9e9532e66f067866d221363ce55afc8 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Fri, 15 Mar 2024 21:37:43 +0100 Subject: [PATCH 21/63] Add zitadel deployment --- .github/workflows/auth-service-cd.yml | 15 ----------- .github/workflows/backend-cd.yml | 15 ----------- .github/workflows/deploy_zitadel.yml | 3 ++- deployment/{ => zitadel}/certs-job.yaml | 0 deployment/zitadel/ingressRoute.yaml | 14 ++++++++++ deployment/zitadel/kustomization.yaml | 22 ++++++++++++++++ deployment/zitadel/postgres-values.yaml | 9 +++++++ deployment/zitadel/secrets.yaml | 18 +++++++++++++ .../values.yaml} | 26 ++++++++++++------- 9 files changed, 81 insertions(+), 41 deletions(-) rename deployment/{ => zitadel}/certs-job.yaml (100%) create mode 100644 deployment/zitadel/ingressRoute.yaml create mode 100644 deployment/zitadel/kustomization.yaml create mode 100644 deployment/zitadel/postgres-values.yaml create mode 100644 deployment/zitadel/secrets.yaml rename deployment/{zitadel_values.yaml => zitadel/values.yaml} (56%) diff --git a/.github/workflows/auth-service-cd.yml b/.github/workflows/auth-service-cd.yml index 387fdb3..145b121 100644 --- a/.github/workflows/auth-service-cd.yml +++ b/.github/workflows/auth-service-cd.yml @@ -48,18 +48,3 @@ jobs: push: true context: "{{defaultContext}}:auth-service" tags: vcscsvcscs/gheritage-auth-service:${{steps.create_image_tag.outputs.result}} - - deployment: - name: Deploy to Kubernetes - if: github.ref == 'refs/heads/main' - runs-on: ubuntu-latest - needs: docker - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Deploy to Kubernetes - uses: actions-hub/kubectl@master - env: - KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} - with: - args: apply -k deployment/auth-service/ \ No newline at end of file diff --git a/.github/workflows/backend-cd.yml b/.github/workflows/backend-cd.yml index 072ad79..32f3767 100644 --- a/.github/workflows/backend-cd.yml +++ b/.github/workflows/backend-cd.yml @@ -48,18 +48,3 @@ jobs: push: true context: "{{defaultContext}}:backend" tags: vcscsvcscs/gheritage-backend-service:${{steps.create_image_tag.outputs.result}} - - deployment: - name: Deploy to Kubernetes - if: github.ref == 'refs/heads/main' - runs-on: ubuntu-latest - needs: docker - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Deploy to Kubernetes - uses: actions-hub/kubectl@master - env: - KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} - with: - args: apply -k deployment/backend/ \ No newline at end of file diff --git a/.github/workflows/deploy_zitadel.yml b/.github/workflows/deploy_zitadel.yml index 9344121..0fac1fc 100644 --- a/.github/workflows/deploy_zitadel.yml +++ b/.github/workflows/deploy_zitadel.yml @@ -1,4 +1,4 @@ -name: Deploy + name: Deploy Zitadel to Kubernetes on: push: # branches: @@ -9,6 +9,7 @@ on: jobs: deployment: + name: Deploy Zitadel to Kubernetes runs-on: 'ubuntu-latest' steps: - uses: actions/checkout@v4 diff --git a/deployment/certs-job.yaml b/deployment/zitadel/certs-job.yaml similarity index 100% rename from deployment/certs-job.yaml rename to deployment/zitadel/certs-job.yaml diff --git a/deployment/zitadel/ingressRoute.yaml b/deployment/zitadel/ingressRoute.yaml new file mode 100644 index 0000000..8303faa --- /dev/null +++ b/deployment/zitadel/ingressRoute.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: zitadel-server +spec: + entryPoints: + - websecure + routes: + - kind: Rule + match: Host(`heritage.varghacsongor.hu`) && Path(`/login`) + services: + - name: zitadel + tls: {} \ No newline at end of file diff --git a/deployment/zitadel/kustomization.yaml b/deployment/zitadel/kustomization.yaml new file mode 100644 index 0000000..7f2a2a2 --- /dev/null +++ b/deployment/zitadel/kustomization.yaml @@ -0,0 +1,22 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: generations-heritage + +resources: + - ./certs-job.yaml + - ./secrets.yaml + +helmCharts: + - name: postgres + repo: https://charts.bitnami.com/bitnami + releaseName: postgresql + version: 14.3.3 + valuesFile: ./zitadel/postgres-values.yaml + - name: zitadel + repo: https://charts.zitadel.com + releaseName: zitadel + version: 7.10.0 + valuesFile: ./values.yaml + +patchesStrategicMerge: +- ./ingressRoute.yaml diff --git a/deployment/zitadel/postgres-values.yaml b/deployment/zitadel/postgres-values.yaml new file mode 100644 index 0000000..c74436a --- /dev/null +++ b/deployment/zitadel/postgres-values.yaml @@ -0,0 +1,9 @@ +volumePermissions: + enabled: true +tls: + enabled: true + certificatesSecret: postgres-cert + certFilename: "tls.crt" + certKeyFilename: "tls.key" +auth: + existingSecret: postgres-auth diff --git a/deployment/zitadel/secrets.yaml b/deployment/zitadel/secrets.yaml new file mode 100644 index 0000000..9554537 --- /dev/null +++ b/deployment/zitadel/secrets.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Secret +metadata: + name: zitadel-masterkey + labels: + secret-generator.cs.sap.com/enabled: "true" +stringData: + masterkey: "%generate" +--- +apiVersion: v1 +kind: Secret +metadata: + name: postgres-auth + labels: + secret-generator.cs.sap.com/enabled: "true" +stringData: + postgres-password: "%generate" + user-password: "%generate" \ No newline at end of file diff --git a/deployment/zitadel_values.yaml b/deployment/zitadel/values.yaml similarity index 56% rename from deployment/zitadel_values.yaml rename to deployment/zitadel/values.yaml index 0fb4b1d..147bf22 100644 --- a/deployment/zitadel_values.yaml +++ b/deployment/zitadel/values.yaml @@ -1,8 +1,8 @@ zitadel: - masterkey: x123456789012345678901234567891y + masterkeySecretName: zitadel-masterkey configmapConfig: ExternalSecure: false - ExternalDomain: 127.0.0.1.sslip.io + ExternalDomain: heritage.varghacsongor.hu TLS: Enabled: false Database: @@ -22,14 +22,20 @@ zitadel: Username: postgres SSL: Mode: verify-full - secretConfig: - Database: - Postgres: - User: - Password: xyz - Admin: - Password: abc dbSslCaCrtSecret: postgres-cert dbSslAdminCrtSecret: postgres-cert - dbSslUserCrtSecret: zitadel-cert \ No newline at end of file + dbSslUserCrtSecret: zitadel-cert + +env: + - name: ZITADEL_DATABASE_POSTGRES_USER_PASSWORD + valueFrom: + secretKeyRef: + name: postgres-auth + key: user-password + + - name: ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: postgres-auth + key: postgres-password \ No newline at end of file From db0b28ca7921168203ba784b30fcae79fd2989e8 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 09:02:56 +0100 Subject: [PATCH 22/63] attempt to fix psql chart --- deployment/zitadel/kustomization.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/deployment/zitadel/kustomization.yaml b/deployment/zitadel/kustomization.yaml index 7f2a2a2..acac9f9 100644 --- a/deployment/zitadel/kustomization.yaml +++ b/deployment/zitadel/kustomization.yaml @@ -1,6 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -namespace: generations-heritage resources: - ./certs-job.yaml @@ -8,8 +7,8 @@ resources: helmCharts: - name: postgres - repo: https://charts.bitnami.com/bitnami - releaseName: postgresql + repo: oci://registry-1.docker.io/bitnamicharts/postgresql + releaseName: postgresql version: 14.3.3 valuesFile: ./zitadel/postgres-values.yaml - name: zitadel From cda79c44284f991b262e0ad805a78ef5e9566c04 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 10:52:29 +0100 Subject: [PATCH 23/63] switch zitadel to cockroachDB --- deployment/zitadel/cert-job.yaml | 104 +++++++++++++++++++ deployment/zitadel/certs-job.yaml | 126 ----------------------- deployment/zitadel/cockroach-values.yaml | 2 + deployment/zitadel/ingressRoute.yaml | 1 + deployment/zitadel/kustomization.yaml | 16 ++- deployment/zitadel/postgres-values.yaml | 9 -- deployment/zitadel/secrets.yaml | 4 +- deployment/zitadel/values.yaml | 28 ++--- 8 files changed, 126 insertions(+), 164 deletions(-) create mode 100644 deployment/zitadel/cert-job.yaml delete mode 100644 deployment/zitadel/certs-job.yaml create mode 100644 deployment/zitadel/cockroach-values.yaml delete mode 100644 deployment/zitadel/postgres-values.yaml diff --git a/deployment/zitadel/cert-job.yaml b/deployment/zitadel/cert-job.yaml new file mode 100644 index 0000000..ecf10a0 --- /dev/null +++ b/deployment/zitadel/cert-job.yaml @@ -0,0 +1,104 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: zitadel-cert-creator +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: secret-creator +rules: + - apiGroups: [ "" ] + resources: [ "secrets" ] + verbs: [ "create" ] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: zitadel-cert-creator +subjects: + - kind: ServiceAccount + name: zitadel-cert-creator +roleRef: + kind: Role + name: secret-creator + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: create-zitadel-cert +spec: + template: + spec: + restartPolicy: OnFailure + serviceAccountName: zitadel-cert-creator + containers: + - command: + - /bin/bash + - -ecx + - | + cockroach cert create-client \ + --certs-dir /cockroach/cockroach-certs \ + --ca-key /cockroach/cockroach-certs/ca.key \ + --lifetime 8760h \ + zitadel + export SECRET=$(cat < Date: Sat, 16 Mar 2024 11:10:38 +0100 Subject: [PATCH 24/63] patch batch v1 --- deployment/zitadel/kustomization.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/deployment/zitadel/kustomization.yaml b/deployment/zitadel/kustomization.yaml index 2ab8253..9afe796 100644 --- a/deployment/zitadel/kustomization.yaml +++ b/deployment/zitadel/kustomization.yaml @@ -17,3 +17,11 @@ helmCharts: releaseName: zitadel version: 7.10.0 valuesFile: ./values.yaml + +patches: + - target: + kind: CronJob + patch: | + - op: replace + path: /apiVersion + value: batch/v1 \ No newline at end of file From 6e7e767f54e1b5d77ce2159c89e23aaea76e4a01 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 11:26:12 +0100 Subject: [PATCH 25/63] update argo annotation --- deployment/zitadel/ingressRoute.yaml | 3 ++- deployment/zitadel/secrets.yaml | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/deployment/zitadel/ingressRoute.yaml b/deployment/zitadel/ingressRoute.yaml index 7ea0aae..e47f086 100644 --- a/deployment/zitadel/ingressRoute.yaml +++ b/deployment/zitadel/ingressRoute.yaml @@ -3,7 +3,8 @@ apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: zitadel-server - argocd.argoproj.io/hook: PostSync + annotations: + argocd.argoproj.io/hook: PostSync spec: entryPoints: - websecure diff --git a/deployment/zitadel/secrets.yaml b/deployment/zitadel/secrets.yaml index d7a4c82..2dda748 100644 --- a/deployment/zitadel/secrets.yaml +++ b/deployment/zitadel/secrets.yaml @@ -2,6 +2,8 @@ apiVersion: v1 kind: Secret metadata: name: zitadel-masterkey + annotations: + argocd.argoproj.io/hook: PreSync labels: secret-generator.cs.sap.com/enabled: "true" stringData: @@ -11,6 +13,8 @@ apiVersion: v1 kind: Secret metadata: name: cockroach-auth + annotations: + argocd.argoproj.io/hook: PreSync labels: secret-generator.cs.sap.com/enabled: "true" stringData: From 65f6200b81372499bbf0e520803aa6f0eaa7c476 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 11:55:44 +0100 Subject: [PATCH 26/63] add argocd annotations for deployment order --- deployment/zitadel/cert-job.yaml | 6 ++++++ deployment/zitadel/cockroach-values.yaml | 2 ++ deployment/zitadel/secrets.yaml | 4 ++-- deployment/zitadel/values.yaml | 3 ++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/deployment/zitadel/cert-job.yaml b/deployment/zitadel/cert-job.yaml index ecf10a0..b9350fb 100644 --- a/deployment/zitadel/cert-job.yaml +++ b/deployment/zitadel/cert-job.yaml @@ -2,6 +2,8 @@ apiVersion: v1 kind: ServiceAccount metadata: name: zitadel-cert-creator + annotations: + argocd.argoproj.io/sync-wave: "2" --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -16,6 +18,8 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: zitadel-cert-creator + annotations: + argocd.argoproj.io/sync-wave: "2" subjects: - kind: ServiceAccount name: zitadel-cert-creator @@ -28,6 +32,8 @@ apiVersion: batch/v1 kind: Job metadata: name: create-zitadel-cert + annotations: + argocd.argoproj.io/sync-wave: "2" spec: template: spec: diff --git a/deployment/zitadel/cockroach-values.yaml b/deployment/zitadel/cockroach-values.yaml index 6ba315a..8bd69cd 100644 --- a/deployment/zitadel/cockroach-values.yaml +++ b/deployment/zitadel/cockroach-values.yaml @@ -1,2 +1,4 @@ tls: enabled: true +annotations: + argocd.argoproj.io/sync-wave: "1" \ No newline at end of file diff --git a/deployment/zitadel/secrets.yaml b/deployment/zitadel/secrets.yaml index 2dda748..a343364 100644 --- a/deployment/zitadel/secrets.yaml +++ b/deployment/zitadel/secrets.yaml @@ -3,7 +3,7 @@ kind: Secret metadata: name: zitadel-masterkey annotations: - argocd.argoproj.io/hook: PreSync + argocd.argoproj.io/sync-wave: "2" labels: secret-generator.cs.sap.com/enabled: "true" stringData: @@ -14,7 +14,7 @@ kind: Secret metadata: name: cockroach-auth annotations: - argocd.argoproj.io/hook: PreSync + argocd.argoproj.io/sync-wave: "2" labels: secret-generator.cs.sap.com/enabled: "true" stringData: diff --git a/deployment/zitadel/values.yaml b/deployment/zitadel/values.yaml index 2ad5e80..1319c16 100644 --- a/deployment/zitadel/values.yaml +++ b/deployment/zitadel/values.yaml @@ -18,7 +18,8 @@ zitadel: dbSslCaCrtSecret: db-cockroachdb-ca-secret dbSslAdminCrtSecret: db-cockroachdb-client-secret dbSslUserCrtSecret: db-cockroachdb-zitadel-secret - +annotations: + argocd.argoproj.io/sync-wave: "3" env: - name: ZITADEL_DATABASE_COCKROACH_USER_PASSWORD valueFrom: From 0226b93135e0e8262dd1872653b27a7bd7d06ada Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 12:10:52 +0100 Subject: [PATCH 27/63] update zitadel job annotation --- deployment/zitadel/cockroach-values.yaml | 3 +-- deployment/zitadel/kustomization.yaml | 11 +++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/deployment/zitadel/cockroach-values.yaml b/deployment/zitadel/cockroach-values.yaml index 8bd69cd..a5463ba 100644 --- a/deployment/zitadel/cockroach-values.yaml +++ b/deployment/zitadel/cockroach-values.yaml @@ -1,4 +1,3 @@ tls: enabled: true -annotations: - argocd.argoproj.io/sync-wave: "1" \ No newline at end of file + \ No newline at end of file diff --git a/deployment/zitadel/kustomization.yaml b/deployment/zitadel/kustomization.yaml index 9afe796..1320a5e 100644 --- a/deployment/zitadel/kustomization.yaml +++ b/deployment/zitadel/kustomization.yaml @@ -17,11 +17,18 @@ helmCharts: releaseName: zitadel version: 7.10.0 valuesFile: ./values.yaml - + patches: - target: kind: CronJob patch: | - op: replace path: /apiVersion - value: batch/v1 \ No newline at end of file + value: batch/v1 + - target: + name: zitadel-init + kind: Job + patch: | + - op: replace + path: /metadata/annotations/argocd.argoproj.io~1sync-wave + value: 3 From 91376d87de9d2381b4d24e90a985537f4384c7bb Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 12:14:31 +0100 Subject: [PATCH 28/63] update zitadel patch --- deployment/zitadel/kustomization.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/deployment/zitadel/kustomization.yaml b/deployment/zitadel/kustomization.yaml index 1320a5e..cd4f136 100644 --- a/deployment/zitadel/kustomization.yaml +++ b/deployment/zitadel/kustomization.yaml @@ -25,10 +25,17 @@ patches: - op: replace path: /apiVersion value: batch/v1 + - target: + name: zitadel-setup + kind: Job + patch: | + - op: add + path: /metadata/annotations/argocd.argoproj.io~1sync-wave + value: 3 - target: name: zitadel-init kind: Job patch: | - - op: replace + - op: add path: /metadata/annotations/argocd.argoproj.io~1sync-wave value: 3 From 13f0eea33c655fe2f9d75ed7d212b096d75f93f1 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 12:25:13 +0100 Subject: [PATCH 29/63] fix zitadel deployment phases --- deployment/zitadel/cert-job.yaml | 3 +++ deployment/zitadel/cockroach-values.yaml | 4 +++- deployment/zitadel/kustomization.yaml | 14 ++++++++++++++ deployment/zitadel/secrets.yaml | 4 ++-- deployment/zitadel/values.yaml | 3 +++ 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/deployment/zitadel/cert-job.yaml b/deployment/zitadel/cert-job.yaml index b9350fb..f5409f6 100644 --- a/deployment/zitadel/cert-job.yaml +++ b/deployment/zitadel/cert-job.yaml @@ -3,6 +3,7 @@ kind: ServiceAccount metadata: name: zitadel-cert-creator annotations: + argocd.argoproj.io/hook: Sync argocd.argoproj.io/sync-wave: "2" --- apiVersion: rbac.authorization.k8s.io/v1 @@ -19,6 +20,7 @@ kind: RoleBinding metadata: name: zitadel-cert-creator annotations: + argocd.argoproj.io/hook: Sync argocd.argoproj.io/sync-wave: "2" subjects: - kind: ServiceAccount @@ -33,6 +35,7 @@ kind: Job metadata: name: create-zitadel-cert annotations: + argocd.argoproj.io/hook: Sync argocd.argoproj.io/sync-wave: "2" spec: template: diff --git a/deployment/zitadel/cockroach-values.yaml b/deployment/zitadel/cockroach-values.yaml index a5463ba..4e231da 100644 --- a/deployment/zitadel/cockroach-values.yaml +++ b/deployment/zitadel/cockroach-values.yaml @@ -1,3 +1,5 @@ tls: enabled: true - \ No newline at end of file + +annotations: + argocd.argoproj.io/hook: Sync \ No newline at end of file diff --git a/deployment/zitadel/kustomization.yaml b/deployment/zitadel/kustomization.yaml index cd4f136..bbca7c8 100644 --- a/deployment/zitadel/kustomization.yaml +++ b/deployment/zitadel/kustomization.yaml @@ -32,6 +32,13 @@ patches: - op: add path: /metadata/annotations/argocd.argoproj.io~1sync-wave value: 3 + - target: + name: zitadel-setup + kind: Job + patch: | + - op: add + path: /metadata/annotations/argocd.argoproj.io~1hook + value: Sync - target: name: zitadel-init kind: Job @@ -39,3 +46,10 @@ patches: - op: add path: /metadata/annotations/argocd.argoproj.io~1sync-wave value: 3 + - target: + name: zitadel-init + kind: Job + patch: | + - op: add + path: /metadata/annotations/argocd.argoproj.io~1hook + value: Sync \ No newline at end of file diff --git a/deployment/zitadel/secrets.yaml b/deployment/zitadel/secrets.yaml index a343364..2dda748 100644 --- a/deployment/zitadel/secrets.yaml +++ b/deployment/zitadel/secrets.yaml @@ -3,7 +3,7 @@ kind: Secret metadata: name: zitadel-masterkey annotations: - argocd.argoproj.io/sync-wave: "2" + argocd.argoproj.io/hook: PreSync labels: secret-generator.cs.sap.com/enabled: "true" stringData: @@ -14,7 +14,7 @@ kind: Secret metadata: name: cockroach-auth annotations: - argocd.argoproj.io/sync-wave: "2" + argocd.argoproj.io/hook: PreSync labels: secret-generator.cs.sap.com/enabled: "true" stringData: diff --git a/deployment/zitadel/values.yaml b/deployment/zitadel/values.yaml index 1319c16..c59c3e0 100644 --- a/deployment/zitadel/values.yaml +++ b/deployment/zitadel/values.yaml @@ -18,8 +18,11 @@ zitadel: dbSslCaCrtSecret: db-cockroachdb-ca-secret dbSslAdminCrtSecret: db-cockroachdb-client-secret dbSslUserCrtSecret: db-cockroachdb-zitadel-secret + annotations: argocd.argoproj.io/sync-wave: "3" + argocd.argoproj.io/hook: Sync + env: - name: ZITADEL_DATABASE_COCKROACH_USER_PASSWORD valueFrom: From ac514578f39dde9e8e371ace31c2100932ab5cac Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 13:00:20 +0100 Subject: [PATCH 30/63] Add init annotations to cockroachdb --- deployment/zitadel/cert-job.yaml | 9 +++------ deployment/zitadel/cockroach-values.yaml | 8 ++++++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/deployment/zitadel/cert-job.yaml b/deployment/zitadel/cert-job.yaml index f5409f6..f6463fa 100644 --- a/deployment/zitadel/cert-job.yaml +++ b/deployment/zitadel/cert-job.yaml @@ -3,8 +3,7 @@ kind: ServiceAccount metadata: name: zitadel-cert-creator annotations: - argocd.argoproj.io/hook: Sync - argocd.argoproj.io/sync-wave: "2" + argocd.argoproj.io/hook: PreSync --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -20,8 +19,7 @@ kind: RoleBinding metadata: name: zitadel-cert-creator annotations: - argocd.argoproj.io/hook: Sync - argocd.argoproj.io/sync-wave: "2" + argocd.argoproj.io/hook: PreSync subjects: - kind: ServiceAccount name: zitadel-cert-creator @@ -35,8 +33,7 @@ kind: Job metadata: name: create-zitadel-cert annotations: - argocd.argoproj.io/hook: Sync - argocd.argoproj.io/sync-wave: "2" + argocd.argoproj.io/hook: PreSync spec: template: spec: diff --git a/deployment/zitadel/cockroach-values.yaml b/deployment/zitadel/cockroach-values.yaml index 4e231da..41ee51b 100644 --- a/deployment/zitadel/cockroach-values.yaml +++ b/deployment/zitadel/cockroach-values.yaml @@ -1,5 +1,9 @@ tls: enabled: true - + annotations: - argocd.argoproj.io/hook: Sync \ No newline at end of file + argocd.argoproj.io/hook: Sync + +init: + jobAnnotations: + argocd.argoproj.io/hook: Sync \ No newline at end of file From b7eaa44d2606a4438c974d42eb3bd145e3d5923a Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 13:03:06 +0100 Subject: [PATCH 31/63] put certjob to sync phase --- deployment/zitadel/cert-job.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/deployment/zitadel/cert-job.yaml b/deployment/zitadel/cert-job.yaml index f6463fa..f5409f6 100644 --- a/deployment/zitadel/cert-job.yaml +++ b/deployment/zitadel/cert-job.yaml @@ -3,7 +3,8 @@ kind: ServiceAccount metadata: name: zitadel-cert-creator annotations: - argocd.argoproj.io/hook: PreSync + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/sync-wave: "2" --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -19,7 +20,8 @@ kind: RoleBinding metadata: name: zitadel-cert-creator annotations: - argocd.argoproj.io/hook: PreSync + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/sync-wave: "2" subjects: - kind: ServiceAccount name: zitadel-cert-creator @@ -33,7 +35,8 @@ kind: Job metadata: name: create-zitadel-cert annotations: - argocd.argoproj.io/hook: PreSync + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/sync-wave: "2" spec: template: spec: From 28395c28594f8e3e5e9b6d92c62656351e455296 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 13:31:41 +0100 Subject: [PATCH 32/63] set namespace for zitadel kustomize --- deployment/zitadel/kustomization.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/zitadel/kustomization.yaml b/deployment/zitadel/kustomization.yaml index bbca7c8..76baab7 100644 --- a/deployment/zitadel/kustomization.yaml +++ b/deployment/zitadel/kustomization.yaml @@ -1,5 +1,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization +namespace: generations-heritage resources: - ./cert-job.yaml From 16457111cdcb300d824084cd2bf51bd0f70a25ef Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 13:40:45 +0100 Subject: [PATCH 33/63] fix namespace issue once and for all --- deployment/zitadel/kustomization.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deployment/zitadel/kustomization.yaml b/deployment/zitadel/kustomization.yaml index 76baab7..db80782 100644 --- a/deployment/zitadel/kustomization.yaml +++ b/deployment/zitadel/kustomization.yaml @@ -11,11 +11,13 @@ helmCharts: - name: cockroachdb repo: https://charts.cockroachdb.com/ releaseName: cockroachdb + namespace: generations-heritage version: 12.0.2 valuesFile: cockroach-values.yaml - name: zitadel repo: https://charts.zitadel.com releaseName: zitadel + namespace: generations-heritage version: 7.10.0 valuesFile: ./values.yaml From cc9fbd42dae2b7e9af30494f5892c7fbc6c02dd4 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 13:45:48 +0100 Subject: [PATCH 34/63] fix secret mount for zitadel cert-job --- deployment/zitadel/cert-job.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/zitadel/cert-job.yaml b/deployment/zitadel/cert-job.yaml index f5409f6..7fe8f61 100644 --- a/deployment/zitadel/cert-job.yaml +++ b/deployment/zitadel/cert-job.yaml @@ -110,4 +110,4 @@ spec: - key: ca.key mode: 256 path: ca.key - name: db-cockroachdb-ca-secret + name: cockroachdb-ca-secret From 303c5822179b1ecadb915e672b22fa9ef3bdf2b8 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 13:48:55 +0100 Subject: [PATCH 35/63] fix zitadel values secret mount --- deployment/zitadel/values.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/zitadel/values.yaml b/deployment/zitadel/values.yaml index c59c3e0..5424ce8 100644 --- a/deployment/zitadel/values.yaml +++ b/deployment/zitadel/values.yaml @@ -15,8 +15,8 @@ zitadel: SSL: Mode: verify-full - dbSslCaCrtSecret: db-cockroachdb-ca-secret - dbSslAdminCrtSecret: db-cockroachdb-client-secret + dbSslCaCrtSecret: cockroachdb-ca-secret + dbSslAdminCrtSecret: cockroachdb-client-secret dbSslUserCrtSecret: db-cockroachdb-zitadel-secret annotations: From 518f86caa453eb63ee5bfa4130cafe6c5db9563f Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 13:55:22 +0100 Subject: [PATCH 36/63] correct zitadel db url --- deployment/zitadel/kustomization.yaml | 2 +- deployment/zitadel/values.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deployment/zitadel/kustomization.yaml b/deployment/zitadel/kustomization.yaml index db80782..98b84f0 100644 --- a/deployment/zitadel/kustomization.yaml +++ b/deployment/zitadel/kustomization.yaml @@ -34,7 +34,7 @@ patches: patch: | - op: add path: /metadata/annotations/argocd.argoproj.io~1sync-wave - value: 3 + value: 4 - target: name: zitadel-setup kind: Job diff --git a/deployment/zitadel/values.yaml b/deployment/zitadel/values.yaml index 5424ce8..73d6644 100644 --- a/deployment/zitadel/values.yaml +++ b/deployment/zitadel/values.yaml @@ -7,7 +7,7 @@ zitadel: Enabled: false Database: Cockroach: - Host: db-cockroachdb-public + Host: cockroachdb-public User: SSL: Mode: verify-full @@ -20,7 +20,7 @@ zitadel: dbSslUserCrtSecret: db-cockroachdb-zitadel-secret annotations: - argocd.argoproj.io/sync-wave: "3" + argocd.argoproj.io/sync-wave: "5" argocd.argoproj.io/hook: Sync env: From 2492b94be8bf4f88d665cef487207cc954554b83 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 14:45:09 +0100 Subject: [PATCH 37/63] zitadel ingress port --- deployment/zitadel/ingressRoute.yaml | 1 + deployment/zitadel/values.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/deployment/zitadel/ingressRoute.yaml b/deployment/zitadel/ingressRoute.yaml index e47f086..3f94ef8 100644 --- a/deployment/zitadel/ingressRoute.yaml +++ b/deployment/zitadel/ingressRoute.yaml @@ -13,4 +13,5 @@ spec: match: Host(`heritage.varghacsongor.hu`) && Path(`/login`) services: - name: zitadel + port: 8080 tls: {} \ No newline at end of file diff --git a/deployment/zitadel/values.yaml b/deployment/zitadel/values.yaml index 73d6644..35ddaa6 100644 --- a/deployment/zitadel/values.yaml +++ b/deployment/zitadel/values.yaml @@ -1,7 +1,7 @@ zitadel: masterkeySecretName: zitadel-masterkey configmapConfig: - ExternalSecure: false + ExternalSecure: true ExternalDomain: heritage.varghacsongor.hu TLS: Enabled: false From e89b1638d953f310424f6bf284b43353b68241ba Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 14:59:17 +0100 Subject: [PATCH 38/63] extend zitadel ingressroute, modify rule to be root path on domain --- deployment/zitadel/ingressRoute.yaml | 12 +++++++++++- deployment/zitadel/values.yaml | 3 ++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/deployment/zitadel/ingressRoute.yaml b/deployment/zitadel/ingressRoute.yaml index 3f94ef8..372d697 100644 --- a/deployment/zitadel/ingressRoute.yaml +++ b/deployment/zitadel/ingressRoute.yaml @@ -10,8 +10,18 @@ spec: - websecure routes: - kind: Rule - match: Host(`heritage.varghacsongor.hu`) && Path(`/login`) + match: Host(`zitadel.heritage.varghacsongor.hu`) + priority: 10 services: - name: zitadel port: 8080 + passHostHeader: true + - kind: Rule + match: Host(`zitadel.heritage.varghacsongor.hu`) && Headers(`Content-Type`, `application/grpc`) + priority: 11 + services: + - name: zitadel + port: 8080 + scheme: h2c + passHostHeader: true tls: {} \ No newline at end of file diff --git a/deployment/zitadel/values.yaml b/deployment/zitadel/values.yaml index 35ddaa6..d0bee73 100644 --- a/deployment/zitadel/values.yaml +++ b/deployment/zitadel/values.yaml @@ -2,7 +2,8 @@ zitadel: masterkeySecretName: zitadel-masterkey configmapConfig: ExternalSecure: true - ExternalDomain: heritage.varghacsongor.hu + ExternalDomain: zitadel.heritage.varghacsongor.hu + ExternalPort: 443 TLS: Enabled: false Database: From a0233fdc2d6ca6e6b46e97db54e6f10b6630b49c Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 15:34:01 +0100 Subject: [PATCH 39/63] swithc zitadel to simple subdomain --- deployment/zitadel/ingressRoute.yaml | 4 ++-- deployment/zitadel/values.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deployment/zitadel/ingressRoute.yaml b/deployment/zitadel/ingressRoute.yaml index 372d697..715cf9f 100644 --- a/deployment/zitadel/ingressRoute.yaml +++ b/deployment/zitadel/ingressRoute.yaml @@ -10,14 +10,14 @@ spec: - websecure routes: - kind: Rule - match: Host(`zitadel.heritage.varghacsongor.hu`) + match: Host(`zitadel.varghacsongor.hu`) priority: 10 services: - name: zitadel port: 8080 passHostHeader: true - kind: Rule - match: Host(`zitadel.heritage.varghacsongor.hu`) && Headers(`Content-Type`, `application/grpc`) + match: Host(`zitadel.varghacsongor.hu`) && Headers(`Content-Type`, `application/grpc`) priority: 11 services: - name: zitadel diff --git a/deployment/zitadel/values.yaml b/deployment/zitadel/values.yaml index d0bee73..08b9052 100644 --- a/deployment/zitadel/values.yaml +++ b/deployment/zitadel/values.yaml @@ -2,7 +2,7 @@ zitadel: masterkeySecretName: zitadel-masterkey configmapConfig: ExternalSecure: true - ExternalDomain: zitadel.heritage.varghacsongor.hu + ExternalDomain: zitadel.varghacsongor.hu ExternalPort: 443 TLS: Enabled: false From d533738a327f7bdfc20aa81e61353f08ce35ebde Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 16 Mar 2024 19:35:28 +0100 Subject: [PATCH 40/63] add first instance admin --- deployment/zitadel/secrets.yaml | 3 ++- deployment/zitadel/values.yaml | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/deployment/zitadel/secrets.yaml b/deployment/zitadel/secrets.yaml index 2dda748..3faf188 100644 --- a/deployment/zitadel/secrets.yaml +++ b/deployment/zitadel/secrets.yaml @@ -8,6 +8,7 @@ metadata: secret-generator.cs.sap.com/enabled: "true" stringData: masterkey: "%generate" + admin-password: "%generate" --- apiVersion: v1 kind: Secret @@ -19,4 +20,4 @@ metadata: secret-generator.cs.sap.com/enabled: "true" stringData: cockroach-password: "%generate" - user-password: "%generate" \ No newline at end of file + user-password: "%generate" diff --git a/deployment/zitadel/values.yaml b/deployment/zitadel/values.yaml index 08b9052..a0060f4 100644 --- a/deployment/zitadel/values.yaml +++ b/deployment/zitadel/values.yaml @@ -25,6 +25,15 @@ annotations: argocd.argoproj.io/hook: Sync env: + - name: ZITADEL_FIRSTINSTANCE_ORG_HUMAN_USERNAME + value: "admin" + + - name: ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD + valueFrom: + secretKeyRef: + name: zitadel-masterkey + key: admin-password + - name: ZITADEL_DATABASE_COCKROACH_USER_PASSWORD valueFrom: secretKeyRef: From 4199d65d6cf408f9152959f2be2149f985a5ebdf Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 17 Mar 2024 11:11:46 +0100 Subject: [PATCH 41/63] lint --- deployment/zitadel/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/zitadel/values.yaml b/deployment/zitadel/values.yaml index a0060f4..0db5d4c 100644 --- a/deployment/zitadel/values.yaml +++ b/deployment/zitadel/values.yaml @@ -20,7 +20,7 @@ zitadel: dbSslAdminCrtSecret: cockroachdb-client-secret dbSslUserCrtSecret: db-cockroachdb-zitadel-secret -annotations: +annotations: argocd.argoproj.io/sync-wave: "5" argocd.argoproj.io/hook: Sync From 0aad11b1d6d3d8d66a28c0ebf50a7604262c07c2 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 17 Mar 2024 12:41:50 +0100 Subject: [PATCH 42/63] memgraph deployment --- deployment/memgraph/certifacates.yaml | 22 +++++++++++ deployment/memgraph/kustomization.yaml | 30 +++++++++++++++ deployment/memgraph/values.yaml | 52 ++++++++++++++++++++++++++ 3 files changed, 104 insertions(+) create mode 100644 deployment/memgraph/certifacates.yaml create mode 100644 deployment/memgraph/kustomization.yaml create mode 100644 deployment/memgraph/values.yaml diff --git a/deployment/memgraph/certifacates.yaml b/deployment/memgraph/certifacates.yaml new file mode 100644 index 0000000..85b1f4f --- /dev/null +++ b/deployment/memgraph/certifacates.yaml @@ -0,0 +1,22 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: memraph-certificate + annotations: + argocd.argoproj.io/hook: PreSync +spec: + isCA: false + duration: 2160h # 90d + renewBefore: 360h # 15d + subject: + organizations: + - jetstack + secretName: memgraph-tls + privateKey: + algorithm: RSA + encoding: PKCS1 + size: 2048 + issuerRef: + name: default-cluster-ca-issuer + kind: ClusterIssuer + group: cert-manager.io \ No newline at end of file diff --git a/deployment/memgraph/kustomization.yaml b/deployment/memgraph/kustomization.yaml new file mode 100644 index 0000000..7d87176 --- /dev/null +++ b/deployment/memgraph/kustomization.yaml @@ -0,0 +1,30 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: generations-heritage + +helmCharts: + - name: memgraph + repo: https://memgraph.github.io/helm-charts + releaseName: memgraph + namespace: generations-heritage + version: 0.1.1 + valuesFile: ./values.yaml + +patches: + - target: + kind: StatefulSet + name: memgraph + patch: |- + - op: add + path: /spec/template/spec/containers/0/volumeMounts/- + value: + name: memgraph-certs + mountPath: /etc/memgraph/ssl + - op: add + path: /spec/template/spec/volumes/- + value: + name: memgraph-certs + secret: + secretName: memgraph-tls + + \ No newline at end of file diff --git a/deployment/memgraph/values.yaml b/deployment/memgraph/values.yaml new file mode 100644 index 0000000..2d39dba --- /dev/null +++ b/deployment/memgraph/values.yaml @@ -0,0 +1,52 @@ +image: + repository: memgraph/memgraph + # Overrides the image tag whose default is v{{ .Chart.AppVersion }} + tag: "" + pullPolicy: IfNotPresent + +replicaCount: 1 + +service: + type: ClusterIP + port: 7687 + targetPort: 7687 + protocol: TCP + annotations: {} + +persistentVolumeClaim: + storagePVC: true + storagePVCSize: 2Gi + logPVC: true + logPVCSize: 256Mi + +memgraphConfig: + - "--also-log-to-stderr=true" + - "--bolt-cert-file=/etc/memgraph/ssl/tls.crt" + - "--bolt-key-file=/etc/memgraph/ssl/tls.key" + +# Annotations to add to the statefulSet +statefulSetAnnotations: {} +# Annotations to add to the Pod +podAnnotations: {} + +resources: + {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" \ No newline at end of file From a78161d389e52768897b1394eec2239b3460173f Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 17 Mar 2024 12:44:05 +0100 Subject: [PATCH 43/63] Add certificates.yaml to kustomize (memgraph) --- deployment/memgraph/kustomization.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/deployment/memgraph/kustomization.yaml b/deployment/memgraph/kustomization.yaml index 7d87176..051d667 100644 --- a/deployment/memgraph/kustomization.yaml +++ b/deployment/memgraph/kustomization.yaml @@ -2,6 +2,9 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: generations-heritage +resources: + - ./certificates.yaml + helmCharts: - name: memgraph repo: https://memgraph.github.io/helm-charts From b06cfcaf692c4d7c22376e32461e7f632b3d1dac Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 17 Mar 2024 12:45:41 +0100 Subject: [PATCH 44/63] fix type certificates --- deployment/memgraph/{certifacates.yaml => certificates.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename deployment/memgraph/{certifacates.yaml => certificates.yaml} (100%) diff --git a/deployment/memgraph/certifacates.yaml b/deployment/memgraph/certificates.yaml similarity index 100% rename from deployment/memgraph/certifacates.yaml rename to deployment/memgraph/certificates.yaml From a88550f8cdb6d8c89189f4f509e94f022d2708eb Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 17 Mar 2024 13:03:04 +0100 Subject: [PATCH 45/63] add dns to memegraph certificates --- deployment/memgraph/certificates.yaml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/deployment/memgraph/certificates.yaml b/deployment/memgraph/certificates.yaml index 85b1f4f..26a60ef 100644 --- a/deployment/memgraph/certificates.yaml +++ b/deployment/memgraph/certificates.yaml @@ -8,9 +8,13 @@ spec: isCA: false duration: 2160h # 90d renewBefore: 360h # 15d + dnsNames: + - memgraph.generations-heritage.svc.cluster.local + - memgraph subject: organizations: - - jetstack + - Memgraph + - GenerationsHeritage secretName: memgraph-tls privateKey: algorithm: RSA @@ -19,4 +23,5 @@ spec: issuerRef: name: default-cluster-ca-issuer kind: ClusterIssuer - group: cert-manager.io \ No newline at end of file + group: cert-manager.io + \ No newline at end of file From 608b0e3fb27c10b3fff2c8a2ae894d5e777930c2 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 17 Mar 2024 15:43:57 +0100 Subject: [PATCH 46/63] add localhost to accepted endpoints in ca --- deployment/memgraph/certificates.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/deployment/memgraph/certificates.yaml b/deployment/memgraph/certificates.yaml index 26a60ef..c6dafa6 100644 --- a/deployment/memgraph/certificates.yaml +++ b/deployment/memgraph/certificates.yaml @@ -11,6 +11,9 @@ spec: dnsNames: - memgraph.generations-heritage.svc.cluster.local - memgraph + - localhost + ipAddresses: + - 127.0.0.1 subject: organizations: - Memgraph From 2e720c326a02ea45102e65b2dd6b964f463043ed Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 17 Mar 2024 16:15:28 +0100 Subject: [PATCH 47/63] remove zitadel deploy (It is done by argocd) --- .github/workflows/deploy_zitadel.yml | 46 ---------------------------- 1 file changed, 46 deletions(-) delete mode 100644 .github/workflows/deploy_zitadel.yml diff --git a/.github/workflows/deploy_zitadel.yml b/.github/workflows/deploy_zitadel.yml deleted file mode 100644 index 0fac1fc..0000000 --- a/.github/workflows/deploy_zitadel.yml +++ /dev/null @@ -1,46 +0,0 @@ - name: Deploy Zitadel to Kubernetes -on: - push: -# branches: -# - main - paths: - - 'deployment/zitadel_values.yaml' - - '.github/workflows/deploy_zitadel.yml' - -jobs: - deployment: - name: Deploy Zitadel to Kubernetes - runs-on: 'ubuntu-latest' - steps: - - uses: actions/checkout@v4 - name: Checkout - - name: Deploy to Kubernetes - uses: actions-hub/kubectl@master - env: - KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} - with: - args: apply -f deployment/certs-job.yaml - - - name: 'Deploy Database' - uses: 'vimeda/helm@v1' - with: - release: 'database' - repo: 'https://charts.zitadel.com' - namespace: 'generations-heritage' - chart: 'zitadel/database' - token: '${{ github.token }}' - value-files: "deployment/database_values.yaml" - env: - KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' - - - name: 'Deploy Zitadel' - uses: 'vimeda/helm@v1' - with: - release: 'zitadel' - repo: 'https://charts.zitadel.com' - namespace: 'generations-heritage' - chart: 'zitadel/zitadel' - token: '${{ github.token }}' - value-files: "deployment/zitadel_values.yaml" - env: - KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}' \ No newline at end of file From 26c227c06285f0f73b61ebd11e7d93a0b027db83 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 17 Mar 2024 16:59:09 +0100 Subject: [PATCH 48/63] auth service deployment --- deployment/auth-service/certificate.yaml | 29 +++++++++++ deployment/auth-service/deployment.yaml | 50 +++++++++++++++++++ .../auth-service/horizontalPodAutoScaler.yaml | 26 ++++++++++ deployment/auth-service/service.yaml | 17 +++++++ 4 files changed, 122 insertions(+) create mode 100644 deployment/auth-service/certificate.yaml create mode 100644 deployment/auth-service/deployment.yaml create mode 100644 deployment/auth-service/horizontalPodAutoScaler.yaml create mode 100644 deployment/auth-service/service.yaml diff --git a/deployment/auth-service/certificate.yaml b/deployment/auth-service/certificate.yaml new file mode 100644 index 0000000..2e4a060 --- /dev/null +++ b/deployment/auth-service/certificate.yaml @@ -0,0 +1,29 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: gh-auth-service-certificate + annotations: + argocd.argoproj.io/hook: PreSync +spec: + isCA: false + duration: 2160h # 90d + renewBefore: 360h # 15d + dnsNames: + - gh-auth-service.generations-heritage.svc.cluster.local + - gh-auth-service + - localhost + ipAddresses: + - 127.0.0.1 + subject: + organizations: + - GenerationsHeritage + secretName: gh-auth-service-tls + privateKey: + algorithm: RSA + encoding: PKCS1 + size: 2048 + issuerRef: + name: default-cluster-ca-issuer + kind: ClusterIssuer + group: cert-manager.io + \ No newline at end of file diff --git a/deployment/auth-service/deployment.yaml b/deployment/auth-service/deployment.yaml new file mode 100644 index 0000000..7461017 --- /dev/null +++ b/deployment/auth-service/deployment.yaml @@ -0,0 +1,50 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/instance: gh-auth-service + app.kubernetes.io/name: gh-auth-service + annotations: + argocd.argoproj.io/sync-wave: "1" + argocd.argoproj.io/hook: Synce + name: gh-auth-service + namespace: generations-heritage +spec: + podManagementPolicy: OrderedReady + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: gh-auth-service + app.kubernetes.io/name: gh-auth-service + serviceName: gh-auth-service + template: + metadata: + labels: + app.kubernetes.io/instance: gh-auth-service + app.kubernetes.io/name: gh-auth-service + spec: + containers: + - image: vcscsvcscs/gheritage-auth-service:latest + imagePullPolicy: Always + name: gh-auth-service + ports: + - containerPort: 443 + name: gin + securityContext: + runAsUser: 0 + resources: + limits: + cpu: 250m + memory: 200Mi + requests: + cpu: 100m + memory: 50Mi + volumeMounts: + - name: gh-auth-service-certs + mountPath: /etc/gh-auth-service/ssl + volumes: + - name: gh-auth-service-certs + secret: + secretName: gh-auth-service-tls + updateStrategy: + type: RollingUpdate \ No newline at end of file diff --git a/deployment/auth-service/horizontalPodAutoScaler.yaml b/deployment/auth-service/horizontalPodAutoScaler.yaml new file mode 100644 index 0000000..413e418 --- /dev/null +++ b/deployment/auth-service/horizontalPodAutoScaler.yaml @@ -0,0 +1,26 @@ +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: gh-auth-service + annotations: + argocd.argoproj.io/hook: PostSync +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: gh-auth-service + minReplicas: 1 + maxReplicas: 5 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 50 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 50 diff --git a/deployment/auth-service/service.yaml b/deployment/auth-service/service.yaml new file mode 100644 index 0000000..8239fec --- /dev/null +++ b/deployment/auth-service/service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: gh-auth-service + app.kubernetes.io/name: gh-auth-service + name: gh-auth-service +spec: + ports: + - name: gin + port: 443 + protocol: TCP + targetPort: 443 + selector: + app.kubernetes.io/instance: gh-auth-service + app.kubernetes.io/name: gh-auth-service + type: ClusterIP \ No newline at end of file From 2e718c06f636f7e5c10a6dab7c38b81189de46f8 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 17 Mar 2024 16:59:32 +0100 Subject: [PATCH 49/63] backend deployment --- deployment/backend/certificate.yaml | 29 +++++++++++ deployment/backend/deployment.yaml | 50 +++++++++++++++++++ .../backend/horizontalPodAutoScaler.yaml | 26 ++++++++++ deployment/backend/ingressRoute.yaml | 19 +++++++ deployment/backend/service.yaml | 20 ++++++++ 5 files changed, 144 insertions(+) create mode 100644 deployment/backend/certificate.yaml create mode 100644 deployment/backend/deployment.yaml create mode 100644 deployment/backend/horizontalPodAutoScaler.yaml create mode 100644 deployment/backend/ingressRoute.yaml create mode 100644 deployment/backend/service.yaml diff --git a/deployment/backend/certificate.yaml b/deployment/backend/certificate.yaml new file mode 100644 index 0000000..8d288d2 --- /dev/null +++ b/deployment/backend/certificate.yaml @@ -0,0 +1,29 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: gh-backend-certificate + annotations: + argocd.argoproj.io/hook: PreSync +spec: + isCA: false + duration: 2160h # 90d + renewBefore: 360h # 15d + dnsNames: + - gh-backend.generations-heritage.svc.cluster.local + - gh-backend + - localhost + ipAddresses: + - 127.0.0.1 + subject: + organizations: + - GenerationsHeritage + secretName: gh-backend-tls + privateKey: + algorithm: RSA + encoding: PKCS1 + size: 2048 + issuerRef: + name: default-cluster-ca-issuer + kind: ClusterIssuer + group: cert-manager.io + \ No newline at end of file diff --git a/deployment/backend/deployment.yaml b/deployment/backend/deployment.yaml new file mode 100644 index 0000000..e706e27 --- /dev/null +++ b/deployment/backend/deployment.yaml @@ -0,0 +1,50 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/instance: gh-backend + app.kubernetes.io/name: gh-backend + annotations: + argocd.argoproj.io/sync-wave: "1" + argocd.argoproj.io/hook: Synce + name: gh-backend + namespace: generations-heritage +spec: + podManagementPolicy: OrderedReady + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: gh-backend + app.kubernetes.io/name: gh-backend + serviceName: gh-backend + template: + metadata: + labels: + app.kubernetes.io/instance: gh-backend + app.kubernetes.io/name: gh-backend + spec: + containers: + - image: vcscsvcscs/gheritage-backend-service:latest + imagePullPolicy: Always + name: gh-backend + ports: + - containerPort: 443 + name: gin + securityContext: + runAsUser: 0 + resources: + limits: + cpu: 500m + memory: 500Mi + requests: + cpu: 100m + memory: 100Mi + volumeMounts: + - name: gh-backend-certs + mountPath: /etc/gh-backend/ssl + volumes: + - name: gh-backend-certs + secret: + secretName: gh-backend-tls + updateStrategy: + type: RollingUpdate \ No newline at end of file diff --git a/deployment/backend/horizontalPodAutoScaler.yaml b/deployment/backend/horizontalPodAutoScaler.yaml new file mode 100644 index 0000000..ef131b6 --- /dev/null +++ b/deployment/backend/horizontalPodAutoScaler.yaml @@ -0,0 +1,26 @@ +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: gh-backend + annotations: + argocd.argoproj.io/hook: PostSync +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: gh-backend + minReplicas: 1 + maxReplicas: 5 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 50 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 50 diff --git a/deployment/backend/ingressRoute.yaml b/deployment/backend/ingressRoute.yaml new file mode 100644 index 0000000..90803f7 --- /dev/null +++ b/deployment/backend/ingressRoute.yaml @@ -0,0 +1,19 @@ +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: gh-backend + annotations: + argocd.argoproj.io/hook: PostSync +spec: + entryPoints: + - websecure + routes: + - kind: Rule + match: Host(`heritagebackend.varghacsongor.hu`) + services: + - name: gh-backend + port: 443 + passHostHeader: true + scheme: https + tls: {} \ No newline at end of file diff --git a/deployment/backend/service.yaml b/deployment/backend/service.yaml new file mode 100644 index 0000000..10b9abb --- /dev/null +++ b/deployment/backend/service.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: gh-backend + app.kubernetes.io/name: gh-backend + name: gh-backend + annotations: + argocd.argoproj.io/sync-wave: "2" + argocd.argoproj.io/hook: Synce +spec: + ports: + - name: gin + port: 443 + protocol: TCP + targetPort: 443 + selector: + app.kubernetes.io/instance: gh-backend + app.kubernetes.io/name: gh-backend + type: ClusterIP \ No newline at end of file From 723c108ec41d542c22b83f404b4cf2c514f3fba1 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 18 Mar 2024 20:32:00 +0100 Subject: [PATCH 50/63] rename hpas to use snake case for trial error --- ...rizontalPodAutoScaler.yaml => horizontal_pod_auto_scaler.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename deployment/backend/{horizontalPodAutoScaler.yaml => horizontal_pod_auto_scaler.yaml} (100%) diff --git a/deployment/backend/horizontalPodAutoScaler.yaml b/deployment/backend/horizontal_pod_auto_scaler.yaml similarity index 100% rename from deployment/backend/horizontalPodAutoScaler.yaml rename to deployment/backend/horizontal_pod_auto_scaler.yaml From 8bf6027e42890567bb808c31d116cf1882f8092e Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Mon, 18 Mar 2024 22:21:29 +0100 Subject: [PATCH 51/63] Add argo files and kustomize --- deployment/auth-service-argo.yaml | 22 +++++++++++++++++++ deployment/auth-service/deployment.yaml | 2 +- deployment/auth-service/kustomization.yaml | 9 ++++++++ deployment/backend-argo.yaml | 22 +++++++++++++++++++ deployment/backend/deployment.yaml | 1 - ...aler.yaml => horizontalPodAutoScaler.yaml} | 0 deployment/backend/kustomization.yaml | 10 +++++++++ deployment/backend/service.yaml | 2 +- deployment/memgraph-argo.yaml | 22 +++++++++++++++++++ deployment/zitadel-argo.yaml | 22 +++++++++++++++++++ kustomization.yaml | 9 ++++++++ 11 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 deployment/auth-service-argo.yaml create mode 100644 deployment/auth-service/kustomization.yaml create mode 100644 deployment/backend-argo.yaml rename deployment/backend/{horizontal_pod_auto_scaler.yaml => horizontalPodAutoScaler.yaml} (100%) create mode 100644 deployment/backend/kustomization.yaml create mode 100644 deployment/memgraph-argo.yaml create mode 100644 deployment/zitadel-argo.yaml create mode 100644 kustomization.yaml diff --git a/deployment/auth-service-argo.yaml b/deployment/auth-service-argo.yaml new file mode 100644 index 0000000..8ee6493 --- /dev/null +++ b/deployment/auth-service-argo.yaml @@ -0,0 +1,22 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: auth-service +spec: + project: generations-heritage-vv + source: + repoURL: 'https://github.com/vcscsvcscs/GenerationsHeritage' + path: deployment/auth-service + targetRevision: feature/create-kubernetes-deployments + kustomize: + namespace: generations-heritage + destination: + server: 'https://kubernetes.default.svc' + namespace: generations-heritage + syncPolicy: + automated: + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true + \ No newline at end of file diff --git a/deployment/auth-service/deployment.yaml b/deployment/auth-service/deployment.yaml index 7461017..bbb8b4f 100644 --- a/deployment/auth-service/deployment.yaml +++ b/deployment/auth-service/deployment.yaml @@ -47,4 +47,4 @@ spec: secret: secretName: gh-auth-service-tls updateStrategy: - type: RollingUpdate \ No newline at end of file + type: RollingUpdate diff --git a/deployment/auth-service/kustomization.yaml b/deployment/auth-service/kustomization.yaml new file mode 100644 index 0000000..9f8832a --- /dev/null +++ b/deployment/auth-service/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: generations-heritage + +resources: + - ./certificate.yaml + - ./deployment.yaml + - ./service.yaml + - ./horizontalPodAutoScaler.yaml diff --git a/deployment/backend-argo.yaml b/deployment/backend-argo.yaml new file mode 100644 index 0000000..b6ab2e0 --- /dev/null +++ b/deployment/backend-argo.yaml @@ -0,0 +1,22 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: backend +spec: + project: generations-heritage-vv + source: + repoURL: 'https://github.com/vcscsvcscs/GenerationsHeritage' + path: deployment/backend + targetRevision: feature/create-kubernetes-deployments + kustomize: + namespace: generations-heritage + destination: + server: 'https://kubernetes.default.svc' + namespace: generations-heritage + syncPolicy: + automated: + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true + \ No newline at end of file diff --git a/deployment/backend/deployment.yaml b/deployment/backend/deployment.yaml index e706e27..98ec75c 100644 --- a/deployment/backend/deployment.yaml +++ b/deployment/backend/deployment.yaml @@ -8,7 +8,6 @@ metadata: argocd.argoproj.io/sync-wave: "1" argocd.argoproj.io/hook: Synce name: gh-backend - namespace: generations-heritage spec: podManagementPolicy: OrderedReady replicas: 1 diff --git a/deployment/backend/horizontal_pod_auto_scaler.yaml b/deployment/backend/horizontalPodAutoScaler.yaml similarity index 100% rename from deployment/backend/horizontal_pod_auto_scaler.yaml rename to deployment/backend/horizontalPodAutoScaler.yaml diff --git a/deployment/backend/kustomization.yaml b/deployment/backend/kustomization.yaml new file mode 100644 index 0000000..e9f8c72 --- /dev/null +++ b/deployment/backend/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: generations-heritage + +resources: + - ./certificate.yaml + - ./deployment.yaml + - ./service.yaml + - ./ingressRoute.yaml + - ./horizontalPodAutoScaler.yaml diff --git a/deployment/backend/service.yaml b/deployment/backend/service.yaml index 10b9abb..23d3ff6 100644 --- a/deployment/backend/service.yaml +++ b/deployment/backend/service.yaml @@ -17,4 +17,4 @@ spec: selector: app.kubernetes.io/instance: gh-backend app.kubernetes.io/name: gh-backend - type: ClusterIP \ No newline at end of file + type: ClusterIP diff --git a/deployment/memgraph-argo.yaml b/deployment/memgraph-argo.yaml new file mode 100644 index 0000000..3ebbf74 --- /dev/null +++ b/deployment/memgraph-argo.yaml @@ -0,0 +1,22 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: memgraph +spec: + project: generations-heritage-vv + source: + repoURL: 'https://github.com/vcscsvcscs/GenerationsHeritage' + path: deployment/memgraph + targetRevision: feature/create-kubernetes-deployments + kustomize: + namespace: generations-heritage + destination: + server: 'https://kubernetes.default.svc' + namespace: generations-heritage + syncPolicy: + automated: + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true + \ No newline at end of file diff --git a/deployment/zitadel-argo.yaml b/deployment/zitadel-argo.yaml new file mode 100644 index 0000000..4651ded --- /dev/null +++ b/deployment/zitadel-argo.yaml @@ -0,0 +1,22 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: zitadel +spec: + project: generations-heritage-vv + source: + repoURL: 'https://github.com/vcscsvcscs/GenerationsHeritage' + path: deployment/zitadel + targetRevision: feature/create-kubernetes-deployments + kustomize: + namespace: generations-heritage + destination: + server: 'https://kubernetes.default.svc' + namespace: generations-heritage + syncPolicy: + automated: + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true + \ No newline at end of file diff --git a/kustomization.yaml b/kustomization.yaml new file mode 100644 index 0000000..44b5d4c --- /dev/null +++ b/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: generations-heritage + +resources: + - ./deployment/auth-service-argo.yaml + - ./deployment/memgraph-argo.yaml + - ./deployment/backend-argo.yaml + - ./deployment/zitadel-argo.yaml From 2ba61b085485c2b027c3c0786012b5479e638444 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Wed, 20 Mar 2024 12:57:17 +0100 Subject: [PATCH 52/63] fix namespace for argo deployment --- kustomization.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kustomization.yaml b/kustomization.yaml index 44b5d4c..c9cb871 100644 --- a/kustomization.yaml +++ b/kustomization.yaml @@ -1,6 +1,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -namespace: generations-heritage +namespace: argocd resources: - ./deployment/auth-service-argo.yaml From a1e14f0a7bd6b977c89615716d3bb53458a21906 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Wed, 20 Mar 2024 12:57:38 +0100 Subject: [PATCH 53/63] remove update strategy from deployment.yaml --- deployment/backend/deployment.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/deployment/backend/deployment.yaml b/deployment/backend/deployment.yaml index 98ec75c..5ac8958 100644 --- a/deployment/backend/deployment.yaml +++ b/deployment/backend/deployment.yaml @@ -45,5 +45,4 @@ spec: - name: gh-backend-certs secret: secretName: gh-backend-tls - updateStrategy: - type: RollingUpdate \ No newline at end of file + \ No newline at end of file From ab007395bc38fc1389b35dbb6605f479289bc7e9 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Wed, 20 Mar 2024 13:09:13 +0100 Subject: [PATCH 54/63] fix deployments for backend and auth-service --- deployment/auth-service/deployment.yaml | 10 +++------- deployment/backend/deployment.yaml | 9 +++------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/deployment/auth-service/deployment.yaml b/deployment/auth-service/deployment.yaml index bbb8b4f..4305954 100644 --- a/deployment/auth-service/deployment.yaml +++ b/deployment/auth-service/deployment.yaml @@ -10,13 +10,11 @@ metadata: name: gh-auth-service namespace: generations-heritage spec: - podManagementPolicy: OrderedReady replicas: 1 selector: matchLabels: app.kubernetes.io/instance: gh-auth-service app.kubernetes.io/name: gh-auth-service - serviceName: gh-auth-service template: metadata: labels: @@ -39,12 +37,10 @@ spec: requests: cpu: 100m memory: 50Mi - volumeMounts: - - name: gh-auth-service-certs - mountPath: /etc/gh-auth-service/ssl + volumeMounts: + - name: gh-auth-service-certs + mountPath: /etc/gh-auth-service/ssl volumes: - name: gh-auth-service-certs secret: secretName: gh-auth-service-tls - updateStrategy: - type: RollingUpdate diff --git a/deployment/backend/deployment.yaml b/deployment/backend/deployment.yaml index 5ac8958..eae59e9 100644 --- a/deployment/backend/deployment.yaml +++ b/deployment/backend/deployment.yaml @@ -9,13 +9,11 @@ metadata: argocd.argoproj.io/hook: Synce name: gh-backend spec: - podManagementPolicy: OrderedReady replicas: 1 selector: matchLabels: app.kubernetes.io/instance: gh-backend app.kubernetes.io/name: gh-backend - serviceName: gh-backend template: metadata: labels: @@ -38,11 +36,10 @@ spec: requests: cpu: 100m memory: 100Mi - volumeMounts: - - name: gh-backend-certs - mountPath: /etc/gh-backend/ssl + volumeMounts: + - name: gh-backend-certs + mountPath: /etc/gh-backend/ssl volumes: - name: gh-backend-certs secret: secretName: gh-backend-tls - \ No newline at end of file From 3e40c09f188524def4b8dbb3c8dc2cd7f3db4895 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Wed, 20 Mar 2024 13:14:45 +0100 Subject: [PATCH 55/63] modify argo app names --- deployment/auth-service-argo.yaml | 2 +- deployment/backend-argo.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/auth-service-argo.yaml b/deployment/auth-service-argo.yaml index 8ee6493..e0fb249 100644 --- a/deployment/auth-service-argo.yaml +++ b/deployment/auth-service-argo.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Application metadata: - name: auth-service + name: gh-auth-service spec: project: generations-heritage-vv source: diff --git a/deployment/backend-argo.yaml b/deployment/backend-argo.yaml index b6ab2e0..6d33ed4 100644 --- a/deployment/backend-argo.yaml +++ b/deployment/backend-argo.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Application metadata: - name: backend + name: gh-backend spec: project: generations-heritage-vv source: From 36b34a161fc9ec2b4e12ea4ca15df69bac45eba1 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 13 Apr 2024 21:13:17 +0200 Subject: [PATCH 56/63] change default cocroach db volume size --- deployment/zitadel/cockroach-values.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deployment/zitadel/cockroach-values.yaml b/deployment/zitadel/cockroach-values.yaml index 41ee51b..c398106 100644 --- a/deployment/zitadel/cockroach-values.yaml +++ b/deployment/zitadel/cockroach-values.yaml @@ -4,6 +4,10 @@ tls: annotations: argocd.argoproj.io/hook: Sync +storage: + persistentVolume: + size: 5Gi + init: jobAnnotations: argocd.argoproj.io/hook: Sync \ No newline at end of file From 504de2fc2e43c6977a013899d4b585504f482c31 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 13 Apr 2024 21:13:43 +0200 Subject: [PATCH 57/63] Add argocd project yaml --- deployment/project.yaml | 14 ++++++++++++++ kustomization.yaml | 1 + 2 files changed, 15 insertions(+) create mode 100644 deployment/project.yaml diff --git a/deployment/project.yaml b/deployment/project.yaml new file mode 100644 index 0000000..487eb52 --- /dev/null +++ b/deployment/project.yaml @@ -0,0 +1,14 @@ +apiVersion: argoproj.io/v1alpha1 +kind: AppProject +metadata: + name: generations-heritage-vv +spec: + description: Generations heritages is a project that aims to preserve the heritage of families based on bloodlines. + sourceRepos: + - '*' # Allow all repositories + destinations: + - namespace: 'generations-heritage' + server: '*' + clusterResourceWhitelist: + - group: '*' + kind: '*' # Allow all kinds \ No newline at end of file diff --git a/kustomization.yaml b/kustomization.yaml index c9cb871..bae1769 100644 --- a/kustomization.yaml +++ b/kustomization.yaml @@ -3,6 +3,7 @@ kind: Kustomization namespace: argocd resources: + - ./deployment/project.yaml - ./deployment/auth-service-argo.yaml - ./deployment/memgraph-argo.yaml - ./deployment/backend-argo.yaml From 9996b79b464818017392450462d967746dc76040 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 13 Apr 2024 21:14:07 +0200 Subject: [PATCH 58/63] Add deployment command to readme --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index f81f9f5..2dd4e53 100644 --- a/README.md +++ b/README.md @@ -23,3 +23,10 @@ The purpose of the thesis is to develop a web application that enables the commu Users could register and the system would provide the ability to edit their own profiles, which are part of the family tree structure. The family tree would contain not only names and birth dates but also additional information such as schools, residences, workplaces, life wisdom, important knowledge, and photos. Furthermore, the application would employ protective measures, so that only those related by blood could access each other's data. The task is highly complex, as it involves not only designing the user interface and the family tree structure but also properly implementing security layers. The development of the database system, the cloud-based server, and the CI/CD system present further challenges. The application must ensure optimal display on various devices and screen sizes, which requires additional development and design skills. The thesis details the extent to which specific challenges and solutions related to the project contribute to the success and functionality of the software. + +## Deployment +To deploy all micro services use: + +```bash: +kubectl apply --server-side -k . +``` \ No newline at end of file From d004a155d7d07773209b555aef2eab82ee40ac7b Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sat, 13 Apr 2024 23:58:03 +0200 Subject: [PATCH 59/63] Add default cert-issuer.yaml --- deployment/cert-issuer.yaml | 45 +++++++++++++++++++ .../{project.yaml => project-argo.yaml} | 0 kustomization.yaml | 3 +- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 deployment/cert-issuer.yaml rename deployment/{project.yaml => project-argo.yaml} (100%) diff --git a/deployment/cert-issuer.yaml b/deployment/cert-issuer.yaml new file mode 100644 index 0000000..23cab2e --- /dev/null +++ b/deployment/cert-issuer.yaml @@ -0,0 +1,45 @@ +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: trust-manager-selfsigned-issuer +spec: + selfSigned: {} +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: cluster-root-certificate + namespace: cert-manager +spec: + isCA: true + commonName: cluster-root-certificate-ca + secretName: cluster-root-certificate-ca-secret + privateKey: + algorithm: ECDSA + size: 256 + issuerRef: + name: trust-manager-selfsigned-issuer + kind: ClusterIssuer + group: cert-manager.io +--- +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: default-cluster-ca-issuer +spec: + ca: + secretName: cluster-root-certificate-ca-secret +--- +apiVersion: trust.cert-manager.io/v1alpha1 +kind: Bundle +metadata: + name: in-cluster-trust-bundle +spec: + sources: + - useDefaultCAs: true + - secret: + name: "cluster-root-certificate-ca-secret" + key: "tls.crt" + target: + configMap: + key: "trust-bundle.pem" \ No newline at end of file diff --git a/deployment/project.yaml b/deployment/project-argo.yaml similarity index 100% rename from deployment/project.yaml rename to deployment/project-argo.yaml diff --git a/kustomization.yaml b/kustomization.yaml index bae1769..98ecf79 100644 --- a/kustomization.yaml +++ b/kustomization.yaml @@ -3,7 +3,8 @@ kind: Kustomization namespace: argocd resources: - - ./deployment/project.yaml + - ./deployment/cert-issuer.yaml + - ./deployment/project-argo.yaml - ./deployment/auth-service-argo.yaml - ./deployment/memgraph-argo.yaml - ./deployment/backend-argo.yaml From 150d3d7b33ad5e3acd8dfe0723ffbbb9a66879ee Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 14 Apr 2024 00:03:14 +0200 Subject: [PATCH 60/63] Change image to arm64v8 --- .github/workflows/auth-service-cd.yml | 1 + .github/workflows/backend-cd.yml | 1 + auth-service/dockerfile | 4 ++-- backend/dockerfile | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/auth-service-cd.yml b/.github/workflows/auth-service-cd.yml index 145b121..8e48033 100644 --- a/.github/workflows/auth-service-cd.yml +++ b/.github/workflows/auth-service-cd.yml @@ -48,3 +48,4 @@ jobs: push: true context: "{{defaultContext}}:auth-service" tags: vcscsvcscs/gheritage-auth-service:${{steps.create_image_tag.outputs.result}} + platforms: linux/arm64v8 diff --git a/.github/workflows/backend-cd.yml b/.github/workflows/backend-cd.yml index 32f3767..6a05f50 100644 --- a/.github/workflows/backend-cd.yml +++ b/.github/workflows/backend-cd.yml @@ -48,3 +48,4 @@ jobs: push: true context: "{{defaultContext}}:backend" tags: vcscsvcscs/gheritage-backend-service:${{steps.create_image_tag.outputs.result}} + platforms: linux/arm64v8 diff --git a/auth-service/dockerfile b/auth-service/dockerfile index c74d73f..3146eb1 100644 --- a/auth-service/dockerfile +++ b/auth-service/dockerfile @@ -4,9 +4,9 @@ WORKDIR /app COPY . . -RUN go build -o auth-service +RUN GOOS=linux GOARCH=arm64 go build -o auth-service -FROM busybox +FROM arm64v8/busybox COPY --from=build /app/auth-service /app/ diff --git a/backend/dockerfile b/backend/dockerfile index 612b050..fe3d3ad 100644 --- a/backend/dockerfile +++ b/backend/dockerfile @@ -4,9 +4,9 @@ WORKDIR /app COPY . . -RUN go build -o backend +RUN GOOS=linux GOARCH=arm64 go build -o backend -FROM busybox +FROM arm64v8/busybox COPY --from=build /app/backend /app/ From 8d1bb6dbfe3ddced76dc3d32a54d18467360a790 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 14 Apr 2024 00:10:48 +0200 Subject: [PATCH 61/63] Trial and error with busybox and designated platform --- backend/dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/dockerfile b/backend/dockerfile index fe3d3ad..6d54d11 100644 --- a/backend/dockerfile +++ b/backend/dockerfile @@ -6,7 +6,7 @@ COPY . . RUN GOOS=linux GOARCH=arm64 go build -o backend -FROM arm64v8/busybox +FROM busybox COPY --from=build /app/backend /app/ From 94820faf8ca5204a5adc54050d51208403c6af2a Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 14 Apr 2024 00:16:18 +0200 Subject: [PATCH 62/63] docker push to use linux/arm64/v8 --- .github/workflows/auth-service-cd.yml | 2 +- .github/workflows/backend-cd.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auth-service-cd.yml b/.github/workflows/auth-service-cd.yml index 8e48033..5ad23ae 100644 --- a/.github/workflows/auth-service-cd.yml +++ b/.github/workflows/auth-service-cd.yml @@ -48,4 +48,4 @@ jobs: push: true context: "{{defaultContext}}:auth-service" tags: vcscsvcscs/gheritage-auth-service:${{steps.create_image_tag.outputs.result}} - platforms: linux/arm64v8 + platforms: linux/arm64/v8 diff --git a/.github/workflows/backend-cd.yml b/.github/workflows/backend-cd.yml index 6a05f50..0245867 100644 --- a/.github/workflows/backend-cd.yml +++ b/.github/workflows/backend-cd.yml @@ -48,4 +48,4 @@ jobs: push: true context: "{{defaultContext}}:backend" tags: vcscsvcscs/gheritage-backend-service:${{steps.create_image_tag.outputs.result}} - platforms: linux/arm64v8 + platforms: linux/arm64/v8 From f42d966183ff1e4daa72e36299a51ec5d74f3150 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 14 Apr 2024 00:54:45 +0200 Subject: [PATCH 63/63] set for main revision in argocd --- deployment/auth-service-argo.yaml | 2 +- deployment/backend-argo.yaml | 2 +- deployment/memgraph-argo.yaml | 2 +- deployment/zitadel-argo.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deployment/auth-service-argo.yaml b/deployment/auth-service-argo.yaml index e0fb249..770f378 100644 --- a/deployment/auth-service-argo.yaml +++ b/deployment/auth-service-argo.yaml @@ -7,7 +7,7 @@ spec: source: repoURL: 'https://github.com/vcscsvcscs/GenerationsHeritage' path: deployment/auth-service - targetRevision: feature/create-kubernetes-deployments + targetRevision: main kustomize: namespace: generations-heritage destination: diff --git a/deployment/backend-argo.yaml b/deployment/backend-argo.yaml index 6d33ed4..b35db2f 100644 --- a/deployment/backend-argo.yaml +++ b/deployment/backend-argo.yaml @@ -7,7 +7,7 @@ spec: source: repoURL: 'https://github.com/vcscsvcscs/GenerationsHeritage' path: deployment/backend - targetRevision: feature/create-kubernetes-deployments + targetRevision: main kustomize: namespace: generations-heritage destination: diff --git a/deployment/memgraph-argo.yaml b/deployment/memgraph-argo.yaml index 3ebbf74..4849779 100644 --- a/deployment/memgraph-argo.yaml +++ b/deployment/memgraph-argo.yaml @@ -7,7 +7,7 @@ spec: source: repoURL: 'https://github.com/vcscsvcscs/GenerationsHeritage' path: deployment/memgraph - targetRevision: feature/create-kubernetes-deployments + targetRevision: main kustomize: namespace: generations-heritage destination: diff --git a/deployment/zitadel-argo.yaml b/deployment/zitadel-argo.yaml index 4651ded..a44b713 100644 --- a/deployment/zitadel-argo.yaml +++ b/deployment/zitadel-argo.yaml @@ -7,7 +7,7 @@ spec: source: repoURL: 'https://github.com/vcscsvcscs/GenerationsHeritage' path: deployment/zitadel - targetRevision: feature/create-kubernetes-deployments + targetRevision: main kustomize: namespace: generations-heritage destination: