9 Commits

Author SHA1 Message Date
f9e581fcc2 refactor: skeleton to bits ui components
todo: restyle navbar layout
2025-09-25 22:26:11 +01:00
21cb4f5cfb refactor: page routing
feat: base order and product view pages

feat: base auth state
2025-09-25 22:16:33 +01:00
5152852db5 refactor: navbar display
todo: lucide-svelete to react-icons/svelte-icons-pack
2025-09-10 17:10:14 +01:00
befca6144b feat (web): light/dark logo assets
fix: light/dark mode toggling

todo: implement a light theme
2025-08-19 15:07:04 +01:00
6d82886270 feat: logo assets for stocklet 2025-08-10 10:57:08 +01:00
53ea5021d7 feat: openapi-fetch typing
feat: base page layout for implementation

todo: fix light/dark mode toggling
2025-08-10 10:50:52 +01:00
ce03e2f681 feat: skeleton ui and theming 2025-08-09 21:29:27 +01:00
828332a786 feat: base frontend deployment 2025-08-07 21:38:45 +01:00
859e075407 feat: base frontend
feat: base openapi v2 to openapi v3 generation
2025-08-07 16:23:22 +01:00
84 changed files with 9872 additions and 3581 deletions

View File

@@ -1,20 +0,0 @@
name: Protobuf CI
on:
push:
pull_request:
types: [opened, synchronize, reopened, labeled, unlabeled]
delete:
permissions:
contents: read
pull-requests: write
jobs:
buf:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bufbuild/buf-action@v1
with:
input: schema/protobufs

4
.gitignore vendored
View File

@@ -1,3 +1,4 @@
# Go
*.exe
*.exe~
*.dll
@@ -7,3 +8,6 @@
*.out
go.work
*.env
# Misc
node_modules

View File

@@ -1,13 +1,38 @@
install-tools:
go install github.com/bufbuild/buf/cmd/buf@v1.27.2
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.17.0
#
# Dev Tools
#
generate-protobufs:
.PHONY: install-tools
install-tools:
go install github.com/bufbuild/buf/cmd/buf@v1.27.2 && \
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.17.0 && \
npm install
#
# Code Gen
#
.PHONY: gen-protobufs
gen-protobufs:
buf generate
format:
buf format -w
.PHONY: gen-openapi
gen-openapi: gen-protobufs
npx openapi-generator-cli generate -g openapi-yaml -i schema/openapi/services.swagger.yaml -o schema/openapi -p outputFile=openapi.yaml
#
# Linting / Formatting
#
.PHONY: format-go
format-go:
buf format -w && \
gofmt -w -s .
#
# Deployment
#
.PHONY: deploy-docker
deploy-docker:
docker compose -f deploy/docker/compose.yaml -f deploy/docker/compose.override.yaml up --build

View File

@@ -8,10 +8,12 @@ An event-driven microservices-based distributed e-commerce example application w
## 📘 About
This project was originally built as an experiment with event-driven architecture. I hope it can serve as a beneficial demonstration of utilising the architecture and exemplify the implementation of some other miscellaneous microservice patterns in a real-world setting.
This project was originally built as an experiment with event-driven architecture. But I hope it can future serve as a beneficial demonstration of utilising the architecture and exemplify the implementation of some other miscellaneous microservice patterns.
Any ideas, suggestions or direct contributions to better conform with general and evolving industry practices are welcome and will be greatly appreciated, as I'd like for this project to evolve to the stage of being somewhat a reflection of a production-ready enterprise application.
⚠️ The application should be considered in the experimental prototype stage. Breaking changes can be expected between any future commits to this repo, in order to ease the development process and allow for clean refactoring of the project.
## 📝 Features
* Monorepository layout
@@ -23,13 +25,12 @@ Any ideas, suggestions or direct contributions to better conform with general an
* Transactional outbox pattern with Debezium
* API gateway pattern using Envoy
* Distributed transactions utilising the saga pattern
* Compliance with common specifications such as OAuth 2.0
## ⚠️ Notice
As this project is licensed under the GNU Affero General Public License v3, [copying, templating or referencing code from this project](https://en.wikipedia.org/wiki/Clean-room_design) may violate copyright law unless your project is using a compatible open-source license. Please ensure any implementation in your own projects is original and complies with applicable licenses and laws.
As this project is licensed under the GNU Affero General Public License v3, [copying, templating or referencing code from this project](https://en.wikipedia.org/wiki/Clean-room_design) may violate international copyright law unless your project is using a compatible open-source license. Please ensure any implementation in your own projects is original and complies with applicable licenses and laws.
In the nature of open-source software, please consider contributing and giving back to the project to help make it better for the greater community, especially if you see it as a useful learning resource (as this repo is intended).
In the nature of open-source software, please consider contributing and giving back to the project to help make it better for the greater community, especially if you see it as a useful learning resource.
## 🗃️ Architecture
@@ -52,12 +53,17 @@ In the nature of open-source software, please consider contributing and giving b
* Protobuf Libraries
* [google.golang.org/protobuf](https://pkg.go.dev/google.golang.org/protobuf)
* [buf.build/go/protovalidate](https://pkg.go.dev/buf.build/go/protovalidate)
* [github.com/bufbuild/protovalidate-go](https://pkg.go.dev/github.com/bufbuild/protovalidate-go)
* Frontend
* [github.com/sveltejs/kit](https://github.com/sveltejs/kit)
* [github.com/tailwindlabs/tailwindcss](https://github.com/tailwindlabs/tailwindcss)
* Tools
* [plantuml.com](https://plantuml.com/)
* [github.com/bufbuild/buf/cmd/buf](https://buf.build/docs/installation)
* [github.com/golang-migrate/migrate/v4](https://pkg.go.dev/github.com/golang-migrate/migrate/v4#section-readme)
* [github.com/openapitools/openapi-generator](https://github.com/openapitools/openapi-generator)
* Miscellaneous
* [golang.org/x/crypto/bcrypt](https://pkg.go.dev/golang.org/x/crypto/bcrypt)
@@ -77,7 +83,6 @@ In the nature of open-source software, please consider contributing and giving b
* [Debezium Connect](https://hub.docker.com/r/debezium/connect)
* Provisioning and Deployment
* [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/)
* **or** [Podman](https://github.com/podman-desktop/podman-desktop) and [Podman Compose](https://podman-desktop.io/docs/compose)
### 🧩 Services
@@ -105,17 +110,7 @@ Further documentation on the events can be found at [``/docs/EVENTS.md``](/docs/
The application can be deployed using [Docker Compose](https://docs.docker.com/compose/) (with the compose files located in [``/deploy/docker/``](/deploy/docker/)). Ensure the correct configuration is in place by copying and removing ``.example`` from the end of the example environment files located in [``/deploy/configs/``](/deploy/configs/).
Deploy using the following command for Docker:
```sh
docker compose -f deploy/docker/compose.yaml -f deploy/docker/compose.override.yaml up --build
```
Deploy using the following command for Podman:
```sh
podman compose --file deploy/docker/compose.yaml --file deploy/docker/compose.override.yaml up --build
```
Deploy using the following command: ``docker compose -f deploy/docker/compose.yaml -f deploy/docker/compose.override.yaml up --build``
## 🧪 Contributing

View File

@@ -1,26 +1,23 @@
version: v2
version: v1
plugins:
- remote: buf.build/protocolbuffers/go:v1.31.0
- plugin: buf.build/protocolbuffers/go:v1.31.0
out: internal/pkg/protogen
opt:
- paths=import
- module=github.com/hexolan/stocklet/internal/pkg/protogen
- remote: buf.build/grpc/go:v1.3.0
- plugin: buf.build/grpc/go:v1.3.0
out: internal/pkg/protogen
opt:
- paths=import
- module=github.com/hexolan/stocklet/internal/pkg/protogen
- remote: buf.build/grpc-ecosystem/gateway:v2.18.0
- plugin: buf.build/grpc-ecosystem/gateway:v2.18.0
out: internal/pkg/protogen
opt:
- paths=import
- module=github.com/hexolan/stocklet/internal/pkg/protogen
- remote: buf.build/grpc-ecosystem/openapiv2:v2.18.0
- plugin: buf.build/grpc-ecosystem/openapiv2:v2.18.0
out: schema/openapi
opt:
- output_format=yaml
- allow_merge=true
- merge_file_name=services
inputs:
- directory: schema/protobufs

3
buf.work.yaml Normal file
View File

@@ -0,0 +1,3 @@
version: v1
directories:
- schema/protobufs

16
build/frontend/Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM node:24-slim AS base
WORKDIR /app
# Install pnpm
RUN npm install -g pnpm
# Install dependencies
COPY package.json ./
COPY pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
# Prepare application
COPY . ./
RUN pnpm build
CMD ["pnpm", "preview", "--host", "'0.0.0.0'", "--port", "5173"]

View File

@@ -11,6 +11,3 @@ OTEL_COLLECTOR_GRPC=otel-collector:4317
# base64 encoded EC256/EC512 private key
AUTH_PRIVATE_KEY=LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUJ5RHBLV1pHS3YxNDdvZGlUR2N4V0l0NWxEbEtRQW5zdDZQQkw3bUNGMFJvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFbUM0UVdtek1ta3lkT0xMZUxYdHVIa3RqVGtQZzM5djRkSnNFZEhGcGdQM1M0ZXp4a2ZYaApmSVZiQlR6OXA4OFFBSkRsL0ZOVFFjUXFUYlZ2bCsybE9RPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQ==
API_HOSTNAME=localhost
API_PUBLIC_URL=http://localhost/api

111
go.mod
View File

@@ -1,77 +1,72 @@
module github.com/hexolan/stocklet
go 1.24.0
go 1.23.0
toolchain go1.24.1
toolchain go1.24.3
require (
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.9-20250912141014-52f32327d4b0.1
github.com/bufbuild/protovalidate-go v0.10.1
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231106192134-1baebb0a1518.2
github.com/bufbuild/protovalidate-go v0.4.1
github.com/doug-martin/goqu/v9 v9.19.0
github.com/golang-migrate/migrate/v4 v4.19.0
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2
github.com/jackc/pgx/v5 v5.7.6
github.com/lestrrat-go/jwx/v2 v2.1.6
github.com/rs/zerolog v1.34.0
github.com/twmb/franz-go v1.19.5
github.com/twmb/franz-go/pkg/kadm v1.16.1
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0
go.opentelemetry.io/otel v1.38.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0
go.opentelemetry.io/otel/sdk v1.38.0
golang.org/x/crypto v0.42.0
golang.org/x/exp v0.0.0-20250911091902-df9299821621
google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9
google.golang.org/grpc v1.75.1
google.golang.org/protobuf v1.36.9
github.com/golang-migrate/migrate/v4 v4.16.2
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0
github.com/jackc/pgx/v5 v5.5.4
github.com/lestrrat-go/jwx/v2 v2.0.21
github.com/rs/zerolog v1.31.0
github.com/twmb/franz-go v1.15.0
github.com/twmb/franz-go/pkg/kadm v1.9.2
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1
go.opentelemetry.io/otel v1.21.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0
go.opentelemetry.io/otel/sdk v1.21.0
golang.org/x/crypto v0.36.0
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17
google.golang.org/grpc v1.59.0
google.golang.org/protobuf v1.33.0
)
require (
buf.build/go/protovalidate v1.0.0 // indirect
cel.dev/expr v0.24.0 // indirect
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect
github.com/distribution/reference v0.6.0 // indirect
github.com/docker/docker v28.3.3+incompatible // indirect
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
github.com/distribution/reference v0.5.0 // indirect
github.com/docker/docker v25.0.6+incompatible // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/logr v1.3.0 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/goccy/go-json v0.10.5 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/cel-go v0.26.1 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/cel-go v0.18.2 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/klauspost/compress v1.18.0 // indirect
github.com/lestrrat-go/blackmagic v1.0.4 // indirect
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
github.com/jackc/puddle/v2 v2.2.1 // indirect
github.com/klauspost/compress v1.17.2 // indirect
github.com/lestrrat-go/blackmagic v1.0.2 // indirect
github.com/lestrrat-go/httpcc v1.0.1 // indirect
github.com/lestrrat-go/httprc v1.0.6 // indirect
github.com/lestrrat-go/httprc v1.0.5 // indirect
github.com/lestrrat-go/iter v1.0.2 // indirect
github.com/lestrrat-go/option v1.0.1 // indirect
github.com/lib/pq v1.10.9 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
github.com/pierrec/lz4/v4 v4.1.22 // indirect
github.com/segmentio/asm v1.2.1 // indirect
github.com/stoewer/go-strcase v1.3.1 // indirect
github.com/twmb/franz-go/pkg/kmsg v1.11.2 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect
go.opentelemetry.io/otel/metric v1.38.0 // indirect
go.opentelemetry.io/otel/trace v1.38.0 // indirect
go.opentelemetry.io/proto/otlp v1.8.0 // indirect
github.com/lib/pq v1.10.2 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/opencontainers/image-spec v1.1.0-rc5 // indirect
github.com/pierrec/lz4/v4 v4.1.18 // indirect
github.com/segmentio/asm v1.2.0 // indirect
github.com/stoewer/go-strcase v1.3.0 // indirect
github.com/twmb/franz-go/pkg/kmsg v1.6.1 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect
go.opentelemetry.io/otel/metric v1.21.0 // indirect
go.opentelemetry.io/otel/trace v1.21.0 // indirect
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
golang.org/x/net v0.44.0 // indirect
golang.org/x/sync v0.17.0 // indirect
golang.org/x/sys v0.36.0 // indirect
golang.org/x/text v0.29.0 // indirect
google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9 // indirect
golang.org/x/net v0.38.0 // indirect
golang.org/x/sync v0.12.0 // indirect
golang.org/x/sys v0.31.0 // indirect
golang.org/x/text v0.23.0 // indirect
google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect
)

126
go.sum
View File

@@ -1,16 +1,8 @@
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231106192134-1baebb0a1518.2 h1:iRWpWLm1nrsCHBVhibqPJQB3iIf3FRsAXioJVU8m6w0=
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231106192134-1baebb0a1518.2/go.mod h1:xafc+XIsTxTy76GJQ1TKgvJWsSugFBqMaN27WhUblew=
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.9-20250912141014-52f32327d4b0.1 h1:DQLS/rRxLHuugVzjJU5AvOwD57pdFl9he/0O7e5P294=
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.9-20250912141014-52f32327d4b0.1/go.mod h1:aY3zbkNan5F+cGm9lITDP6oxJIwu0dn9KjJuJjWaHkg=
buf.build/go/protovalidate v1.0.0 h1:IAG1etULddAy93fiBsFVhpj7es5zL53AfB/79CVGtyY=
buf.build/go/protovalidate v1.0.0/go.mod h1:KQmEUrcQuC99hAw+juzOEAmILScQiKBP1Oc36vvCLW8=
cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY=
cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=
cloud.google.com/go v0.110.9 h1:e7ITSqGFFk4rbz/JFIqZh3G4VEHguhAL4BQcFlWtU68=
cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM=
cloud.google.com/go/compute v1.23.2 h1:nWEMDhgbBkBJjfpVySqU4jgWdc22PLR0o4vEexZHers=
cloud.google.com/go/compute v1.23.2/go.mod h1:JJ0atRC0J/oWYiiVBmsSsrRnh92DhZPG4hFDcR04Rns=
cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg=
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
@@ -19,44 +11,27 @@ github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20O
github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
github.com/bufbuild/protovalidate-go v0.4.1 h1:ye/8S72WbEklCeltPkSEeT8Eu1A7P/gmMsmapkwqTFk=
github.com/bufbuild/protovalidate-go v0.4.1/go.mod h1:+p5FXfOjSEgLz5WBDTOMPMdQPXqALEERbJZU7huDCtA=
github.com/bufbuild/protovalidate-go v0.10.1 h1:0GmwzVncLONi9aO7ap5vvddlhVF1K52ei780wnXwNe4=
github.com/bufbuild/protovalidate-go v0.10.1/go.mod h1:2NC0NSB6Lon4wR2wxisxDD6LnoJDPMB5i6BTLjD2Szw=
github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k=
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20241223141626-cff3c89139a3 h1:boJj011Hh+874zpIySeApCX4GeOjPl9qhRF3QuIZq+Q=
github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40=
github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/dhui/dktest v0.3.16 h1:i6gq2YQEtcrjKbeJpBkWjE8MmLZPYllcjOFbTZuPDnw=
github.com/dhui/dktest v0.3.16/go.mod h1:gYaA3LRmM8Z4vJl2MA0THIigJoZrwOansEOsp+kqxp0=
github.com/dhui/dktest v0.4.6 h1:+DPKyScKSEp3VLtbMDHcUq6V5Lm5zfZZVb0Sk7Ahom4=
github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg=
github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI=
github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
@@ -70,45 +45,29 @@ github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-migrate/migrate/v4 v4.16.2 h1:8coYbMKUyInrFk1lfGfRovTLAW7PhWp8qQDT2iKfuoA=
github.com/golang-migrate/migrate/v4 v4.16.2/go.mod h1:pfcJX4nPHaVdc5nmdCikFBWtm+UBpiZjRNNsyBbp0/o=
github.com/golang-migrate/migrate/v4 v4.19.0 h1:RcjOnCGz3Or6HQYEJ/EEVLfWnmw9KnoigPSjzhCuaSE=
github.com/golang-migrate/migrate/v4 v4.19.0/go.mod h1:9dyEcu+hO+G9hPSw8AIg50yg622pXJsoHItQnDGZkI0=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo=
github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ=
github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=
github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/cel-go v0.18.2 h1:L0B6sNBSVmt0OyECi8v6VOS74KOc9W/tLiWKfZABvf4=
github.com/google/cel-go v0.18.2/go.mod h1:kWcIzTsPX0zmQ+H3TirHstLLf9ep5QTsZBN9u4dOYLg=
github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ=
github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -118,52 +77,32 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.5.4 h1:Xp2aQS8uXButQdnCMWNmvx6UysWQQC+u1EoizjguY+8=
github.com/jackc/pgx/v5 v5.5.4/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A=
github.com/jackc/pgx/v5 v5.7.6 h1:rWQc5FwZSPX58r1OQmkuaNicxdmExaEz5A2DO2hUuTk=
github.com/jackc/pgx/v5 v5.7.6/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M=
github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4=
github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/lestrrat-go/blackmagic v1.0.2 h1:Cg2gVSc9h7sz9NOByczrbUvLopQmXrfFx//N+AkAr5k=
github.com/lestrrat-go/blackmagic v1.0.2/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
github.com/lestrrat-go/blackmagic v1.0.4 h1:IwQibdnf8l2KoO+qC3uT4OaTWsW7tuRQXy9TRN9QanA=
github.com/lestrrat-go/blackmagic v1.0.4/go.mod h1:6AWFyKNNj0zEXQYfTMPfZrAXUWUfTIZ5ECEUEJaijtw=
github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE=
github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
github.com/lestrrat-go/httprc v1.0.5 h1:bsTfiH8xaKOJPrg1R+E3iE/AWZr/x0Phj9PBTG/OLUk=
github.com/lestrrat-go/httprc v1.0.5/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo=
github.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCGW8k=
github.com/lestrrat-go/httprc v1.0.6/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo=
github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI=
github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
github.com/lestrrat-go/jwx/v2 v2.0.21 h1:jAPKupy4uHgrHFEdjVjNkUgoBKtVDgrQPB/h55FHrR0=
github.com/lestrrat-go/jwx/v2 v2.0.21/go.mod h1:09mLW8zto6bWL9GbwnqAli+ArLf+5M33QLQPDggkUWM=
github.com/lestrrat-go/jwx/v2 v2.1.6 h1:hxM1gfDILk/l5ylers6BX/Eq1m/pnxe9NBwW6lVfecA=
github.com/lestrrat-go/jwx/v2 v2.1.6/go.mod h1:Y722kU5r/8mV7fYDifjug0r8FK8mZdw0K0GpJw/l8pU=
github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU=
github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
github.com/lib/pq v1.10.1/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8=
github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
@@ -173,29 +112,19 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=
github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ=
github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A=
github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY=
github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ=
github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys=
github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
github.com/segmentio/asm v1.2.1 h1:DTNbBqs57ioxAD4PrArqftgypG4/qNpXoJx8TVXxPR0=
github.com/segmentio/asm v1.2.1/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs=
github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
@@ -210,58 +139,28 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/twmb/franz-go v1.15.0 h1:bw5n1COKJzWpkCXG/kMtHrurcS9HSWV6e3If5CUdc+M=
github.com/twmb/franz-go v1.15.0/go.mod h1:nMAvTC2kHtK+ceaSHeHm4dlxC78389M/1DjpOswEgu4=
github.com/twmb/franz-go v1.19.5 h1:W7+o8D0RsQsedqib71OVlLeZ0zI6CbFra7yTYhZTs5Y=
github.com/twmb/franz-go v1.19.5/go.mod h1:4kFJ5tmbbl7asgwAGVuyG1ZMx0NNpYk7EqflvWfPCpM=
github.com/twmb/franz-go/pkg/kadm v1.9.2 h1:2Aj7DOaSFT5TyJ5BLEbAanXuby7CeWjpXW9ht8fy73c=
github.com/twmb/franz-go/pkg/kadm v1.9.2/go.mod h1:hUMoV4SRho+2ij/S9cL39JaLsr+XINjn0ZkCdBY2DXc=
github.com/twmb/franz-go/pkg/kadm v1.16.1 h1:IEkrhTljgLHJ0/hT/InhXGjPdmWfFvxp7o/MR7vJ8cw=
github.com/twmb/franz-go/pkg/kadm v1.16.1/go.mod h1:Ue/ye1cc9ipsQFg7udFbbGiFNzQMqiH73fGC2y0rwyc=
github.com/twmb/franz-go/pkg/kmsg v1.6.1 h1:tm6hXPv5antMHLasTfKv9R+X03AjHSkSkXhQo2c5ALM=
github.com/twmb/franz-go/pkg/kmsg v1.6.1/go.mod h1:se9Mjdt0Nwzc9lnjJ0HyDtLyBnaBDAd7pCje47OhSyw=
github.com/twmb/franz-go/pkg/kmsg v1.11.2 h1:hIw75FpwcAjgeyfIGFqivAvwC5uNIOWRGvQgZhH4mhg=
github.com/twmb/franz-go/pkg/kmsg v1.11.2/go.mod h1:CFfkkLysDNmukPYhGzuUcDtf46gQSqCZHMW1T4Z+wDE=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg=
go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc=
go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk=
go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM=
go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=
go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8=
go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E=
go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc=
go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ=
go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE=
go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -271,26 +170,17 @@ golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI=
golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8=
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
golang.org/x/exp v0.0.0-20250911091902-df9299821621 h1:2id6c1/gto0kaHYyrixvknJ8tUK/Qs5IsmBtrc+FtgU=
golang.org/x/exp v0.0.0-20250911091902-df9299821621/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk=
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I=
golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4=
golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4=
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -298,13 +188,9 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -312,29 +198,17 @@ google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U=
google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4=
google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y=
google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s=
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo=
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4=
google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9 h1:jm6v6kMRpTYKxBRrDkYAitNJegUeO1Mf3Kt80obv0gg=
google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9/go.mod h1:LmwNphe5Afor5V3R5BppOULHOnt2mCIf+NxMd4XiygE=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9 h1:V1jCN2HBa8sySkR5vLcCSqJSTMv093Rw9EJefhQGP7M=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ=
google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=
google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI=
google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw=
google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

File diff suppressed because it is too large Load Diff

View File

@@ -68,284 +68,6 @@ func local_request_AuthService_GetJwks_0(ctx context.Context, marshaler runtime.
}
func request_AuthService_GetJwks_1(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetJwksRequest
var metadata runtime.ServerMetadata
msg, err := client.GetJwks(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_GetJwks_1(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetJwksRequest
var metadata runtime.ServerMetadata
msg, err := server.GetJwks(ctx, &protoReq)
return msg, metadata, err
}
func request_AuthService_GetOpenIDProviderConfig_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetOpenIDProviderConfigRequest
var metadata runtime.ServerMetadata
msg, err := client.GetOpenIDProviderConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_GetOpenIDProviderConfig_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetOpenIDProviderConfigRequest
var metadata runtime.ServerMetadata
msg, err := server.GetOpenIDProviderConfig(ctx, &protoReq)
return msg, metadata, err
}
func request_AuthService_GetOpenIDProviderConfig_1(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetOpenIDProviderConfigRequest
var metadata runtime.ServerMetadata
msg, err := client.GetOpenIDProviderConfig(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_GetOpenIDProviderConfig_1(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetOpenIDProviderConfigRequest
var metadata runtime.ServerMetadata
msg, err := server.GetOpenIDProviderConfig(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_AuthService_OAuthAuthorize_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_AuthService_OAuthAuthorize_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthAuthorizeRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AuthService_OAuthAuthorize_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.OAuthAuthorize(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_OAuthAuthorize_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthAuthorizeRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AuthService_OAuthAuthorize_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.OAuthAuthorize(ctx, &protoReq)
return msg, metadata, err
}
func request_AuthService_OAuthAuthorize_1(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthAuthorizeRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.OAuthAuthorize(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_OAuthAuthorize_1(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthAuthorizeRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.OAuthAuthorize(ctx, &protoReq)
return msg, metadata, err
}
func request_AuthService_OAuthToken_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthTokenRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.OAuthToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_OAuthToken_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthTokenRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.OAuthToken(ctx, &protoReq)
return msg, metadata, err
}
func request_AuthService_OAuthTokenRevocation_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthTokenRevocationRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.OAuthTokenRevocation(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_OAuthTokenRevocation_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthTokenRevocationRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.OAuthTokenRevocation(ctx, &protoReq)
return msg, metadata, err
}
func request_AuthService_OAuthTokenIntrospection_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthTokenIntrospectionRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.OAuthTokenIntrospection(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_OAuthTokenIntrospection_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OAuthTokenIntrospectionRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.OAuthTokenIntrospection(ctx, &protoReq)
return msg, metadata, err
}
func request_AuthService_OpenIDUserInfo_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OpenIDUserInfoRequest
var metadata runtime.ServerMetadata
msg, err := client.OpenIDUserInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_OpenIDUserInfo_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OpenIDUserInfoRequest
var metadata runtime.ServerMetadata
msg, err := server.OpenIDUserInfo(ctx, &protoReq)
return msg, metadata, err
}
func request_AuthService_OpenIDUserInfo_1(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OpenIDUserInfoRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.OpenIDUserInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_AuthService_OpenIDUserInfo_1(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq OpenIDUserInfoRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.OpenIDUserInfo(ctx, &protoReq)
return msg, metadata, err
}
func request_AuthService_LoginPassword_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq LoginPasswordRequest
var metadata runtime.ServerMetadata
@@ -470,256 +192,6 @@ func RegisterAuthServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux
})
mux.Handle("GET", pattern_AuthService_GetJwks_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/GetJwks", runtime.WithHTTPPathPattern("/v1/auth/.well-known/jwks"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_GetJwks_1(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_GetJwks_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_AuthService_GetOpenIDProviderConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/GetOpenIDProviderConfig", runtime.WithHTTPPathPattern("/v1/auth/openid"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_GetOpenIDProviderConfig_0(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_GetOpenIDProviderConfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_AuthService_GetOpenIDProviderConfig_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/GetOpenIDProviderConfig", runtime.WithHTTPPathPattern("/v1/auth/.well-known/openid-configuration"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_GetOpenIDProviderConfig_1(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_GetOpenIDProviderConfig_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_AuthService_OAuthAuthorize_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthAuthorize", runtime.WithHTTPPathPattern("/v1/auth/oauth/authorize"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_OAuthAuthorize_0(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthAuthorize_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OAuthAuthorize_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthAuthorize", runtime.WithHTTPPathPattern("/v1/auth/oauth/authorize"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_OAuthAuthorize_1(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthAuthorize_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OAuthToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthToken", runtime.WithHTTPPathPattern("/v1/auth/oauth/token"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_OAuthToken_0(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OAuthTokenRevocation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthTokenRevocation", runtime.WithHTTPPathPattern("/v1/auth/oauth/revoke"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_OAuthTokenRevocation_0(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthTokenRevocation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OAuthTokenIntrospection_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthTokenIntrospection", runtime.WithHTTPPathPattern("/v1/auth/oauth/introspect"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_OAuthTokenIntrospection_0(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthTokenIntrospection_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_AuthService_OpenIDUserInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OpenIDUserInfo", runtime.WithHTTPPathPattern("/v1/auth/oidc/userinfo"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_OpenIDUserInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OpenIDUserInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OpenIDUserInfo_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OpenIDUserInfo", runtime.WithHTTPPathPattern("/v1/auth/oidc/userinfo"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_AuthService_OpenIDUserInfo_1(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OpenIDUserInfo_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_LoginPassword_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@@ -855,226 +327,6 @@ func RegisterAuthServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux
})
mux.Handle("GET", pattern_AuthService_GetJwks_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/GetJwks", runtime.WithHTTPPathPattern("/v1/auth/.well-known/jwks"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_GetJwks_1(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_GetJwks_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_AuthService_GetOpenIDProviderConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/GetOpenIDProviderConfig", runtime.WithHTTPPathPattern("/v1/auth/openid"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_GetOpenIDProviderConfig_0(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_GetOpenIDProviderConfig_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_AuthService_GetOpenIDProviderConfig_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/GetOpenIDProviderConfig", runtime.WithHTTPPathPattern("/v1/auth/.well-known/openid-configuration"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_GetOpenIDProviderConfig_1(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_GetOpenIDProviderConfig_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_AuthService_OAuthAuthorize_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthAuthorize", runtime.WithHTTPPathPattern("/v1/auth/oauth/authorize"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_OAuthAuthorize_0(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthAuthorize_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OAuthAuthorize_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthAuthorize", runtime.WithHTTPPathPattern("/v1/auth/oauth/authorize"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_OAuthAuthorize_1(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthAuthorize_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OAuthToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthToken", runtime.WithHTTPPathPattern("/v1/auth/oauth/token"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_OAuthToken_0(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OAuthTokenRevocation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthTokenRevocation", runtime.WithHTTPPathPattern("/v1/auth/oauth/revoke"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_OAuthTokenRevocation_0(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthTokenRevocation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OAuthTokenIntrospection_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OAuthTokenIntrospection", runtime.WithHTTPPathPattern("/v1/auth/oauth/introspect"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_OAuthTokenIntrospection_0(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OAuthTokenIntrospection_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_AuthService_OpenIDUserInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OpenIDUserInfo", runtime.WithHTTPPathPattern("/v1/auth/oidc/userinfo"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_OpenIDUserInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OpenIDUserInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_OpenIDUserInfo_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
var annotatedContext context.Context
annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/stocklet.auth.v1.AuthService/OpenIDUserInfo", runtime.WithHTTPPathPattern("/v1/auth/oidc/userinfo"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_AuthService_OpenIDUserInfo_1(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_AuthService_OpenIDUserInfo_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_AuthService_LoginPassword_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@@ -1127,26 +379,6 @@ var (
pattern_AuthService_GetJwks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "auth", "jwks"}, ""))
pattern_AuthService_GetJwks_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "auth", ".well-known", "jwks"}, ""))
pattern_AuthService_GetOpenIDProviderConfig_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "auth", "openid"}, ""))
pattern_AuthService_GetOpenIDProviderConfig_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "auth", ".well-known", "openid-configuration"}, ""))
pattern_AuthService_OAuthAuthorize_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "auth", "oauth", "authorize"}, ""))
pattern_AuthService_OAuthAuthorize_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "auth", "oauth", "authorize"}, ""))
pattern_AuthService_OAuthToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "auth", "oauth", "token"}, ""))
pattern_AuthService_OAuthTokenRevocation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "auth", "oauth", "revoke"}, ""))
pattern_AuthService_OAuthTokenIntrospection_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "auth", "oauth", "introspect"}, ""))
pattern_AuthService_OpenIDUserInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "auth", "oidc", "userinfo"}, ""))
pattern_AuthService_OpenIDUserInfo_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "auth", "oidc", "userinfo"}, ""))
pattern_AuthService_LoginPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "auth", "login"}, ""))
pattern_AuthService_SetPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "auth", "password"}, ""))
@@ -1157,26 +389,6 @@ var (
forward_AuthService_GetJwks_0 = runtime.ForwardResponseMessage
forward_AuthService_GetJwks_1 = runtime.ForwardResponseMessage
forward_AuthService_GetOpenIDProviderConfig_0 = runtime.ForwardResponseMessage
forward_AuthService_GetOpenIDProviderConfig_1 = runtime.ForwardResponseMessage
forward_AuthService_OAuthAuthorize_0 = runtime.ForwardResponseMessage
forward_AuthService_OAuthAuthorize_1 = runtime.ForwardResponseMessage
forward_AuthService_OAuthToken_0 = runtime.ForwardResponseMessage
forward_AuthService_OAuthTokenRevocation_0 = runtime.ForwardResponseMessage
forward_AuthService_OAuthTokenIntrospection_0 = runtime.ForwardResponseMessage
forward_AuthService_OpenIDUserInfo_0 = runtime.ForwardResponseMessage
forward_AuthService_OpenIDUserInfo_1 = runtime.ForwardResponseMessage
forward_AuthService_LoginPassword_0 = runtime.ForwardResponseMessage
forward_AuthService_SetPassword_0 = runtime.ForwardResponseMessage

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2025 Declan Teevan
// Copyright (C) 2024 Declan Teevan
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
@@ -39,12 +39,6 @@ const _ = grpc.SupportPackageIsVersion7
const (
AuthService_ServiceInfo_FullMethodName = "/stocklet.auth.v1.AuthService/ServiceInfo"
AuthService_GetJwks_FullMethodName = "/stocklet.auth.v1.AuthService/GetJwks"
AuthService_GetOpenIDProviderConfig_FullMethodName = "/stocklet.auth.v1.AuthService/GetOpenIDProviderConfig"
AuthService_OAuthAuthorize_FullMethodName = "/stocklet.auth.v1.AuthService/OAuthAuthorize"
AuthService_OAuthToken_FullMethodName = "/stocklet.auth.v1.AuthService/OAuthToken"
AuthService_OAuthTokenRevocation_FullMethodName = "/stocklet.auth.v1.AuthService/OAuthTokenRevocation"
AuthService_OAuthTokenIntrospection_FullMethodName = "/stocklet.auth.v1.AuthService/OAuthTokenIntrospection"
AuthService_OpenIDUserInfo_FullMethodName = "/stocklet.auth.v1.AuthService/OpenIDUserInfo"
AuthService_LoginPassword_FullMethodName = "/stocklet.auth.v1.AuthService/LoginPassword"
AuthService_SetPassword_FullMethodName = "/stocklet.auth.v1.AuthService/SetPassword"
AuthService_ProcessUserDeletedEvent_FullMethodName = "/stocklet.auth.v1.AuthService/ProcessUserDeletedEvent"
@@ -59,24 +53,6 @@ type AuthServiceClient interface {
// buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE
ServiceInfo(ctx context.Context, in *v1.ServiceInfoRequest, opts ...grpc.CallOption) (*v1.ServiceInfoResponse, error)
GetJwks(ctx context.Context, in *GetJwksRequest, opts ...grpc.CallOption) (*GetJwksResponse, error)
// OpenID Connect Discovery Endpoint
// spec: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest
GetOpenIDProviderConfig(ctx context.Context, in *GetOpenIDProviderConfigRequest, opts ...grpc.CallOption) (*GetOpenIDProviderConfigResponse, error)
// OAuth 2.0 Endpoint
// spec (RFC 6749): https://www.rfc-editor.org/rfc/rfc6749#section-3.1
OAuthAuthorize(ctx context.Context, in *OAuthAuthorizeRequest, opts ...grpc.CallOption) (*OAuthAuthorizeResponse, error)
// OAuth 2.0 Endpoint
// spec (RFC 6749): https://www.rfc-editor.org/rfc/rfc6749#section-3.2
OAuthToken(ctx context.Context, in *OAuthTokenRequest, opts ...grpc.CallOption) (*OAuthTokenResponse, error)
// OAuth 2.0 Endpoint
// spec (RFC 7009): https://www.rfc-editor.org/rfc/rfc7009
OAuthTokenRevocation(ctx context.Context, in *OAuthTokenRevocationRequest, opts ...grpc.CallOption) (*OAuthTokenRevocationResponse, error)
// OAuth 2.0 Endpoint
// spec (RFC 7662): https://www.rfc-editor.org/rfc/rfc7662
OAuthTokenIntrospection(ctx context.Context, in *OAuthTokenIntrospectionRequest, opts ...grpc.CallOption) (*OAuthTokenIntrospectionResponse, error)
// OpenID Connect Endpoint
// spec: https://openid.net/specs/openid-connect-core-1_0.html#UserInfo
OpenIDUserInfo(ctx context.Context, in *OpenIDUserInfoRequest, opts ...grpc.CallOption) (*OpenIDUserInfoResponse, error)
LoginPassword(ctx context.Context, in *LoginPasswordRequest, opts ...grpc.CallOption) (*LoginPasswordResponse, error)
SetPassword(ctx context.Context, in *SetPasswordRequest, opts ...grpc.CallOption) (*SetPasswordResponse, error)
// A consumer will call this method to process events.
@@ -113,60 +89,6 @@ func (c *authServiceClient) GetJwks(ctx context.Context, in *GetJwksRequest, opt
return out, nil
}
func (c *authServiceClient) GetOpenIDProviderConfig(ctx context.Context, in *GetOpenIDProviderConfigRequest, opts ...grpc.CallOption) (*GetOpenIDProviderConfigResponse, error) {
out := new(GetOpenIDProviderConfigResponse)
err := c.cc.Invoke(ctx, AuthService_GetOpenIDProviderConfig_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *authServiceClient) OAuthAuthorize(ctx context.Context, in *OAuthAuthorizeRequest, opts ...grpc.CallOption) (*OAuthAuthorizeResponse, error) {
out := new(OAuthAuthorizeResponse)
err := c.cc.Invoke(ctx, AuthService_OAuthAuthorize_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *authServiceClient) OAuthToken(ctx context.Context, in *OAuthTokenRequest, opts ...grpc.CallOption) (*OAuthTokenResponse, error) {
out := new(OAuthTokenResponse)
err := c.cc.Invoke(ctx, AuthService_OAuthToken_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *authServiceClient) OAuthTokenRevocation(ctx context.Context, in *OAuthTokenRevocationRequest, opts ...grpc.CallOption) (*OAuthTokenRevocationResponse, error) {
out := new(OAuthTokenRevocationResponse)
err := c.cc.Invoke(ctx, AuthService_OAuthTokenRevocation_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *authServiceClient) OAuthTokenIntrospection(ctx context.Context, in *OAuthTokenIntrospectionRequest, opts ...grpc.CallOption) (*OAuthTokenIntrospectionResponse, error) {
out := new(OAuthTokenIntrospectionResponse)
err := c.cc.Invoke(ctx, AuthService_OAuthTokenIntrospection_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *authServiceClient) OpenIDUserInfo(ctx context.Context, in *OpenIDUserInfoRequest, opts ...grpc.CallOption) (*OpenIDUserInfoResponse, error) {
out := new(OpenIDUserInfoResponse)
err := c.cc.Invoke(ctx, AuthService_OpenIDUserInfo_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *authServiceClient) LoginPassword(ctx context.Context, in *LoginPasswordRequest, opts ...grpc.CallOption) (*LoginPasswordResponse, error) {
out := new(LoginPasswordResponse)
err := c.cc.Invoke(ctx, AuthService_LoginPassword_FullMethodName, in, out, opts...)
@@ -203,24 +125,6 @@ type AuthServiceServer interface {
// buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE
ServiceInfo(context.Context, *v1.ServiceInfoRequest) (*v1.ServiceInfoResponse, error)
GetJwks(context.Context, *GetJwksRequest) (*GetJwksResponse, error)
// OpenID Connect Discovery Endpoint
// spec: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest
GetOpenIDProviderConfig(context.Context, *GetOpenIDProviderConfigRequest) (*GetOpenIDProviderConfigResponse, error)
// OAuth 2.0 Endpoint
// spec (RFC 6749): https://www.rfc-editor.org/rfc/rfc6749#section-3.1
OAuthAuthorize(context.Context, *OAuthAuthorizeRequest) (*OAuthAuthorizeResponse, error)
// OAuth 2.0 Endpoint
// spec (RFC 6749): https://www.rfc-editor.org/rfc/rfc6749#section-3.2
OAuthToken(context.Context, *OAuthTokenRequest) (*OAuthTokenResponse, error)
// OAuth 2.0 Endpoint
// spec (RFC 7009): https://www.rfc-editor.org/rfc/rfc7009
OAuthTokenRevocation(context.Context, *OAuthTokenRevocationRequest) (*OAuthTokenRevocationResponse, error)
// OAuth 2.0 Endpoint
// spec (RFC 7662): https://www.rfc-editor.org/rfc/rfc7662
OAuthTokenIntrospection(context.Context, *OAuthTokenIntrospectionRequest) (*OAuthTokenIntrospectionResponse, error)
// OpenID Connect Endpoint
// spec: https://openid.net/specs/openid-connect-core-1_0.html#UserInfo
OpenIDUserInfo(context.Context, *OpenIDUserInfoRequest) (*OpenIDUserInfoResponse, error)
LoginPassword(context.Context, *LoginPasswordRequest) (*LoginPasswordResponse, error)
SetPassword(context.Context, *SetPasswordRequest) (*SetPasswordResponse, error)
// A consumer will call this method to process events.
@@ -242,24 +146,6 @@ func (UnimplementedAuthServiceServer) ServiceInfo(context.Context, *v1.ServiceIn
func (UnimplementedAuthServiceServer) GetJwks(context.Context, *GetJwksRequest) (*GetJwksResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetJwks not implemented")
}
func (UnimplementedAuthServiceServer) GetOpenIDProviderConfig(context.Context, *GetOpenIDProviderConfigRequest) (*GetOpenIDProviderConfigResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetOpenIDProviderConfig not implemented")
}
func (UnimplementedAuthServiceServer) OAuthAuthorize(context.Context, *OAuthAuthorizeRequest) (*OAuthAuthorizeResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OAuthAuthorize not implemented")
}
func (UnimplementedAuthServiceServer) OAuthToken(context.Context, *OAuthTokenRequest) (*OAuthTokenResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OAuthToken not implemented")
}
func (UnimplementedAuthServiceServer) OAuthTokenRevocation(context.Context, *OAuthTokenRevocationRequest) (*OAuthTokenRevocationResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OAuthTokenRevocation not implemented")
}
func (UnimplementedAuthServiceServer) OAuthTokenIntrospection(context.Context, *OAuthTokenIntrospectionRequest) (*OAuthTokenIntrospectionResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OAuthTokenIntrospection not implemented")
}
func (UnimplementedAuthServiceServer) OpenIDUserInfo(context.Context, *OpenIDUserInfoRequest) (*OpenIDUserInfoResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OpenIDUserInfo not implemented")
}
func (UnimplementedAuthServiceServer) LoginPassword(context.Context, *LoginPasswordRequest) (*LoginPasswordResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method LoginPassword not implemented")
}
@@ -318,114 +204,6 @@ func _AuthService_GetJwks_Handler(srv interface{}, ctx context.Context, dec func
return interceptor(ctx, in, info, handler)
}
func _AuthService_GetOpenIDProviderConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetOpenIDProviderConfigRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AuthServiceServer).GetOpenIDProviderConfig(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: AuthService_GetOpenIDProviderConfig_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AuthServiceServer).GetOpenIDProviderConfig(ctx, req.(*GetOpenIDProviderConfigRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AuthService_OAuthAuthorize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(OAuthAuthorizeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AuthServiceServer).OAuthAuthorize(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: AuthService_OAuthAuthorize_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AuthServiceServer).OAuthAuthorize(ctx, req.(*OAuthAuthorizeRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AuthService_OAuthToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(OAuthTokenRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AuthServiceServer).OAuthToken(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: AuthService_OAuthToken_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AuthServiceServer).OAuthToken(ctx, req.(*OAuthTokenRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AuthService_OAuthTokenRevocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(OAuthTokenRevocationRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AuthServiceServer).OAuthTokenRevocation(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: AuthService_OAuthTokenRevocation_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AuthServiceServer).OAuthTokenRevocation(ctx, req.(*OAuthTokenRevocationRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AuthService_OAuthTokenIntrospection_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(OAuthTokenIntrospectionRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AuthServiceServer).OAuthTokenIntrospection(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: AuthService_OAuthTokenIntrospection_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AuthServiceServer).OAuthTokenIntrospection(ctx, req.(*OAuthTokenIntrospectionRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AuthService_OpenIDUserInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(OpenIDUserInfoRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AuthServiceServer).OpenIDUserInfo(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: AuthService_OpenIDUserInfo_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AuthServiceServer).OpenIDUserInfo(ctx, req.(*OpenIDUserInfoRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AuthService_LoginPassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(LoginPasswordRequest)
if err := dec(in); err != nil {
@@ -495,30 +273,6 @@ var AuthService_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetJwks",
Handler: _AuthService_GetJwks_Handler,
},
{
MethodName: "GetOpenIDProviderConfig",
Handler: _AuthService_GetOpenIDProviderConfig_Handler,
},
{
MethodName: "OAuthAuthorize",
Handler: _AuthService_OAuthAuthorize_Handler,
},
{
MethodName: "OAuthToken",
Handler: _AuthService_OAuthToken_Handler,
},
{
MethodName: "OAuthTokenRevocation",
Handler: _AuthService_OAuthTokenRevocation_Handler,
},
{
MethodName: "OAuthTokenIntrospection",
Handler: _AuthService_OAuthTokenIntrospection_Handler,
},
{
MethodName: "OpenIDUserInfo",
Handler: _AuthService_OpenIDUserInfo_Handler,
},
{
MethodName: "LoginPassword",
Handler: _AuthService_LoginPassword_Handler,

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2025 Declan Teevan
// Copyright (C) 2024 Declan Teevan
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by

View File

@@ -206,54 +206,54 @@ var file_stocklet_order_v1_types_proto_rawDesc = []byte{
0x11, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x6c, 0x65, 0x74, 0x2e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2e,
0x76, 0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
0xea, 0x03, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18,
0xeb, 0x03, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02,
0x69, 0x64, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
0x69, 0x64, 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x6c, 0x65, 0x74, 0x2e, 0x6f, 0x72,
0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x06,
0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x47, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x6c, 0x65, 0x74,
0x2e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e,
0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0c, 0xba, 0x48, 0x09, 0x9a,
0x01, 0x06, 0x2a, 0x04, 0x1a, 0x02, 0x20, 0x00, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12,
0x28, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x63,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0e, 0x74, 0x72, 0x61,
0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x72,
0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d,
0x0a, 0x0b, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20,
0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x01, 0x52, 0x0a,
0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a,
0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28,
0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0a,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03,
0x48, 0x02, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01,
0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74,
0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a,
0x0c, 0x5f, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a,
0x0b, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x2a, 0xb4, 0x01, 0x0a,
0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x18,
0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53,
0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x52,
0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45,
0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x52, 0x44, 0x45, 0x52,
0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10,
0x02, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15,
0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50,
0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x52, 0x44, 0x45, 0x52,
0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45,
0x44, 0x10, 0x05, 0x42, 0x45, 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x68, 0x65, 0x78, 0x6f, 0x6c, 0x61, 0x6e, 0x2f, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x6c,
0x65, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x6b, 0x67, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x67, 0x65, 0x6e, 0x2f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2f, 0x76,
0x31, 0x3b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
0x75, 0x73, 0x42, 0x0b, 0xba, 0x48, 0x08, 0x82, 0x01, 0x05, 0x10, 0x01, 0x22, 0x01, 0x00, 0x52,
0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x47, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x6c, 0x65,
0x74, 0x2e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72,
0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0c, 0xba, 0x48, 0x09,
0x9a, 0x01, 0x06, 0x2a, 0x04, 0x1a, 0x02, 0x20, 0x00, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
0x12, 0x28, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a,
0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0e, 0x74, 0x72,
0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x74,
0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12,
0x2d, 0x0a, 0x0b, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x06,
0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x01, 0x52,
0x0a, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d,
0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01,
0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a,
0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28,
0x03, 0x48, 0x02, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01,
0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f,
0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0e,
0x0a, 0x0c, 0x5f, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x42, 0x0d,
0x0a, 0x0b, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x2a, 0xb4, 0x01,
0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a,
0x18, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e,
0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f,
0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x43,
0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x52, 0x44, 0x45,
0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47,
0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54,
0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x19, 0x0a,
0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50,
0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x52, 0x44, 0x45,
0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54,
0x45, 0x44, 0x10, 0x05, 0x42, 0x45, 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x68, 0x65, 0x78, 0x6f, 0x6c, 0x61, 0x6e, 0x2f, 0x73, 0x74, 0x6f, 0x63, 0x6b,
0x6c, 0x65, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x6b, 0x67,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x67, 0x65, 0x6e, 0x2f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2f,
0x76, 0x31, 0x3b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2025 Declan Teevan
// Copyright (C) 2024 Declan Teevan
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
@@ -18,10 +18,8 @@ package auth
import (
"context"
"buf.build/go/protovalidate"
"github.com/bufbuild/protovalidate-go"
"github.com/rs/zerolog/log"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"google.golang.org/protobuf/types/known/emptypb"
"github.com/hexolan/stocklet/internal/pkg/errors"
@@ -70,7 +68,7 @@ func NewAuthService(cfg *ServiceConfig, store StorageController) *AuthService {
svc := &AuthService{
cfg: cfg,
store: store,
pbVal: &pbVal,
pbVal: pbVal,
}
return svc
@@ -84,51 +82,16 @@ func (svc AuthService) ServiceInfo(ctx context.Context, req *commonpb.ServiceInf
}, nil
}
func (svc AuthService) GetOpenIDProviderConfig(ctx context.Context, req *pb.GetOpenIDProviderConfigRequest) (*pb.GetOpenIDProviderConfigResponse, error) {
return &pb.GetOpenIDProviderConfigResponse{
Issuer: svc.cfg.ServiceOpts.ApiPublicUrl + "/v1/auth",
AuthorizationEndpoint: svc.cfg.ServiceOpts.ApiPublicUrl + "/v1/auth/oauth/authorize",
TokenEndpoint: svc.cfg.ServiceOpts.ApiPublicUrl + "/v1/auth/oauth/token",
IntrospectionEndpoint: svc.cfg.ServiceOpts.ApiPublicUrl + "/v1/auth/oauth/introspect",
RevocationEndpoint: svc.cfg.ServiceOpts.ApiPublicUrl + "/v1/auth/oauth/revoke",
UserinfoEndpoint: svc.cfg.ServiceOpts.ApiPublicUrl + "/v1/auth/oidc/userinfo",
JwksUri: svc.cfg.ServiceOpts.ApiPublicUrl + "/v1/auth/.well-known/jwks",
TokenEndpointAuthMethodsSupported: []string{},
ScopesSupported: []string{},
ClaimsSupported: []string{},
}, nil
}
func (svc AuthService) OAuthAuthorize(ctx context.Context, req *pb.OAuthAuthorizeRequest) (*pb.OAuthAuthorizeResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OAuthAuthorize not implemented")
}
func (svc AuthService) OAuthToken(ctx context.Context, req *pb.OAuthTokenRequest) (*pb.OAuthTokenResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OAuthToken not implemented")
}
func (svc AuthService) OAuthTokenRevocation(ctx context.Context, req *pb.OAuthTokenRevocationRequest) (*pb.OAuthTokenRevocationResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OAuthTokenRevocation not implemented")
}
func (svc AuthService) OAuthTokenIntrospection(ctx context.Context, req *pb.OAuthTokenIntrospectionRequest) (*pb.OAuthTokenIntrospectionResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OAuthTokenIntrospection not implemented")
}
func (svc AuthService) OpenIDUserInfo(ctx context.Context, req *pb.OpenIDUserInfoRequest) (*pb.OpenIDUserInfoResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OpenIDUserInfo not implemented")
}
func (svc AuthService) LoginPassword(ctx context.Context, req *pb.LoginPasswordRequest) (*pb.LoginPasswordResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// provide validation err context to user
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}
// Verify password
match, err := svc.store.VerifyPassword(ctx, req.UserId, req.Password)
if err != nil || !match {
if err != nil || match == false {
return nil, errors.WrapServiceError(errors.ErrCodeForbidden, "invalid user id or password", err)
}
@@ -158,7 +121,7 @@ func (svc AuthService) SetPassword(ctx context.Context, req *pb.SetPasswordReque
}
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// provide validation err context to user
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}
@@ -174,7 +137,7 @@ func (svc AuthService) SetPassword(ctx context.Context, req *pb.SetPasswordReque
func (svc AuthService) ProcessUserDeletedEvent(ctx context.Context, req *eventpb.UserDeletedEvent) (*emptypb.Empty, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// provide validation err context to user
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2025 Declan Teevan
// Copyright (C) 2024 Declan Teevan
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
@@ -68,15 +68,6 @@ type ServiceConfigOpts struct {
// Generated from PrivateKey
PublicJwk *pb.PublicEcJWK
// Env Var: "API_HOSTNAME"
// i.e. "api.example.com"
ApiHostname string
// Env Var: "API_PUBLIC_URL"
// default: http://localhost/api
// i.e: "https://example.com/api" or "https://api.example.com"
ApiPublicUrl string
}
// Load the ServiceConfigOpts
@@ -93,21 +84,6 @@ func (opts *ServiceConfigOpts) Load() error {
// prepare the JWK public key
opts.PublicJwk = preparePublicJwk(opts.PrivateKey)
// load other attributes
apiHostname, err := config.RequireFromEnv("API_HOSTNAME")
if err != nil {
return err
}
opts.ApiHostname = apiHostname
apiPublicUrl, err := config.RequireFromEnv("API_PUBLIC_URL")
if err != nil {
return err
}
opts.ApiPublicUrl = apiPublicUrl
return nil
}

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2025 Declan Teevan
// Copyright (C) 2024 Declan Teevan
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
@@ -32,5 +32,9 @@ func HashPassword(password string) (string, error) {
func CompareHashAndPassword(password string, hashedPassword string) bool {
err := bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(password))
return err == nil
if err != nil {
return false
}
return true
}

View File

@@ -18,7 +18,7 @@ package order
import (
"context"
"buf.build/go/protovalidate"
"github.com/bufbuild/protovalidate-go"
"github.com/rs/zerolog/log"
"google.golang.org/protobuf/types/known/emptypb"
@@ -70,7 +70,7 @@ func NewOrderService(cfg *ServiceConfig, store StorageController) *OrderService
// Initialise the service
return &OrderService{
store: store,
pbVal: &pbVal,
pbVal: pbVal,
}
}
@@ -84,7 +84,7 @@ func (svc OrderService) ServiceInfo(ctx context.Context, req *commonpb.ServiceIn
func (svc OrderService) ViewOrder(ctx context.Context, req *pb.ViewOrderRequest) (*pb.ViewOrderResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// Provide the validation error to the user.
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}
@@ -100,7 +100,7 @@ func (svc OrderService) ViewOrder(ctx context.Context, req *pb.ViewOrderRequest)
func (svc OrderService) ViewOrders(ctx context.Context, req *pb.ViewOrdersRequest) (*pb.ViewOrdersResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// provide validation err context to user
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}
@@ -128,7 +128,7 @@ func (svc OrderService) PlaceOrder(ctx context.Context, req *pb.PlaceOrderReques
}
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// provide validation err context to user
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}

View File

@@ -18,7 +18,7 @@ package payment
import (
"context"
"buf.build/go/protovalidate"
"github.com/bufbuild/protovalidate-go"
"github.com/rs/zerolog/log"
"google.golang.org/protobuf/types/known/emptypb"
@@ -70,7 +70,7 @@ func NewPaymentService(cfg *ServiceConfig, store StorageController) *PaymentServ
// Initialise the service
return &PaymentService{
store: store,
pbVal: &pbVal,
pbVal: pbVal,
}
}

View File

@@ -18,7 +18,7 @@ package product
import (
"context"
"buf.build/go/protovalidate"
"github.com/bufbuild/protovalidate-go"
"github.com/rs/zerolog/log"
"google.golang.org/protobuf/types/known/emptypb"
@@ -68,7 +68,7 @@ func NewProductService(cfg *ServiceConfig, store StorageController) *ProductServ
// Initialise the service
return &ProductService{
store: store,
pbVal: &pbVal,
pbVal: pbVal,
}
}
@@ -82,7 +82,7 @@ func (svc ProductService) ServiceInfo(ctx context.Context, req *commonpb.Service
func (svc ProductService) ViewProduct(ctx context.Context, req *pb.ViewProductRequest) (*pb.ViewProductResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// Provide the validation error to the user.
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}

View File

@@ -18,7 +18,7 @@ package shipping
import (
"context"
"buf.build/go/protovalidate"
"github.com/bufbuild/protovalidate-go"
"github.com/rs/zerolog/log"
"google.golang.org/protobuf/types/known/emptypb"
@@ -66,7 +66,7 @@ func NewShippingService(cfg *ServiceConfig, store StorageController) *ShippingSe
// Initialise the service
return &ShippingService{
store: store,
pbVal: &pbVal,
pbVal: pbVal,
}
}
@@ -80,7 +80,7 @@ func (svc ShippingService) ServiceInfo(ctx context.Context, req *commonpb.Servic
func (svc ShippingService) ViewShipment(ctx context.Context, req *pb.ViewShipmentRequest) (*pb.ViewShipmentResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// Provide the validation error to the user.
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}
@@ -98,7 +98,7 @@ func (svc ShippingService) ViewShipment(ctx context.Context, req *pb.ViewShipmen
func (svc ShippingService) ViewShipmentManifest(ctx context.Context, req *pb.ViewShipmentManifestRequest) (*pb.ViewShipmentManifestResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// Provide the validation error to the user.
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}

View File

@@ -18,7 +18,7 @@ package user
import (
"context"
"buf.build/go/protovalidate"
"github.com/bufbuild/protovalidate-go"
"github.com/rs/zerolog/log"
"github.com/hexolan/stocklet/internal/pkg/errors"
@@ -65,7 +65,7 @@ func NewUserService(cfg *ServiceConfig, store StorageController) *UserService {
// Initialise the service
return &UserService{
store: store,
pbVal: &pbVal,
pbVal: pbVal,
}
}
@@ -79,7 +79,7 @@ func (svc UserService) ServiceInfo(ctx context.Context, req *commonpb.ServiceInf
func (svc UserService) ViewUser(ctx context.Context, req *pb.ViewUserRequest) (*pb.ViewUserResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// Provide the validation error to the user.
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}
@@ -95,7 +95,7 @@ func (svc UserService) ViewUser(ctx context.Context, req *pb.ViewUserRequest) (*
func (svc UserService) RegisterUser(ctx context.Context, req *pb.RegisterUserRequest) (*pb.RegisterUserResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// Provide the validation error to the user.
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}

View File

@@ -18,7 +18,7 @@ package warehouse
import (
"context"
"buf.build/go/protovalidate"
"github.com/bufbuild/protovalidate-go"
"github.com/rs/zerolog/log"
"google.golang.org/protobuf/types/known/emptypb"
@@ -69,7 +69,7 @@ func NewWarehouseService(cfg *ServiceConfig, store StorageController) *Warehouse
// Initialise the service
return &WarehouseService{
store: store,
pbVal: &pbVal,
pbVal: pbVal,
}
}
@@ -83,7 +83,7 @@ func (svc WarehouseService) ServiceInfo(ctx context.Context, req *commonpb.Servi
func (svc WarehouseService) ViewProductStock(ctx context.Context, req *pb.ViewProductStockRequest) (*pb.ViewProductStockResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// Provide the validation error to the user.
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}
@@ -99,7 +99,7 @@ func (svc WarehouseService) ViewProductStock(ctx context.Context, req *pb.ViewPr
func (svc WarehouseService) ViewReservation(ctx context.Context, req *pb.ViewReservationRequest) (*pb.ViewReservationResponse, error) {
// Validate the request args
if err := (*svc.pbVal).Validate(req); err != nil {
if err := svc.pbVal.Validate(req); err != nil {
// Provide the validation error to the user.
return nil, errors.NewServiceError(errors.ErrCodeInvalidArgument, "invalid request: "+err.Error())
}

7
openapitools.json Normal file
View File

@@ -0,0 +1,7 @@
{
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
"spaces": 2,
"generator-cli": {
"version": "7.14.0"
}
}

2352
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

5
package.json Normal file
View File

@@ -0,0 +1,5 @@
{
"devDependencies": {
"@openapitools/openapi-generator-cli": "^2.21.4"
}
}

3
schema/openapi/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
.openapi-generator
.openapi-generator-ignore
README.md

1107
schema/openapi/openapi.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -24,37 +24,6 @@ consumes:
produces:
- application/json
paths:
/v1/auth/.well-known/jwks:
get:
operationId: AuthService_GetJwks2
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1GetJwksResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
tags:
- AuthService
/v1/auth/.well-known/openid-configuration:
get:
summary: |-
OpenID Connect Discovery Endpoint
spec: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest
operationId: AuthService_GetOpenIDProviderConfig2
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1GetOpenIDProviderConfigResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
tags:
- AuthService
/v1/auth/jwks:
get:
operationId: AuthService_GetJwks
@@ -89,191 +58,6 @@ paths:
$ref: '#/definitions/v1LoginPasswordRequest'
tags:
- AuthService
/v1/auth/oauth/authorize:
get:
summary: |-
OAuth 2.0 Endpoint
spec (RFC 6749): https://www.rfc-editor.org/rfc/rfc6749#section-3.1
operationId: AuthService_OAuthAuthorize
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1OAuthAuthorizeResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: responseType
in: query
required: false
type: string
- name: clientId
in: query
required: false
type: string
- name: redirectUri
in: query
required: false
type: string
- name: scope
in: query
required: false
type: string
- name: state
in: query
required: false
type: string
tags:
- AuthService
post:
summary: |-
OAuth 2.0 Endpoint
spec (RFC 6749): https://www.rfc-editor.org/rfc/rfc6749#section-3.1
operationId: AuthService_OAuthAuthorize2
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1OAuthAuthorizeResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/v1OAuthAuthorizeRequest'
tags:
- AuthService
/v1/auth/oauth/introspect:
post:
summary: |-
OAuth 2.0 Endpoint
spec (RFC 7662): https://www.rfc-editor.org/rfc/rfc7662
operationId: AuthService_OAuthTokenIntrospection
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1OAuthTokenIntrospectionResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/v1OAuthTokenIntrospectionRequest'
tags:
- AuthService
/v1/auth/oauth/revoke:
post:
summary: |-
OAuth 2.0 Endpoint
spec (RFC 7009): https://www.rfc-editor.org/rfc/rfc7009
operationId: AuthService_OAuthTokenRevocation
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1OAuthTokenRevocationResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/v1OAuthTokenRevocationRequest'
tags:
- AuthService
/v1/auth/oauth/token:
post:
summary: |-
OAuth 2.0 Endpoint
spec (RFC 6749): https://www.rfc-editor.org/rfc/rfc6749#section-3.2
operationId: AuthService_OAuthToken
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1OAuthTokenResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/v1OAuthTokenRequest'
tags:
- AuthService
/v1/auth/oidc/userinfo:
get:
summary: |-
OpenID Connect Endpoint
spec: https://openid.net/specs/openid-connect-core-1_0.html#UserInfo
operationId: AuthService_OpenIDUserInfo
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1OpenIDUserInfoResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
tags:
- AuthService
post:
summary: |-
OpenID Connect Endpoint
spec: https://openid.net/specs/openid-connect-core-1_0.html#UserInfo
operationId: AuthService_OpenIDUserInfo2
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1OpenIDUserInfoResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/v1OpenIDUserInfoRequest'
tags:
- AuthService
/v1/auth/openid:
get:
summary: |-
OpenID Connect Discovery Endpoint
spec: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest
operationId: AuthService_GetOpenIDProviderConfig
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1GetOpenIDProviderConfigResponse'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/rpcStatus'
tags:
- AuthService
/v1/auth/password:
post:
operationId: AuthService_SetPassword
@@ -691,133 +475,6 @@ definitions:
items:
type: object
$ref: '#/definitions/protobufAny'
typePostalAddress:
type: object
properties:
revision:
type: integer
format: int32
description: |-
The schema revision of the `PostalAddress`. This must be set to 0, which is
the latest revision.
All new revisions **must** be backward compatible with old revisions.
regionCode:
type: string
description: |-
Required. CLDR region code of the country/region of the address. This
is never inferred and it is up to the user to ensure the value is
correct. See http://cldr.unicode.org/ and
http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
for details. Example: "CH" for Switzerland.
languageCode:
type: string
description: |-
Optional. BCP-47 language code of the contents of this address (if
known). This is often the UI language of the input form or is expected
to match one of the languages used in the address' country/region, or their
transliterated equivalents.
This can affect formatting in certain countries, but is not critical
to the correctness of the data and will never affect any validation or
other non-formatting related operations.
If this value is not known, it should be omitted (rather than specifying a
possibly incorrect default).
Examples: "zh-Hant", "ja", "ja-Latn", "en".
postalCode:
type: string
description: |-
Optional. Postal code of the address. Not all countries use or require
postal codes to be present, but where they are used, they may trigger
additional validation with other parts of the address (e.g. state/zip
validation in the U.S.A.).
sortingCode:
type: string
description: |-
Optional. Additional, country-specific, sorting code. This is not used
in most regions. Where it is used, the value is either a string like
"CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number
alone, representing the "sector code" (Jamaica), "delivery area indicator"
(Malawi) or "post office indicator" (e.g. Côte d'Ivoire).
administrativeArea:
type: string
description: |-
Optional. Highest administrative subdivision which is used for postal
addresses of a country or region.
For example, this can be a state, a province, an oblast, or a prefecture.
Specifically, for Spain this is the province and not the autonomous
community (e.g. "Barcelona" and not "Catalonia").
Many countries don't use an administrative area in postal addresses. E.g.
in Switzerland this should be left unpopulated.
locality:
type: string
description: |-
Optional. Generally refers to the city/town portion of the address.
Examples: US city, IT comune, UK post town.
In regions of the world where localities are not well defined or do not fit
into this structure well, leave locality empty and use address_lines.
sublocality:
type: string
description: |-
Optional. Sublocality of the address.
For example, this can be neighborhoods, boroughs, districts.
addressLines:
type: array
items:
type: string
description: |-
Unstructured address lines describing the lower levels of an address.
Because values in address_lines do not have type information and may
sometimes contain multiple values in a single field (e.g.
"Austin, TX"), it is important that the line order is clear. The order of
address lines should be "envelope order" for the country/region of the
address. In places where this can vary (e.g. Japan), address_language is
used to make it explicit (e.g. "ja" for large-to-small ordering and
"ja-Latn" or "en" for small-to-large). This way, the most specific line of
an address can be selected based on the language.
The minimum permitted structural representation of an address consists
of a region_code with all remaining information placed in the
address_lines. It would be possible to format such an address very
approximately without geocoding, but no semantic reasoning could be
made about any of the address components until it was at least
partially resolved.
Creating an address only containing a region_code and address_lines, and
then geocoding is the recommended way to handle completely unstructured
addresses (as opposed to guessing which parts of the address should be
localities or administrative areas).
recipients:
type: array
items:
type: string
description: |-
Optional. The recipient at the address.
This field may, under certain circumstances, contain multiline information.
For example, it might contain "care of" information.
organization:
type: string
description: Optional. The name of the organization at the address.
description: |-
Represents a postal address, e.g. for postal delivery or payments addresses.
Given a postal address, a postal service can deliver items to a premise, P.O.
Box or similar.
It is not intended to model geographical locations (roads, towns,
mountains).
In typical usage an address would be created via user input or from importing
existing data, depending on the type of process.
Advice on address input / editing:
- Use an i18n-ready address widget such as
https://github.com/google/libaddressinput)
- Users should not be presented with UI elements for input or editing of
fields outside countries where that field is used.
For more guidance on how to use this schema, please see:
https://support.google.com/business/answer/6397478
v1AuthToken:
type: object
properties:
@@ -844,35 +501,6 @@ definitions:
items:
type: object
$ref: '#/definitions/v1PublicEcJWK'
v1GetOpenIDProviderConfigResponse:
type: object
properties:
issuer:
type: string
authorizationEndpoint:
type: string
tokenEndpoint:
type: string
introspectionEndpoint:
type: string
revocationEndpoint:
type: string
userinfoEndpoint:
type: string
jwksUri:
type: string
tokenEndpointAuthMethodsSupported:
type: array
items:
type: string
scopesSupported:
type: array
items:
type: string
claimsSupported:
type: array
items:
type: string
v1LoginPasswordRequest:
type: object
properties:
@@ -890,144 +518,6 @@ definitions:
type: string
data:
$ref: '#/definitions/v1AuthToken'
v1OAuthAuthorizeRequest:
type: object
properties:
responseType:
type: string
clientId:
type: string
redirectUri:
type: string
scope:
type: string
state:
type: string
v1OAuthAuthorizeResponse:
type: object
properties:
code:
type: string
state:
type: string
v1OAuthTokenIntrospectionRequest:
type: object
properties:
token:
type: string
tokenTypeHint:
type: string
v1OAuthTokenIntrospectionResponse:
type: object
properties:
active:
type: boolean
scope:
type: string
clientId:
type: string
username:
type: string
tokenType:
type: string
exp:
type: string
format: int64
iat:
type: string
format: int64
nbf:
type: string
format: int64
sub:
type: string
aud:
type: string
iss:
type: string
jti:
type: string
v1OAuthTokenRequest:
type: object
properties:
grantType:
type: string
code:
type: string
redirectUri:
type: string
clientId:
type: string
v1OAuthTokenResponse:
type: object
properties:
accessToken:
type: string
tokenType:
type: string
refreshToken:
type: string
expiresIn:
type: string
format: int64
idToken:
type: string
v1OAuthTokenRevocationRequest:
type: object
properties:
token:
type: string
tokenTypeHint:
type: string
v1OAuthTokenRevocationResponse:
type: object
v1OpenIDUserInfoRequest:
type: object
v1OpenIDUserInfoResponse:
type: object
properties:
sub:
type: string
name:
type: string
familyName:
type: string
givenName:
type: string
middleName:
type: string
nickname:
type: string
preferredUsername:
type: string
profile:
type: string
picture:
type: string
website:
type: string
email:
type: string
emailVerified:
type: boolean
gender:
type: string
birthdate:
type: string
zoneinfo:
type: string
locale:
type: string
phoneNumber:
type: string
phoneNumberVerified:
type: boolean
address:
$ref: '#/definitions/typePostalAddress'
updatedAt:
type: string
format: int64
title: https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
v1Order:
type: object
properties:

View File

@@ -1,12 +1,18 @@
# Generated by buf. DO NOT EDIT.
version: v2
version: v1
deps:
- name: buf.build/bufbuild/protovalidate
commit: 52f32327d4b045a79293a6ad4e7e1236
digest: b5:cbabc98d4b7b7b0447c9b15f68eeb8a7a44ef8516cb386ac5f66e7fd4062cd6723ed3f452ad8c384b851f79e33d26e7f8a94e2b807282b3def1cd966c7eace97
- name: buf.build/googleapis/googleapis
- remote: buf.build
owner: bufbuild
repository: protovalidate
commit: e097f827e65240ac9fd4b1158849a8fc
digest: shake256:f19252436fd9ded945631e2ffaaed28247a92c9015ccf55ae99db9fb3d9600c4fdb00fd2d3bd7701026ec2fd4715c5129e6ae517c25a59ba690020cfe80bf8ad
- remote: buf.build
owner: googleapis
repository: googleapis
commit: b30c5775bfb3485d9da2e87b26590ac9
digest: b5:13f091a467b31c7f734307e6760d864e3319b9c47656f2ada6efa45c643864d9c9e7d5cd372c92cc8e0972deb63f41bc8fc88a5ca21ab2e9ea04d2144752857d
- name: buf.build/grpc-ecosystem/grpc-gateway
digest: shake256:9d0caaf056949a0e1c883b9849d8a2fa66e22f18a2a48f867d1a8c700aa22abee50ad3ef0d8171637457cadc43c584998bdf3adac55da0f9e4614c72686b057d
- remote: buf.build
owner: grpc-ecosystem
repository: grpc-gateway
commit: 3f42134f4c564983838425bc43c7a65f
digest: b5:291b947d8ac09492517557e4e72e294788cb8201afc7d0df7bda80fa10931adb60d4d669208a7696bf24f1ecb2a33a16d4c1e766e6f31809248b00343119569b
digest: shake256:3d11d4c0fe5e05fda0131afefbce233940e27f0c31c5d4e385686aea58ccd30f72053f61af432fa83f1fc11cda57f5f18ca3da26a29064f73c5a0d076bba8d92

View File

@@ -1,17 +1,12 @@
version: v2
version: v1
deps:
- buf.build/bufbuild/protovalidate:v1.0.0
- buf.build/googleapis/googleapis:b30c5775bfb3485d9da2e87b26590ac9
- buf.build/grpc-ecosystem/grpc-gateway:3f42134f4c564983838425bc43c7a65f
- buf.build/googleapis/googleapis
- buf.build/grpc-ecosystem/grpc-gateway
- buf.build/bufbuild/protovalidate
lint:
use:
- STANDARD
except:
- FIELD_NOT_REQUIRED
- PACKAGE_NO_IMPORT_CYCLE
- DEFAULT
allow_comment_ignores: true
breaking:
use:
- FILE
except:
- EXTENSION_NO_DELETE
- FIELD_SAME_DEFAULT

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2025 Declan Teevan
// Copyright (C) 2024 Declan Teevan
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
@@ -22,7 +22,6 @@ import "google/api/annotations.proto";
import "google/api/field_behavior.proto";
import "google/api/visibility.proto";
import "google/protobuf/empty.proto";
import "google/type/postal_address.proto";
import "stocklet/auth/v1/types.proto";
import "stocklet/common/v1/requests.proto";
import "stocklet/events/v1/user.proto";
@@ -38,70 +37,7 @@ service AuthService {
}
rpc GetJwks(GetJwksRequest) returns (GetJwksResponse) {
option (google.api.http) = {
get: "/v1/auth/jwks"
additional_bindings: {get: "/v1/auth/.well-known/jwks"}
};
}
// OpenID Connect Discovery Endpoint
// spec: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest
rpc GetOpenIDProviderConfig(GetOpenIDProviderConfigRequest) returns (GetOpenIDProviderConfigResponse) {
option (google.api.http) = {
get: "/v1/auth/openid"
additional_bindings: {get: "/v1/auth/.well-known/openid-configuration"}
};
}
// OAuth 2.0 Endpoint
// spec (RFC 6749): https://www.rfc-editor.org/rfc/rfc6749#section-3.1
rpc OAuthAuthorize(OAuthAuthorizeRequest) returns (OAuthAuthorizeResponse) {
option (google.api.http) = {
get: "/v1/auth/oauth/authorize"
additional_bindings: {
post: "/v1/auth/oauth/authorize"
body: "*"
}
};
}
// OAuth 2.0 Endpoint
// spec (RFC 6749): https://www.rfc-editor.org/rfc/rfc6749#section-3.2
rpc OAuthToken(OAuthTokenRequest) returns (OAuthTokenResponse) {
option (google.api.http) = {
post: "/v1/auth/oauth/token"
body: "*"
};
}
// OAuth 2.0 Endpoint
// spec (RFC 7009): https://www.rfc-editor.org/rfc/rfc7009
rpc OAuthTokenRevocation(OAuthTokenRevocationRequest) returns (OAuthTokenRevocationResponse) {
option (google.api.http) = {
post: "/v1/auth/oauth/revoke"
body: "*"
};
}
// OAuth 2.0 Endpoint
// spec (RFC 7662): https://www.rfc-editor.org/rfc/rfc7662
rpc OAuthTokenIntrospection(OAuthTokenIntrospectionRequest) returns (OAuthTokenIntrospectionResponse) {
option (google.api.http) = {
post: "/v1/auth/oauth/introspect"
body: "*"
};
}
// OpenID Connect Endpoint
// spec: https://openid.net/specs/openid-connect-core-1_0.html#UserInfo
rpc OpenIDUserInfo(OpenIDUserInfoRequest) returns (OpenIDUserInfoResponse) {
option (google.api.http) = {
get: "/v1/auth/oidc/userinfo"
additional_bindings: {
post: "/v1/auth/oidc/userinfo"
body: "*"
}
};
option (google.api.http) = {get: "/v1/auth/jwks"};
}
rpc LoginPassword(LoginPasswordRequest) returns (LoginPasswordResponse) {
@@ -134,106 +70,6 @@ message GetJwksResponse {
repeated PublicEcJWK keys = 1;
}
message GetOpenIDProviderConfigRequest {}
message GetOpenIDProviderConfigResponse {
string issuer = 1;
string authorization_endpoint = 2;
string token_endpoint = 3;
string introspection_endpoint = 9;
string revocation_endpoint = 10;
string userinfo_endpoint = 4;
string jwks_uri = 5;
repeated string token_endpoint_auth_methods_supported = 6;
repeated string scopes_supported = 7;
repeated string claims_supported = 8;
}
message OAuthAuthorizeRequest {
string response_type = 1;
string client_id = 2;
string redirect_uri = 3;
string scope = 4;
string state = 5;
}
message OAuthAuthorizeResponse {
string code = 1;
string state = 2;
}
message OAuthTokenRequest {
string grant_type = 1;
string code = 2;
string redirect_uri = 3;
string client_id = 4;
}
message OAuthTokenResponse {
string access_token = 1;
string token_type = 2;
string refresh_token = 3;
int64 expires_in = 4;
string id_token = 5;
}
message OAuthTokenRevocationRequest {
string token = 1;
string token_type_hint = 2;
}
message OAuthTokenRevocationResponse {}
message OAuthTokenIntrospectionRequest {
string token = 1;
string token_type_hint = 2;
}
message OAuthTokenIntrospectionResponse {
bool active = 1;
string scope = 2;
string client_id = 3;
string username = 4;
string token_type = 5;
int64 exp = 6;
int64 iat = 7;
int64 nbf = 8;
string sub = 9;
string aud = 10;
string iss = 11;
string jti = 12;
}
message OpenIDUserInfoRequest {}
// https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
message OpenIDUserInfoResponse {
string sub = 1;
string name = 2;
string family_name = 3;
string given_name = 4;
string middle_name = 5;
string nickname = 6;
string preferred_username = 7;
string profile = 8;
string picture = 9;
string website = 10;
string email = 11;
bool email_verified = 12;
string gender = 13;
string birthdate = 14;
string zoneinfo = 15;
string locale = 16;
string phone_number = 17;
bool phone_number_verified = 18;
google.type.PostalAddress address = 19;
int64 updated_at = 20;
}
message LoginPasswordRequest {
string user_id = 1 [
(google.api.field_behavior) = REQUIRED,
@@ -243,8 +79,8 @@ message LoginPasswordRequest {
string password = 2 [
(google.api.field_behavior) = REQUIRED,
(buf.validate.field).string = {
min_len: 1
max_len: 64
min_len: 1;
max_len: 64;
}
];
}
@@ -263,8 +99,8 @@ message SetPasswordRequest {
string password = 2 [
(google.api.field_behavior) = REQUIRED,
(buf.validate.field).string = {
min_len: 1
max_len: 64
min_len: 1;
max_len: 64;
}
];
}

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2025 Declan Teevan
// Copyright (C) 2024 Declan Teevan
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by

1
web/.env.example Normal file
View File

@@ -0,0 +1 @@
PUBLIC_API_URL=http://localhost:80/

23
web/.gitignore vendored Normal file
View File

@@ -0,0 +1,23 @@
node_modules
# Output
.output
.vercel
.netlify
.wrangler
/.svelte-kit
/build
# OS
.DS_Store
Thumbs.db
# Env
.env
.env.*
!.env.example
!.env.test
# Vite
vite.config.js.timestamp-*
vite.config.ts.timestamp-*

1
web/.npmrc Normal file
View File

@@ -0,0 +1 @@
engine-strict=true

9
web/.prettierignore Normal file
View File

@@ -0,0 +1,9 @@
# Package Managers
package-lock.json
pnpm-lock.yaml
yarn.lock
bun.lock
bun.lockb
# Miscellaneous
/static/

16
web/.prettierrc Normal file
View File

@@ -0,0 +1,16 @@
{
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
"overrides": [
{
"files": "*.svelte",
"options": {
"parser": "svelte"
}
}
],
"tailwindStylesheet": "./src/app.css"
}

40
web/eslint.config.js Normal file
View File

@@ -0,0 +1,40 @@
import prettier from 'eslint-config-prettier';
import { includeIgnoreFile } from '@eslint/compat';
import js from '@eslint/js';
import svelte from 'eslint-plugin-svelte';
import globals from 'globals';
import { fileURLToPath } from 'node:url';
import ts from 'typescript-eslint';
import svelteConfig from './svelte.config.js';
const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url));
export default ts.config(
includeIgnoreFile(gitignorePath),
js.configs.recommended,
...ts.configs.recommended,
...svelte.configs.recommended,
prettier,
...svelte.configs.prettier,
{
languageOptions: {
globals: { ...globals.browser, ...globals.node }
},
rules: {
// typescript-eslint strongly recommend that you do not use the no-undef lint rule on TypeScript projects.
// see: https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors
'no-undef': 'off'
}
},
{
files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'],
languageOptions: {
parserOptions: {
projectService: true,
extraFileExtensions: ['.svelte'],
parser: ts.parser,
svelteConfig
}
}
}
);

53
web/package.json Normal file
View File

@@ -0,0 +1,53 @@
{
"name": "web",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "svelte-kit sync || echo ''",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"format": "prettier --write .",
"lint": "prettier --check . && eslint .",
"gen-openapi": "openapi-typescript ../schema/openapi/openapi.yaml -o ./src/lib/api/schema.d.ts"
},
"devDependencies": {
"@eslint/compat": "^1.2.5",
"@eslint/js": "^9.18.0",
"@sveltejs/adapter-auto": "^6.0.0",
"@sveltejs/adapter-node": "^5.2.14",
"@sveltejs/adapter-static": "^3.0.9",
"@sveltejs/kit": "^2.22.0",
"@sveltejs/vite-plugin-svelte": "^6.0.0",
"@tailwindcss/typography": "^0.5.15",
"@tailwindcss/vite": "^4.0.0",
"eslint": "^9.18.0",
"eslint-config-prettier": "^10.0.1",
"eslint-plugin-svelte": "^3.0.0",
"globals": "^16.0.0",
"openapi-typescript": "^7.8.0",
"prettier": "^3.4.2",
"prettier-plugin-svelte": "^3.3.3",
"prettier-plugin-tailwindcss": "^0.6.11",
"svelte": "^5.0.0",
"svelte-check": "^4.0.0",
"tailwindcss": "^4.0.0",
"typescript": "^5.0.0",
"typescript-eslint": "^8.20.0",
"vite": "^7.0.4"
},
"pnpm": {
"onlyBuiltDependencies": [
"esbuild"
]
},
"dependencies": {
"@lucide/svelte": "^0.540.0",
"bits-ui": "^2.11.4",
"next-translate": "^2.6.2",
"openapi-fetch": "^0.14.0"
}
}

3570
web/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

209
web/src/app.css Normal file
View File

@@ -0,0 +1,209 @@
@import 'tailwindcss';
@plugin '@tailwindcss/typography';
[data-theme='catppuccin'] {
--text-scaling: 1.067;
--base-font-color: var(--color-surface-700);
--base-font-color-dark: var(--color-surface-50);
--base-font-family: system-ui;
--base-font-size: inherit;
--base-line-height: inherit;
--base-font-weight: normal;
--base-font-style: normal;
--base-letter-spacing: 0em;
--heading-font-color: var(--color-tertiary-500);
--heading-font-color-dark: var(--color-secondary-200);
--heading-font-family: Seravek, 'Gill Sans Nova', Ubuntu, Calibri, 'DejaVu Sans', source-sans-pro, sans-serif;
--heading-font-weight: bolder;
--heading-font-style: normal;
--heading-letter-spacing: inherit;
--anchor-font-color: var(--color-secondary-600);
--anchor-font-color-dark: var(--color-tertiary-400);
--anchor-font-family: inherit;
--anchor-font-size: inherit;
--anchor-line-height: inherit;
--anchor-font-weight: normal;
--anchor-font-style: normal;
--anchor-letter-spacing: inherit;
--anchor-text-decoration: none;
--anchor-text-decoration-hover: underline;
--anchor-text-decoration-active: none;
--anchor-text-decoration-focus: none;
--spacing: 0.25rem;
--radius-base: 0.75rem;
--radius-container: 0.75rem;
--default-border-width: 2px;
--default-divide-width: 1px;
--default-ring-width: 1px;
--body-background-color: oklch(1 0 0 / 1);
--body-background-color-dark: var(--color-surface-950);
--color-primary-50: oklch(97.6% 0.02 212.47deg);
--color-primary-100: oklch(91.32% 0.04 257.13deg);
--color-primary-200: oklch(84.83% 0.07 268.85deg);
--color-primary-300: oklch(78.59% 0.11 272.12deg);
--color-primary-400: oklch(72.23% 0.14 273.55deg);
--color-primary-500: oklch(66.25% 0.18 273.14deg);
--color-primary-600: oklch(63.84% 0.17 273.48deg);
--color-primary-700: oklch(61.62% 0.15 273.47deg);
--color-primary-800: oklch(59.25% 0.14 273.88deg);
--color-primary-900: oklch(57.01% 0.12 273.81deg);
--color-primary-950: oklch(54.55% 0.11 274.23deg);
--color-primary-contrast-dark: var(--color-primary-950);
--color-primary-contrast-light: var(--color-primary-50);
--color-primary-contrast-50: var(--color-primary-contrast-dark);
--color-primary-contrast-100: var(--color-primary-contrast-dark);
--color-primary-contrast-200: var(--color-primary-contrast-dark);
--color-primary-contrast-300: var(--color-primary-contrast-dark);
--color-primary-contrast-400: var(--color-primary-contrast-light);
--color-primary-contrast-500: var(--color-primary-contrast-light);
--color-primary-contrast-600: var(--color-primary-contrast-light);
--color-primary-contrast-700: var(--color-primary-contrast-light);
--color-primary-contrast-800: var(--color-primary-contrast-light);
--color-primary-contrast-900: var(--color-primary-contrast-light);
--color-primary-contrast-950: var(--color-primary-contrast-light);
--color-secondary-50: oklch(87.05% 0.08 336.55deg);
--color-secondary-100: oklch(83.93% 0.1 336.74deg);
--color-secondary-200: oklch(80.87% 0.12 337.02deg);
--color-secondary-300: oklch(78.17% 0.13 337.85deg);
--color-secondary-400: oklch(75.29% 0.15 338.19deg);
--color-secondary-500: oklch(72.53% 0.17 338.6deg);
--color-secondary-600: oklch(66.07% 0.16 338.29deg);
--color-secondary-700: oklch(59.56% 0.14 338.49deg);
--color-secondary-800: oklch(52.62% 0.12 337.58deg);
--color-secondary-900: oklch(45.7% 0.11 337.72deg);
--color-secondary-950: oklch(38.38% 0.09 336.89deg);
--color-secondary-contrast-dark: var(--color-secondary-950);
--color-secondary-contrast-light: var(--color-secondary-50);
--color-secondary-contrast-50: var(--color-secondary-contrast-dark);
--color-secondary-contrast-100: var(--color-secondary-contrast-dark);
--color-secondary-contrast-200: var(--color-secondary-contrast-dark);
--color-secondary-contrast-300: var(--color-secondary-contrast-dark);
--color-secondary-contrast-400: var(--color-secondary-contrast-dark);
--color-secondary-contrast-500: var(--color-secondary-contrast-dark);
--color-secondary-contrast-600: var(--color-secondary-contrast-dark);
--color-secondary-contrast-700: var(--color-secondary-contrast-light);
--color-secondary-contrast-800: var(--color-secondary-contrast-light);
--color-secondary-contrast-900: var(--color-secondary-contrast-light);
--color-secondary-contrast-950: var(--color-secondary-contrast-light);
--color-tertiary-50: oklch(85.8% 0.08 182.85deg);
--color-tertiary-100: oklch(80.55% 0.09 187.22deg);
--color-tertiary-200: oklch(75.29% 0.09 190.97deg);
--color-tertiary-300: oklch(70.14% 0.1 194.28deg);
--color-tertiary-400: oklch(65.06% 0.1 197.47deg);
--color-tertiary-500: oklch(60.13% 0.1 200.95deg);
--color-tertiary-600: oklch(55.26% 0.09 199.74deg);
--color-tertiary-700: oklch(50.32% 0.08 199.32deg);
--color-tertiary-800: oklch(45.24% 0.07 197.5deg);
--color-tertiary-900: oklch(40.06% 0.06 196.51deg);
--color-tertiary-950: oklch(34.72% 0.05 193.09deg);
--color-tertiary-contrast-dark: var(--color-tertiary-950);
--color-tertiary-contrast-light: var(--color-tertiary-50);
--color-tertiary-contrast-50: var(--color-tertiary-contrast-dark);
--color-tertiary-contrast-100: var(--color-tertiary-contrast-dark);
--color-tertiary-contrast-200: var(--color-tertiary-contrast-dark);
--color-tertiary-contrast-300: var(--color-tertiary-contrast-dark);
--color-tertiary-contrast-400: var(--color-tertiary-contrast-dark);
--color-tertiary-contrast-500: var(--color-tertiary-contrast-dark);
--color-tertiary-contrast-600: var(--color-tertiary-contrast-light);
--color-tertiary-contrast-700: var(--color-tertiary-contrast-light);
--color-tertiary-contrast-800: var(--color-tertiary-contrast-light);
--color-tertiary-contrast-900: var(--color-tertiary-contrast-light);
--color-tertiary-contrast-950: var(--color-tertiary-contrast-light);
--color-success-50: oklch(85.77% 0.11 142.7deg);
--color-success-100: oklch(81.11% 0.13 141.89deg);
--color-success-200: oklch(76.23% 0.14 141.28deg);
--color-success-300: oklch(71.66% 0.16 140.48deg);
--color-success-400: oklch(66.87% 0.17 140.33deg);
--color-success-500: oklch(62.41% 0.18 140.43deg);
--color-success-600: oklch(57.85% 0.16 140.84deg);
--color-success-700: oklch(52.9% 0.14 141.79deg);
--color-success-800: oklch(48.16% 0.12 142.88deg);
--color-success-900: oklch(43% 0.1 145.42deg);
--color-success-950: oklch(38.04% 0.08 149.33deg);
--color-success-contrast-dark: var(--color-success-950);
--color-success-contrast-light: var(--color-success-50);
--color-success-contrast-50: var(--color-success-contrast-dark);
--color-success-contrast-100: var(--color-success-contrast-dark);
--color-success-contrast-200: var(--color-success-contrast-dark);
--color-success-contrast-300: var(--color-success-contrast-dark);
--color-success-contrast-400: var(--color-success-contrast-dark);
--color-success-contrast-500: var(--color-success-contrast-dark);
--color-success-contrast-600: var(--color-success-contrast-light);
--color-success-contrast-700: var(--color-success-contrast-light);
--color-success-contrast-800: var(--color-success-contrast-light);
--color-success-contrast-900: var(--color-success-contrast-light);
--color-success-contrast-950: var(--color-success-contrast-light);
--color-warning-50: oklch(91.93% 0.07 86.52deg);
--color-warning-100: oklch(87.62% 0.09 81.75deg);
--color-warning-200: oklch(83.36% 0.11 78.43deg);
--color-warning-300: oklch(79.3% 0.12 76.32deg);
--color-warning-400: oklch(75.26% 0.14 72.68deg);
--color-warning-500: oklch(71.4% 0.15 67.88deg);
--color-warning-600: oklch(65.78% 0.14 69.03deg);
--color-warning-700: oklch(60.37% 0.12 70.57deg);
--color-warning-800: oklch(54.52% 0.1 72.35deg);
--color-warning-900: oklch(48.88% 0.09 74.8deg);
--color-warning-950: oklch(42.76% 0.07 78.06deg);
--color-warning-contrast-dark: var(--color-warning-950);
--color-warning-contrast-light: var(--color-warning-50);
--color-warning-contrast-50: var(--color-warning-contrast-dark);
--color-warning-contrast-100: var(--color-warning-contrast-dark);
--color-warning-contrast-200: var(--color-warning-contrast-dark);
--color-warning-contrast-300: var(--color-warning-contrast-dark);
--color-warning-contrast-400: var(--color-warning-contrast-dark);
--color-warning-contrast-500: var(--color-warning-contrast-dark);
--color-warning-contrast-600: var(--color-warning-contrast-dark);
--color-warning-contrast-700: var(--color-warning-contrast-light);
--color-warning-contrast-800: var(--color-warning-contrast-light);
--color-warning-contrast-900: var(--color-warning-contrast-light);
--color-warning-contrast-950: var(--color-warning-contrast-light);
--color-error-50: oklch(75.56% 0.13 2.78deg);
--color-error-100: oklch(70.18% 0.16 4.89deg);
--color-error-200: oklch(65.27% 0.18 7.81deg);
--color-error-300: oklch(60.81% 0.2 10.57deg);
--color-error-400: oklch(57.47% 0.22 14.92deg);
--color-error-500: oklch(55.13% 0.22 19.72deg);
--color-error-600: oklch(50.99% 0.2 18.37deg);
--color-error-700: oklch(46.81% 0.18 16.65deg);
--color-error-800: oklch(42.42% 0.16 14.8deg);
--color-error-900: oklch(38.31% 0.14 12.11deg);
--color-error-950: oklch(34.35% 0.11 8.63deg);
--color-error-contrast-dark: var(--color-error-950);
--color-error-contrast-light: var(--color-error-50);
--color-error-contrast-50: var(--color-error-contrast-dark);
--color-error-contrast-100: var(--color-error-contrast-dark);
--color-error-contrast-200: var(--color-error-contrast-dark);
--color-error-contrast-300: var(--color-error-contrast-dark);
--color-error-contrast-400: var(--color-error-contrast-dark);
--color-error-contrast-500: var(--color-error-contrast-light);
--color-error-contrast-600: var(--color-error-contrast-light);
--color-error-contrast-700: var(--color-error-contrast-light);
--color-error-contrast-800: var(--color-error-contrast-light);
--color-error-contrast-900: var(--color-error-contrast-light);
--color-error-contrast-950: var(--color-error-contrast-light);
--color-surface-50: oklch(90.64% 0.01 267.4deg);
--color-surface-100: oklch(85.79% 0.01 271.31deg);
--color-surface-200: oklch(80.91% 0.02 274.81deg);
--color-surface-300: oklch(75.63% 0.02 276.88deg);
--color-surface-400: oklch(70.59% 0.03 278.21deg);
--color-surface-500: oklch(65.43% 0.03 278.8deg);
--color-surface-600: oklch(57.8% 0.03 280.9deg);
--color-surface-700: oklch(50.1% 0.03 280.32deg);
--color-surface-800: oklch(41.9% 0.03 282.54deg);
--color-surface-900: oklch(33.48% 0.03 281.97deg);
--color-surface-950: oklch(24.29% 0.03 283.92deg);
--color-surface-contrast-dark: var(--color-surface-950);
--color-surface-contrast-light: var(--color-surface-50);
--color-surface-contrast-50: var(--color-surface-contrast-dark);
--color-surface-contrast-100: var(--color-surface-contrast-dark);
--color-surface-contrast-200: var(--color-surface-contrast-dark);
--color-surface-contrast-300: var(--color-surface-contrast-dark);
--color-surface-contrast-400: var(--color-surface-contrast-dark);
--color-surface-contrast-500: var(--color-surface-contrast-dark);
--color-surface-contrast-600: var(--color-surface-contrast-dark);
--color-surface-contrast-700: var(--color-surface-contrast-light);
--color-surface-contrast-800: var(--color-surface-contrast-light);
--color-surface-contrast-900: var(--color-surface-contrast-light);
--color-surface-contrast-950: var(--color-surface-contrast-light);
}

13
web/src/app.d.ts vendored Normal file
View File

@@ -0,0 +1,13 @@
// See https://svelte.dev/docs/kit/types#app.d.ts
// for information about these interfaces
declare global {
namespace App {
// interface Error {}
// interface Locals {}
// interface PageData {}
// interface PageState {}
// interface Platform {}
}
}
export {};

11
web/src/app.html Normal file
View File

@@ -0,0 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<script lang="ts">
import LightDarkMode from './LightDarkMode.svelte';
</script>
<footer class="border-t border-surface-200-800 bg-surface-100-900 fixed bottom-0 w-full z-10">
<div class="mx-auto flex w-full max-w-7xl items-center justify-between px-4 py-6 text-sm text-surface-700-300">
<span>Stocklet</span>
<LightDarkMode />
</div>
</footer>

View File

@@ -0,0 +1,39 @@
<script lang="ts">
import { Label, Switch } from "bits-ui";
let checked = $state(false);
$effect(() => {
const mode = localStorage.getItem('mode') || 'light';
checked = mode === 'dark';
document.documentElement.setAttribute('data-mode', mode);
});
const onCheckedChange = (event: { checked: boolean }) => {
const mode = event.checked ? 'dark' : 'light';
document.documentElement.setAttribute('data-mode', mode);
localStorage.setItem('mode', mode);
checked = event.checked;
};
</script>
<svelte:head>
<script>
const mode = localStorage.getItem('mode') || 'light';
document.documentElement.setAttribute('data-mode', mode);
</script>
</svelte:head>
<div class="flex items-center space-x-3">
<Switch.Root
id="light-dark"
checked={checked}
onCheckedChange={(change) => { onCheckedChange({ checked: change }) }}
class="focus-visible:ring-foreground focus-visible:ring-offset-background data-[state=checked]:bg-foreground data-[state=unchecked]:bg-dark-10 data-[state=unchecked]:shadow-mini-inset dark:data-[state=checked]:bg-foreground focus-visible:outline-hidden peer inline-flex h-[36px] min-h-[36px] w-[60px] shrink-0 cursor-pointer items-center rounded-full px-[3px] transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
>
<Switch.Thumb
class="bg-background data-[state=unchecked]:shadow-mini dark:border-background/30 dark:bg-foreground dark:shadow-popover pointer-events-none block size-[30px] shrink-0 rounded-full transition-transform data-[state=checked]:translate-x-6 data-[state=unchecked]:translate-x-0 dark:border dark:data-[state=unchecked]:border"
/>
</Switch.Root>
<Label.Root for="light-dark" class="text-sm font-medium">Light / Dark</Label.Root>
</div>

View File

@@ -0,0 +1,35 @@
<script lang="ts">
import "../app.css";
import { ShoppingCart, User } from '@lucide/svelte';
</script>
<header class="border-b border-surface-200-800 bg-surface-100-900">
<div class="mx-auto w-full max-w-7xl px-4 sm:px-6 lg:px-8">
<div class="flex h-16 items-center justify-between">
<div class="mx-12">
<a href="/" class="flex items-center gap-2 font-semibold">
<img src="/assets/logo.svg" alt="Stocklet" class="h-8 w-auto dark:hidden" />
<img src="/assets/logo-light.svg" alt="Stocklet" class="h-8 w-auto hidden dark:block" />
</a>
</div>
<div class="bg-transparent w-auto p-0 mx-12">
<a href="/">Home</a>
<a href="/about">About</a>
<div class="flex flex-row gap-4">
<a href="/" title="Cart">
<p>Cart</p>
<ShoppingCart class="h-6 w-6" />
</a>
<a href="/" title="User">
<p>User</p>
<User class="h-6 w-6" />
</a>
</div>
</div>
</div>
</div>
</header>

View File

@@ -0,0 +1,8 @@
import createClient from "openapi-fetch";
import type { paths } from "./schema.d";
import { API_URL } from "../config";
const client = createClient<paths>({ baseUrl: API_URL });
export default client;

1614
web/src/lib/api/schema.d.ts vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="107" height="128" viewBox="0 0 107 128"><title>svelte-logo</title><path d="M94.157 22.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282 29.608A29.92 29.92 0 0 0 8.764 49.65a31.5 31.5 0 0 0 3.108 20.231 30 30 0 0 0-4.477 11.183 31.9 31.9 0 0 0 5.448 24.116c10.402 14.887 30.942 19.297 45.791 9.835l26.083-16.624A29.92 29.92 0 0 0 98.235 78.35a31.53 31.53 0 0 0-3.105-20.232 30 30 0 0 0 4.474-11.182 31.88 31.88 0 0 0-5.447-24.116" style="fill:#ff3e00"/><path d="M45.817 106.582a20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.503 18 18 0 0 1 .624-2.435l.49-1.498 1.337.981a33.6 33.6 0 0 0 10.203 5.098l.97.294-.09.968a5.85 5.85 0 0 0 1.052 3.878 6.24 6.24 0 0 0 6.695 2.485 5.8 5.8 0 0 0 1.603-.704L69.27 76.28a5.43 5.43 0 0 0 2.45-3.631 5.8 5.8 0 0 0-.987-4.371 6.24 6.24 0 0 0-6.698-2.487 5.7 5.7 0 0 0-1.6.704l-9.953 6.345a19 19 0 0 1-5.296 2.326 20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.502 17.99 17.99 0 0 1 8.13-12.052l26.081-16.623a19 19 0 0 1 5.3-2.329 20.72 20.72 0 0 1 22.237 8.243 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-.624 2.435l-.49 1.498-1.337-.98a33.6 33.6 0 0 0-10.203-5.1l-.97-.294.09-.968a5.86 5.86 0 0 0-1.052-3.878 6.24 6.24 0 0 0-6.696-2.485 5.8 5.8 0 0 0-1.602.704L37.73 51.72a5.42 5.42 0 0 0-2.449 3.63 5.79 5.79 0 0 0 .986 4.372 6.24 6.24 0 0 0 6.698 2.486 5.8 5.8 0 0 0 1.602-.704l9.952-6.342a19 19 0 0 1 5.295-2.328 20.72 20.72 0 0 1 22.237 8.242 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-8.13 12.053l-26.081 16.622a19 19 0 0 1-5.3 2.328" style="fill:#fff"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

3
web/src/lib/config.ts Normal file
View File

@@ -0,0 +1,3 @@
import { PUBLIC_API_URL } from "$env/static/public";
export const API_URL = PUBLIC_API_URL || "http://localhost:80/v1/";

1
web/src/lib/index.ts Normal file
View File

@@ -0,0 +1 @@
// place files you want to import through the `$lib` alias in this folder.

View File

View File

@@ -0,0 +1,25 @@
<script lang="ts">
import Navbar from '../components/Navbar.svelte';
import Footer from '../components/Footer.svelte';
import '../app.css';
import favicon from '$lib/assets/favicon.svg';
let { children } = $props();
</script>
<svelte:head>
<title>Stocklet</title>
<link rel="icon" href={favicon} />
</svelte:head>
<main data-theme="catppuccin" class="min-h-screen h-full">
<div>
<Navbar />
{@render children?.()}
<Footer />
</div>
</main>

View File

@@ -0,0 +1,7 @@
<script lang="ts">
</script>
<div>
<h5 class="text-xl">Homepage</h5>
</div>

View File

View File

View File

@@ -0,0 +1,18 @@
<script lang="ts">
import type { components } from '$lib/api/schema';
const orders: components['schemas']['v1Order'][] = [
{
id: '1',
status: 'ORDER_STATUS_PENDING',
items: {
'1': 1,
'2': 2,
},
customerId: '1',
transactionId: '1',
createdAt: Date.now().toString(),
updatedAt: Date.now().toString(),
},
];
</script>

View File

@@ -0,0 +1,7 @@
<script lang="ts">
import type { PageProps } from './$types';
let { data }: PageProps = $props();
</script>
<h1>Order ID: {data.id}</h1>

View File

@@ -0,0 +1,7 @@
import type { PageLoad } from './$types';
export const load: PageLoad = ({ params }) => {
return {
id: params.id
};
};

View File

View File

@@ -0,0 +1,7 @@
<script lang="ts">
import type { PageProps } from './$types';
let { data }: PageProps = $props();
</script>
<h1>Product ID: {data.id}</h1>

View File

@@ -0,0 +1,10 @@
// import { error } from '@sveltejs/kit';
import type { PageLoad } from './$types';
export const load: PageLoad = ({ params }) => {
return {
id: params.id
};
// error(404, 'Product not found');
};

28
web/src/stores/auth.ts Normal file
View File

@@ -0,0 +1,28 @@
import { writable } from 'svelte/store';
import type { components } from "$lib/api/schema";
type AuthStore = {
profile: components["schemas"]["v1User"] | null;
tokens: components["schemas"]["v1AuthToken"] | null;
isLoading: boolean;
};
const INITIAL_AUTH_STATE: AuthStore = {
profile: null,
tokens: null,
isLoading: false
};
export const authState = writable<AuthStore>(INITIAL_AUTH_STATE);
export function setTokens(value: components["schemas"]["v1AuthToken"]): void {
authState.update((currentState) => {
return { ...currentState, tokens: value }
});
}
export function setProfile(value: components["schemas"]["v1User"]): void {
authState.update((currentState) => {
return { ...currentState, profile: value }
});
}

0
web/src/stores/cart.ts Normal file
View File

35
web/src/stores/theme.ts Normal file
View File

@@ -0,0 +1,35 @@
import { writable } from 'svelte/store';
function getInitialDark(): boolean {
if (typeof window === 'undefined') return false;
try {
const saved = localStorage.getItem('color-scheme');
if (saved === 'dark') return true;
if (saved === 'light') return false;
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
} catch {
return false;
}
}
export const darkMode = writable<boolean>(getInitialDark());
export function setDarkMode(value: boolean): void {
darkMode.set(value);
}
export function toggleDarkMode(): void {
darkMode.update((v) => !v);
}
if (typeof window !== 'undefined') {
darkMode.subscribe((isDark) => {
const root = document.documentElement;
root.classList.toggle('dark', isDark);
try {
localStorage.setItem('color-scheme', isDark ? 'dark' : 'light');
} catch {
// ignore storage write errors
}
});
}

BIN
web/static/assets/cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,9 @@
font name: sofiapro-light
font link: https://www.fontspring.com/fonts/mostardesign/sofia-pro/sofia-pro-light
font author: Mostardesign
font author site: http://www.motyfo.com/
icon designer: N.K.Narasimhan
icon designer link: /creator/animnarsi@yahoo.com/
{"bg":"#F1E2EC","icon-gradient-0":"#8C48D2","icon-gradient-1":"#CF705A","font":"#331B2B","slogan":"#472f3f"}

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
data-v-423bf9ae=""
viewBox="0 0 434 90"
class="iconLeft"
version="1.1"
id="svg4"
sodipodi:docname="logo-light.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview4"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.8018433"
inkscape:cx="217"
inkscape:cy="44.970395"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<g
data-v-423bf9ae=""
id="7ccbf1f1-d01a-42aa-9755-e9ae79724b7b"
fill="#331B2B"
transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"
style="fill:#ffffff;fill-opacity:1">
<path
d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"
id="path1"
style="fill:#ffffff;fill-opacity:1" />
</g>
<defs
data-v-423bf9ae=""
id="defs2">
<linearGradient
data-v-423bf9ae=""
gradientTransform="rotate(25)"
id="e8769ea9-6fdc-46c7-87bb-cf92f23a859c"
x1="0%"
y1="0%"
x2="100%"
y2="0%">
<stop
data-v-423bf9ae=""
offset="0%"
style="stop-color: rgb(140, 72, 210); stop-opacity: 1;"
id="stop1" />
<stop
data-v-423bf9ae=""
offset="100%"
style="stop-color: rgb(207, 112, 90); stop-opacity: 1;"
id="stop2" />
</linearGradient>
</defs>
<g
data-v-423bf9ae=""
id="7665600e-8875-4e76-bddc-4f57bcba1929"
transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)"
stroke="none"
fill="url(#e8769ea9-6fdc-46c7-87bb-cf92f23a859c)">
<path
d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"
id="path2" />
<path
d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"
id="path3" />
<path
d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"
id="path4" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
data-v-423bf9ae=""
viewBox="0 0 434 90"
class="iconLeft"
version="1.1"
id="svg4"
sodipodi:docname="logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview4"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="4.0852535"
inkscape:cx="149.56232"
inkscape:cy="45.040045"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<g
data-v-423bf9ae=""
id="7ccbf1f1-d01a-42aa-9755-e9ae79724b7b"
fill="#331B2B"
transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"
style="fill:#000000;fill-opacity:1">
<path
d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"
id="path1"
style="fill:#000000;fill-opacity:1" />
</g>
<defs
data-v-423bf9ae=""
id="defs2">
<linearGradient
data-v-423bf9ae=""
gradientTransform="rotate(25)"
id="e8769ea9-6fdc-46c7-87bb-cf92f23a859c"
x1="0%"
y1="0%"
x2="100%"
y2="0%">
<stop
data-v-423bf9ae=""
offset="0%"
style="stop-color: rgb(140, 72, 210); stop-opacity: 1;"
id="stop1" />
<stop
data-v-423bf9ae=""
offset="100%"
style="stop-color: rgb(207, 112, 90); stop-opacity: 1;"
id="stop2" />
</linearGradient>
</defs>
<g
data-v-423bf9ae=""
id="7665600e-8875-4e76-bddc-4f57bcba1929"
transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)"
stroke="none"
fill="url(#e8769ea9-6fdc-46c7-87bb-cf92f23a859c)">
<path
d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"
id="path2" />
<path
d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"
id="path3" />
<path
d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"
id="path4" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1 @@
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 434 90" class="iconLeft"><!----><!----><!----><g data-v-423bf9ae="" id="dd29e1ea-8536-46b0-b33c-374cd452669b" fill="black" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><g data-v-423bf9ae="" id="1f868b94-934e-425c-b97d-c594a0825f88" transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)" stroke="none" fill="black"><path d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"></path><path d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"></path><path d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"></path></g><!----></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1 @@
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 434 90" class="iconLeft"><!----><!----><!----><g data-v-423bf9ae="" id="1257107e-f0fa-4ca8-afb9-859f8a88e819" fill="white" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><g data-v-423bf9ae="" id="edef95aa-1b99-42ce-a29c-747b164bbefc" transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)" stroke="none" fill="white"><path d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"></path><path d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"></path><path d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"></path></g><!----></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1 @@
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 434 90" class="iconLeft"><!----><!----><!----><g data-v-423bf9ae="" id="7ccbf1f1-d01a-42aa-9755-e9ae79724b7b" fill="#331B2B" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,152.75612078133662,14.999999523162842)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><defs data-v-423bf9ae=""><linearGradient data-v-423bf9ae="" gradientTransform="rotate(25)" id="e8769ea9-6fdc-46c7-87bb-cf92f23a859c" x1="0%" y1="0%" x2="100%" y2="0%"><stop data-v-423bf9ae="" offset="0%" style="stop-color: rgb(140, 72, 210); stop-opacity: 1;"></stop><stop data-v-423bf9ae="" offset="100%" style="stop-color: rgb(207, 112, 90); stop-opacity: 1;"></stop></linearGradient></defs><g data-v-423bf9ae="" id="7665600e-8875-4e76-bddc-4f57bcba1929" transform="matrix(3.635041968759201,0,0,3.635041968759201,0.39221588485064274,-0.0000019073486328125)" stroke="none" fill="url(#e8769ea9-6fdc-46c7-87bb-cf92f23a859c)"><path d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"></path><path d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"></path><path d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"></path></g><!----></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1 @@
<svg data-v-fde0c5aa="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300" class="iconLeft"><!----><defs data-v-fde0c5aa=""><!----></defs><rect data-v-fde0c5aa="" fill="#F1E2EC" x="0" y="0" width="300px" height="300px" class="logo-background-square"></rect><defs data-v-fde0c5aa=""><!----></defs><g data-v-fde0c5aa="" id="d7c30393-961b-4b3a-9f0c-019d46f9408e" fill="#331B2B" transform="matrix(2.902307689539151,0,0,2.902307689539151,119.52830478166314,134.96604666640133)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><defs data-v-fde0c5aa=""><linearGradient data-v-fde0c5aa="" gradientTransform="rotate(25)" id="e769396b-e7dc-4463-997c-19b23a564bda" x1="0%" y1="0%" x2="100%" y2="0%"><stop data-v-fde0c5aa="" offset="0%" stop-color="#8C48D2" stop-opacity="1"></stop><stop data-v-fde0c5aa="" offset="100%" stop-color="#CF705A" stop-opacity="1"></stop></linearGradient></defs><g data-v-fde0c5aa="" id="278c653e-b7e8-4473-949a-a2d1c8506d27" stroke="none" fill="url(#e769396b-e7dc-4463-997c-19b23a564bda)" transform="matrix(1.821635044133282,0,0,1.821635044133282,40,127.449069999602)"><path d="M30.231 8.097h-5.692v7.71h5.692v-7.71zM37.748 8.097h-6.023v7.71h6.023v-7.71z"></path><path d="M35.647 22.106c0 .249-.026.47-.055.663h2.155v-5.471H13.569a.75.75 0 01-.36-.084.651.651 0 01-.276-.275L3.207 0H0l12.768 22.77h2.266c-.028-.138-.028-.276-.028-.414 0-1.022.359-1.907 1.105-2.625.718-.719 1.575-1.078 2.598-1.078.995 0 1.852.359 2.57 1.078.746.718 1.105 1.603 1.105 2.625 0 .138 0 .276-.028.414h6.024a2.385 2.385 0 01-.083-.663c0-1.021.359-1.906 1.078-2.625.718-.718 1.574-1.078 2.569-1.078 1.023 0 1.907.36 2.626 1.078.719.718 1.077 1.603 1.077 2.624z"></path><path d="M34.404 22.079a2.37 2.37 0 00-.719-1.74 2.373 2.373 0 00-1.741-.719c-.663 0-1.243.248-1.713.719a2.372 2.372 0 00-.719 1.74c0 .249.028.497.111.69.11.387.304.719.607 1.023.47.47 1.05.719 1.713.719.691 0 1.271-.249 1.741-.719.304-.305.498-.637.635-1.023.058-.193.085-.441.085-.69zM23.047 15.807v-7.71h-5.859v7.71h5.859zM15.696 8.097H9.589l4.422 7.71h1.685v-7.71zM16.221 22.328c0 .139.028.304.056.441.082.471.303.912.663 1.271.497.471 1.077.719 1.74.719.664 0 1.244-.248 1.742-.719.359-.359.58-.801.69-1.271.027-.138.027-.303.027-.441 0-.691-.248-1.271-.718-1.741-.498-.47-1.078-.719-1.742-.719-.663 0-1.243.249-1.74.719a2.384 2.384 0 00-.718 1.741z"></path></g><!----></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1 @@
<svg data-v-fde0c5aa="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300" class="font"><!----><defs data-v-fde0c5aa=""><!----></defs><rect data-v-fde0c5aa="" fill="#F1E2EC" x="0" y="0" width="300px" height="300px" class="logo-background-square"></rect><defs data-v-fde0c5aa=""><linearGradient data-v-fde0c5aa="" gradientTransform="rotate(25)" id="55d34800-f110-4512-9699-1f5d7d1d4408" x1="0%" y1="0%" x2="100%" y2="0%"><stop data-v-fde0c5aa="" offset="0%" stop-color="#8C48D2" stop-opacity="1"></stop><stop data-v-fde0c5aa="" offset="100%" stop-color="#CF705A" stop-opacity="1"></stop></linearGradient></defs><g data-v-fde0c5aa="" id="c8ec85ad-7159-4a52-a513-df3587f56c8b" fill="url(#55d34800-f110-4512-9699-1f5d7d1d4408)" transform="matrix(4.618937540760917,0,0,4.618937540760917,36.44341818171332,126.07390433175163)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><!----></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1 @@
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 275.84943617686315 60" class="font"><!----><!----><!----><g data-v-423bf9ae="" id="9e49fb69-d1b0-46ae-beda-1ae5f9d0dd96" fill="black" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,-4.459463019932912,-4.76837158203125e-7)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><!----></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1 @@
<svg data-v-423bf9ae="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 275.84943617686315 60" class="font"><!----><!----><!----><g data-v-423bf9ae="" id="a893fd5a-3adf-4cc3-81b4-6b589464f3c0" fill="white" transform="matrix(5.7915059834320255,0,0,5.7915059834320255,-4.459463019932912,-4.76837158203125e-7)"><path d="M4.00 10.36C6.12 10.36 7.24 8.92 7.24 7.56C7.24 6.16 6.17 5.33 4.65 4.96L3.35 4.65C1.90 4.31 1.76 3.54 1.76 3.09C1.76 2.02 2.79 1.33 3.88 1.33C5.04 1.33 5.92 2.02 5.98 3.08L6.90 3.08C6.85 1.47 5.54 0.46 3.91 0.46C2.31 0.46 0.84 1.50 0.84 3.09C0.84 3.86 1.13 5.03 3.12 5.50L4.42 5.81C5.38 6.05 6.31 6.55 6.31 7.60C6.31 8.51 5.54 9.49 4.00 9.49C2.65 9.49 1.78 8.58 1.68 7.63L0.77 7.63C0.84 9.03 2.11 10.36 4.00 10.36ZM11.82 3.68L10.32 3.68L10.32 1.08L9.44 1.08L9.44 3.68L8.25 3.68L8.25 4.45L9.44 4.45L9.44 10.22L10.32 10.22L10.32 4.45L11.82 4.45ZM16.02 10.36C17.88 10.36 19.45 9.00 19.45 6.93C19.45 4.86 17.88 3.54 16.02 3.54C14.15 3.54 12.60 4.86 12.60 6.93C12.60 9.00 14.15 10.36 16.02 10.36ZM16.02 9.51C14.63 9.51 13.50 8.48 13.50 6.93C13.50 5.39 14.63 4.40 16.02 4.40C17.39 4.40 18.55 5.39 18.55 6.93C18.55 8.48 17.39 9.51 16.02 9.51ZM24.23 10.35C25.17 10.35 26.00 10.01 26.59 9.45L26.03 8.85C25.58 9.25 24.96 9.49 24.26 9.49C22.83 9.49 21.67 8.47 21.67 6.94C21.67 5.40 22.83 4.40 24.26 4.40C24.96 4.40 25.58 4.65 26.03 5.05L26.59 4.44C26.00 3.89 25.17 3.54 24.23 3.54C22.37 3.54 20.78 4.87 20.78 6.94C20.78 9.02 22.37 10.35 24.23 10.35ZM33.66 10.22L30.03 6.52L32.83 3.68L31.58 3.68L29.13 6.19L29.13 0L28.24 0L28.24 10.22L29.13 10.22L29.13 6.86L32.44 10.22ZM34.68 10.22L35.57 10.22L35.57 0L34.68 0ZM43.92 6.93C43.92 4.86 42.56 3.54 40.70 3.54C38.85 3.54 37.37 4.86 37.37 6.93C37.37 9.00 38.85 10.36 40.70 10.36C41.93 10.36 43.05 9.77 43.62 8.72L42.85 8.39C42.42 9.10 41.62 9.51 40.73 9.51C39.41 9.51 38.43 8.72 38.28 7.32L43.90 7.32C43.92 7.20 43.92 7.06 43.92 6.93ZM38.29 6.55C38.46 5.15 39.41 4.40 40.70 4.40C41.97 4.40 42.91 5.19 43.04 6.55ZM48.40 3.68L46.90 3.68L46.90 1.08L46.02 1.08L46.02 3.68L44.83 3.68L44.83 4.45L46.02 4.45L46.02 10.22L46.90 10.22L46.90 4.45L48.40 4.45Z"></path></g><!----><!----></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

3
web/static/robots.txt Normal file
View File

@@ -0,0 +1,3 @@
# allow crawling everything by default
User-agent: *
Disallow:

28
web/svelte.config.js Normal file
View File

@@ -0,0 +1,28 @@
import adapter from '@sveltejs/adapter-node';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://svelte.dev/docs/kit/integrations
// for more information about preprocessors
preprocess: vitePreprocess(),
kit: {
// Use static adapter for Docker deployment
// adapter: adapter({
// pages: 'build',
// assets: 'build',
// fallback: 'index.html',
// precompress: false,
// strict: false
// })
adapter: adapter({
out: 'build',
precompress: false,
envPrefix: ''
})
}
};
export default config;

19
web/tsconfig.json Normal file
View File

@@ -0,0 +1,19 @@
{
"extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true,
"moduleResolution": "bundler"
}
// Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
// except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
//
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
// from the referenced tsconfig.json - TypeScript does not merge them in
}

7
web/vite.config.ts Normal file
View File

@@ -0,0 +1,7 @@
import tailwindcss from '@tailwindcss/vite';
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()]
});