From 6985f6866bac4ebb6d12e9ed116e8d8a37e0566f Mon Sep 17 00:00:00 2001 From: thenav56 Date: Wed, 2 Jul 2025 17:45:09 +0545 Subject: [PATCH 1/7] refactor!: remove nginx-serve --- .github/workflows/publish-nginx-serve.yml | 84 ----------------------- Dockerfile | 23 ------- backend | 2 +- nginx-serve/apply-config.sh | 39 ----------- nginx-serve/nginx.conf.template | 18 ----- 5 files changed, 1 insertion(+), 165 deletions(-) delete mode 100644 .github/workflows/publish-nginx-serve.yml delete mode 100755 nginx-serve/apply-config.sh delete mode 100644 nginx-serve/nginx.conf.template diff --git a/.github/workflows/publish-nginx-serve.yml b/.github/workflows/publish-nginx-serve.yml deleted file mode 100644 index 837781a..0000000 --- a/.github/workflows/publish-nginx-serve.yml +++ /dev/null @@ -1,84 +0,0 @@ -name: Publish nginx serve image - -on: - workflow_dispatch: - push: - branches: - - develop - - project/* - -permissions: - packages: write - - -jobs: - publish_image: - name: Publish Docker Image - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@main - with: - submodules: true - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: 🐳 Prepare Docker - id: prep - env: - IMAGE_NAME: ghcr.io/${{ github.repository }} - run: | - BRANCH_NAME=$(echo $GITHUB_REF_NAME | sed 's|:|-|' | tr '[:upper:]' '[:lower:]' | sed 's/_/-/g' | cut -c1-100 | sed 's/-*$//') - - GIT_HASH="c$(echo $GITHUB_SHA | head -c7)" - - # XXX: Check if there is a slash in the BRANCH_NAME eg: project/add-docker - if [[ "$BRANCH_NAME" == *"/"* ]]; then - # XXX: Change the docker image package to -alpha - IMAGE_NAME="$IMAGE_NAME-alpha" - TAG="$(echo "$BRANCH_NAME" | sed 's|/|-|g').$(echo $GIT_HASH)" - else - TAG="$BRANCH_NAME.$(echo $GIT_HASH)" - fi - - IMAGE_NAME=$(echo $IMAGE_NAME | tr '[:upper:]' '[:lower:]') - echo "tagged_image_name=${IMAGE_NAME}" >> $GITHUB_OUTPUT - echo "tag=${TAG}" >> $GITHUB_OUTPUT - echo "tagged_image=${IMAGE_NAME}:${TAG}" >> $GITHUB_OUTPUT - echo "::notice::Tagged docker image: ${IMAGE_NAME}:${TAG}" - - - name: 🐳 Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v3 - - - name: 🐳 Cache Docker layers - uses: actions/cache@v4 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.ref }} - restore-keys: | - ${{ runner.os }}-buildx-refs/develop - ${{ runner.os }}-buildx- - - - name: 🐳 Docker build - uses: docker/build-push-action@v6 - with: - context: . - builder: ${{ steps.buildx.outputs.name }} - file: Dockerfile - target: nginx-serve - load: true - push: true - tags: ${{ steps.prep.outputs.tagged_image }} - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache-new - - - name: 🐳 Move docker cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache diff --git a/Dockerfile b/Dockerfile index 57d02ba..229faa2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,30 +20,7 @@ RUN pnpm install COPY . /code/ -# Dynamic configs. Can be changed with containers. (Placeholder values) -ENV APP_TITLE=APP_TITLE_PLACEHOLDER -ENV APP_ENVIRONMENT=APP_ENVIRONMENT_PLACEHOLDER -ENV APP_GRAPHQL_DOMAIN=APP_GRAPHQL_DOMAIN_PLACEHOLDER -ENV APP_UMAMI_SRC=APP_UMAMI_SRC_PLACEHOLDER -ENV APP_UMAMI_ID=APP_UMAMI_ID_PLACEHOLDER -ENV APP_SENTRY_DSN=APP_SENTRY_DSN_PLACEHOLDER - # Build variables (Requires backend pulled) ENV APP_GRAPHQL_CODEGEN_ENDPOINT=./backend/schema.graphql RUN pnpm generate:type && pnpm build - -# --------------------------------------------------------------------------- -FROM nginx:1 AS nginx-serve - -LABEL maintainer="Togglecorp Dev" -LABEL org.opencontainers.image.source="https://github.com/toggle-corp/timur" - -COPY ./nginx-serve/apply-config.sh /docker-entrypoint.d/ -COPY ./nginx-serve/nginx.conf.template /etc/nginx/templates/default.conf.template -COPY --from=nginx-build /code/build /code/build - -# NOTE: Used by apply-config.sh -ENV APPLY_CONFIG__SOURCE_DIRECTORY=/code/build/ -ENV APPLY_CONFIG__DESTINATION_DIRECTORY=/usr/share/nginx/html/ -ENV APPLY_CONFIG__OVERWRITE_DESTINATION=true diff --git a/backend b/backend index 3f638e0..6a90d8c 160000 --- a/backend +++ b/backend @@ -1 +1 @@ -Subproject commit 3f638e051c66d561b36758e28553a0f188f461bb +Subproject commit 6a90d8c605a3e02ea16968b03e8732c2f95feb9c diff --git a/nginx-serve/apply-config.sh b/nginx-serve/apply-config.sh deleted file mode 100755 index afb23eb..0000000 --- a/nginx-serve/apply-config.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -xe - -SOURCE_DIRECTORY=${APPLY_CONFIG__SOURCE_DIRECTORY?Required} -DESTINATION_DIRECTORY=${APPLY_CONFIG__DESTINATION_DIRECTORY?Required} - -# Parse arguments for --overwrite option -OVERWRITE_DESTINATION=${APPLY_CONFIG__OVERWRITE_DESTINATION:-false} -for arg in "$@"; do - if [[ "$arg" == "--overwrite" ]]; then - OVERWRITE_DESTINATION=true - fi -done - - -if [ -d "$DESTINATION_DIRECTORY" ]; then - if [ "$OVERWRITE_DESTINATION" == "true" ]; then - echo "Destination directory <$DESTINATION_DIRECTORY> already exists. Force deleting..." - rm -rf "$DESTINATION_DIRECTORY" - else - echo "Destination directory <$DESTINATION_DIRECTORY> already exists. Please delete and try again, or use --overwrite to force delete." - exit 1 - fi -fi - -mkdir -p $(dirname "$DESTINATION_DIRECTORY") -cp -r --no-target-directory "$SOURCE_DIRECTORY" "$DESTINATION_DIRECTORY" - -find "$DESTINATION_DIRECTORY" -type f -exec sed -i "s|\|$APP_TITLE|g" {} + -find "$DESTINATION_DIRECTORY" -type f -exec sed -i "s|\|$APP_ENVIRONMENT|g" {} + -find "$DESTINATION_DIRECTORY" -type f -exec sed -i "s|\|$APP_GRAPHQL_DOMAIN|g" {} + -find "$DESTINATION_DIRECTORY" -type f -exec sed -i "s|\|$APP_UMAMI_SRC|g" {} + -find "$DESTINATION_DIRECTORY" -type f -exec sed -i "s|\|$APP_UMAMI_ID|g" {} + -find "$DESTINATION_DIRECTORY" -type f -exec sed -i "s|\|$APP_SENTRY_DSN|g" {} + - -# Show diffs (Useful to debug issues) -set +xe -find "$SOURCE_DIRECTORY" -type f -printf '%P\n' | while IFS= read -r file; do - diff -W 100 <(fold -w 100 "$SOURCE_DIRECTORY/$file") <(fold -w 100 "$DESTINATION_DIRECTORY/$file") --suppress-common-lines -done diff --git a/nginx-serve/nginx.conf.template b/nginx-serve/nginx.conf.template deleted file mode 100644 index c3ab6a5..0000000 --- a/nginx-serve/nginx.conf.template +++ /dev/null @@ -1,18 +0,0 @@ -# vim: filetype=nginx - -server { - listen 80; - server_name _; - - gzip on; - gzip_comp_level 4; - - gzip_types text/plain text/css application/json - application/x-javascript text/xml application/xml - application/xml+rss text/javascript; - - location / { - alias $APPLY_CONFIG__DESTINATION_DIRECTORY; - try_files $uri /index.html; - } -} From c1a2ac8f6fe71a4b7b1c05fbb889c46cb5960432 Mon Sep 17 00:00:00 2001 From: thenav56 Date: Mon, 7 Jul 2025 21:39:04 +0545 Subject: [PATCH 2/7] chore: update to latest vite-plugin-validate-env --- package.json | 2 +- pnpm-lock.yaml | 136 ++++++++++++++++++++++++------------------------- vite.config.ts | 6 +-- 3 files changed, 71 insertions(+), 73 deletions(-) diff --git a/package.json b/package.json index e37c23a..13f30b2 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@graphql-codegen/cli": "^5.0.2", "@graphql-codegen/client-preset": "^4.3.3", "@graphql-typed-document-node/core": "^3.2.0", - "@julr/vite-plugin-validate-env": "^1.0.1", + "@julr/vite-plugin-validate-env": "^2.2.0", "@types/node": "^20.11.6", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc3f700..5733008 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,8 +71,8 @@ devDependencies: specifier: ^3.2.0 version: 3.2.0(graphql@16.9.0) '@julr/vite-plugin-validate-env': - specifier: ^1.0.1 - version: 1.0.1(vite@5.0.10)(zod@3.23.8) + specifier: ^2.2.0 + version: 2.2.0(vite@5.0.10) '@types/node': specifier: ^20.11.6 version: 20.11.6 @@ -241,10 +241,6 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@antfu/utils@0.7.10: - resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - dev: true - /@apideck/better-ajv-errors@0.3.6(ajv@8.17.1): resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} @@ -3397,21 +3393,17 @@ packages: '@jridgewell/sourcemap-codec': 1.5.0 dev: true - /@julr/vite-plugin-validate-env@1.0.1(vite@5.0.10)(zod@3.23.8): - resolution: {integrity: sha512-ngqm/Tt0tL5hP/egIBi40hr8WO4h0ZdLjNjF3tDTZzdG2ov8R5DyoDkKk/CQqZqCsrvBSE5ATc6fu7NGPmhrow==} - engines: {node: '>=16'} + /@julr/vite-plugin-validate-env@2.2.0(vite@5.0.10): + resolution: {integrity: sha512-R00QZcgMNsATxI9beeM1n7VwMcsSyxFnvElJ0S1ZmglmeGzNyOzaVlfxyGgRb0NmIPYGwPSoJOnFI5BYR7Quug==} + engines: {node: '>=22'} peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0 - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 dependencies: - '@poppinss/cliui': 6.4.1 - '@poppinss/validator-lite': 1.0.3 - unconfig: 0.3.13 + '@poppinss/cliui': 6.4.4 + '@poppinss/validator-lite': 2.1.1 + '@standard-schema/spec': 1.0.0 + unconfig: 7.3.2 vite: 5.0.10(@types/node@20.11.6) - zod: 3.23.8 dev: true /@kamilkisiela/fast-url-parser@1.1.4: @@ -3523,33 +3515,29 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@poppinss/cliui@6.4.1: - resolution: {integrity: sha512-tdV3QpAfrPFRLPOh98F8QxWBvwYF3ziWGGtpVqfZtFNTFkC7nQnVQlUW55UtQ7rkeMmFohxfDI+2JNWScGJ1jQ==} - engines: {node: '>=18.16.0'} + /@poppinss/cliui@6.4.4: + resolution: {integrity: sha512-yJfm+3yglxdeH85C+YebxZ1zsTB4pBh+QwCuxJcxV/pVbxagn63uYyxqnQif2sKWi+nkNZxuyemON3WrtGMBCQ==} dependencies: - '@poppinss/colors': 4.1.3 - cli-boxes: 3.0.0 + '@poppinss/colors': 4.1.5 + cli-boxes: 4.0.1 cli-table3: 0.6.5 cli-truncate: 4.0.0 - log-update: 6.0.0 + log-update: 6.1.0 pretty-hrtime: 1.0.3 string-width: 7.2.0 - supports-color: 9.4.0 + supports-color: 10.0.0 terminal-size: 4.0.0 wordwrap: 1.0.0 dev: true - /@poppinss/colors@4.1.3: - resolution: {integrity: sha512-A0FjJ6x14donWDN3bHAFFjJaPWTwM2PgWT834+bPKVK6Xukf25CscoRqCPYI939a8yuJFX9PYWWnVbUVI0E2Cg==} - engines: {node: '>=18.16.0'} + /@poppinss/colors@4.1.5: + resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} dependencies: kleur: 4.1.5 dev: true - /@poppinss/validator-lite@1.0.3: - resolution: {integrity: sha512-u4dmT7PDHwNtxY3q1jHVp/u+hMEEcBlkzd37QwwM4tVt/0mLlEDttSfPQ+TT7sqPG4VEtWKwVSlMInwPUYyJpA==} - dependencies: - validator: 13.12.0 + /@poppinss/validator-lite@2.1.1: + resolution: {integrity: sha512-wD64/vpViB0qV40iR/nXYJJb0pOyXW4dvXGs2mR7lNiIUTZr1ceWlhxHu9XU8kQhTjaIDQphgMa9pPBa3scxPg==} dev: true /@quansync/fs@0.1.3: @@ -3900,6 +3888,10 @@ packages: p-map: 4.0.0 dev: true + /@standard-schema/spec@1.0.0: + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + dev: true + /@surma/rollup-plugin-off-main-thread@2.2.3: resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} dependencies: @@ -4680,9 +4672,11 @@ packages: type-fest: 0.21.3 dev: true - /ansi-escapes@6.2.1: - resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} - engines: {node: '>=14.16'} + /ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + dependencies: + environment: 1.1.0 dev: true /ansi-regex@5.0.1: @@ -5262,9 +5256,9 @@ packages: engines: {node: '>=6'} dev: true - /cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} + /cli-boxes@4.0.1: + resolution: {integrity: sha512-5IOn+jcCEHEraYolBPs/sT4BxYCe2nHg374OPiItB1O96KZFseS2gthU4twyYzeDcFew4DaUM/xwc5BQf08JJw==} + engines: {node: '>=18.20 <19 || >=20.10'} dev: true /cli-cursor@3.1.0: @@ -5274,11 +5268,11 @@ packages: restore-cursor: 3.1.0 dev: true - /cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} dependencies: - restore-cursor: 4.0.0 + restore-cursor: 5.1.0 dev: true /cli-spinners@2.9.2: @@ -5908,6 +5902,11 @@ packages: engines: {node: '>=6'} dev: true + /environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + dev: true + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -7862,12 +7861,12 @@ packages: wrap-ansi: 6.2.0 dev: true - /log-update@6.0.0: - resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} + /log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} dependencies: - ansi-escapes: 6.2.1 - cli-cursor: 4.0.0 + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 slice-ansi: 7.1.0 strip-ansi: 7.1.0 wrap-ansi: 9.0.0 @@ -8006,6 +8005,11 @@ packages: engines: {node: '>=12'} dev: true + /mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -8217,6 +8221,13 @@ packages: mimic-fn: 4.0.0 dev: true + /onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + dependencies: + mimic-function: 5.0.1 + dev: true + /open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} @@ -9283,12 +9294,12 @@ packages: signal-exit: 3.0.7 dev: true - /restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 + onetime: 7.0.0 + signal-exit: 4.1.0 dev: true /reusify@1.0.4: @@ -9968,6 +9979,11 @@ packages: resolution: {integrity: sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==} dev: true + /supports-color@10.0.0: + resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==} + engines: {node: '>=18'} + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -9982,11 +9998,6 @@ packages: has-flag: 4.0.0 dev: true - /supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} - dev: true - /supports-hyperlinks@3.0.0: resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} engines: {node: '>=14.18'} @@ -10342,14 +10353,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /unconfig@0.3.13: - resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==} - dependencies: - '@antfu/utils': 0.7.10 - defu: 6.1.4 - jiti: 1.21.6 - dev: true - /unconfig@7.3.2: resolution: {integrity: sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==} dependencies: @@ -10488,11 +10491,6 @@ packages: convert-source-map: 2.0.0 dev: true - /validator@13.12.0: - resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} - engines: {node: '>= 0.10'} - dev: true - /value-or-promise@1.0.12: resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} engines: {node: '>=12'} diff --git a/vite.config.ts b/vite.config.ts index a7606d0..e732cdb 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -15,8 +15,6 @@ import svgr from 'vite-plugin-svgr'; import webfontDownload from 'vite-plugin-webfont-dl'; import tsconfigPaths from 'vite-tsconfig-paths'; -import envConfig from './env'; - /* Get commit hash */ const commitHash = execSync('git rev-parse --short HEAD').toString(); @@ -93,7 +91,9 @@ export default defineConfig(({ mode }) => { reactSwc(), tsconfigPaths(), webfontDownload(), - validateEnv(envConfig), + validateEnv({ + configFile: 'env', + }), isProd ? compression() : undefined, isProd ? visualizer({ sourcemap: true }) : undefined, ], From 0ffe17b61e0f507921c2ab5e72db0659f7c67979 Mon Sep 17 00:00:00 2001 From: tnagorra Date: Fri, 11 Jul 2025 09:46:03 +0545 Subject: [PATCH 3/7] chore(deps): update knip to v5.61.3 Reason: updated knip to fix compatibility issues with cli-boxes --- knip.json | 7 +- package.json | 2 +- pnpm-lock.yaml | 338 ++++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 282 insertions(+), 65 deletions(-) diff --git a/knip.json b/knip.json index 65170cc..183f8ae 100644 --- a/knip.json +++ b/knip.json @@ -1,20 +1,15 @@ { "$schema": "https://unpkg.com/knip@5/schema.json", "ignoreDependencies": [ - "virtual:pwa-info", - "virtual:pwa-register", + "dotenv", "sharp" ], "entry": [ - "src/**/*.test.ts", - "src/**/*.test.tsx", "generated/**/*.ts", "src/index.tsx!" ], "project": [ "src/**/*.d.ts", - "src/**/*.test.ts", - "src/**/*.test.tsx", "src/**/*.tsx!", "src/**/*.ts!" ] diff --git a/package.json b/package.json index 13f30b2..eb17967 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "eslint-plugin-simple-import-sort": "^10.0.0", "graphql": "^16.9.0", "happy-dom": "^15.7.3", - "knip": "^5.29.2", + "knip": "^5.61.3", "patch-package": "^7.0.0", "postcss": "^8.3.0", "postcss-nested": "^6.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5733008..9279b60 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,8 +140,8 @@ devDependencies: specifier: ^15.7.3 version: 15.7.3 knip: - specifier: ^5.29.2 - version: 5.29.2(@types/node@20.11.6)(typescript@5.0.4) + specifier: ^5.61.3 + version: 5.61.3(@types/node@20.11.6)(typescript@5.0.4) patch-package: specifier: ^7.0.0 version: 7.0.0 @@ -2291,6 +2291,15 @@ packages: resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} dev: true + /@emnapi/core@1.4.4: + resolution: {integrity: sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g==} + requiresBuild: true + dependencies: + '@emnapi/wasi-threads': 1.0.3 + tslib: 2.6.3 + dev: true + optional: true + /@emnapi/runtime@1.4.3: resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} requiresBuild: true @@ -2299,6 +2308,14 @@ packages: dev: true optional: true + /@emnapi/wasi-threads@1.0.3: + resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==} + requiresBuild: true + dependencies: + tslib: 2.6.3 + dev: true + optional: true + /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -3463,6 +3480,16 @@ packages: '@lezer/highlight': 1.2.0 dev: false + /@napi-rs/wasm-runtime@0.2.12: + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + requiresBuild: true + dependencies: + '@emnapi/core': 1.4.4 + '@emnapi/runtime': 1.4.3 + '@tybys/wasm-util': 0.10.0 + dev: true + optional: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3484,6 +3511,160 @@ packages: fastq: 1.17.1 dev: true + /@oxc-resolver/binding-android-arm-eabi@11.5.2: + resolution: {integrity: sha512-g3Dh0uN8E1fJAi+m5LxDU1frUz5q4ox/arqXGpEmt+u7wRXBpXnGsxDV/GFB59AmVWbQAiyhVCiM2GymkaxwwQ==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-android-arm64@11.5.2: + resolution: {integrity: sha512-bij8HIMXYGsxdxuvycpkgvTfBpj6tv5jKaZ4tcPKPJjewH5WYIaSAT4PJYlAidP/0m8jyPu5GGkslF7/qPUhAg==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-darwin-arm64@11.5.2: + resolution: {integrity: sha512-C2hjujTOPgyi4sgc4UL+JHlEiClTNncLUdwiilMnwjiEcxSe7ubBmeZRENUd9bx8P9DbS1ApaBjwv13ZngrZRw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-darwin-x64@11.5.2: + resolution: {integrity: sha512-Llf2qMBzs4PdbnrA7s3tVjW7MXnjUXepfqQkEXM2klxIggcbtbIESe3KupYHoo0Q0p6hLHwWoadyM32Ho2hLzA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-freebsd-x64@11.5.2: + resolution: {integrity: sha512-dKCHhqgKW3eqnJBlgLC03qoDSVeZSZJVcSVpyomu0XrrNha3wVyv6aJjN7A8HnjUCqJDibbZfTtD3/gnsm30eQ==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-arm-gnueabihf@11.5.2: + resolution: {integrity: sha512-AMV4MbHdUvwA6oBLk90/gPo3gPMZl9+DHeas8BxRdq/uX1BFQ05s+mhy9ATGElGQsRVVOPya9qczOdb8eAlM6w==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-arm-musleabihf@11.5.2: + resolution: {integrity: sha512-hTCkii4HwQushiD3L86cefvojTY6OSDzcrQZHVaUmrtkL0OQnRT9qUff83lJIQhb94rjaEfQsgUdVl1bvuUK/Q==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-arm64-gnu@11.5.2: + resolution: {integrity: sha512-EXkMvem90Pdw0bw0TlOhAHFAGLopb1LaVwsxF+iSc/zQtuR62kl2jGMQRvsW4NHaF+nUN29H8IYQDzox4gxsRw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-arm64-musl@11.5.2: + resolution: {integrity: sha512-UvA2QZB73XPXmFweDRyXyUchN1YnEx+cca7a/ojdhT+stDe0WKMK32y27oabWokJJsZZOd+W40dD7sxjzx7K/g==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-ppc64-gnu@11.5.2: + resolution: {integrity: sha512-0rllGQIAmeb+vAtmco0PnTzqlMs0DQs+QvHu/8AQAmgrlKBZDJJmRvLqMv6EXgTrLlWxoM0o9oNf7mZ0tEenUQ==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-riscv64-gnu@11.5.2: + resolution: {integrity: sha512-kfE5ALnGsxEyz/e6lZbNUyPjZwTIuExTVJLVzjT/RjvaltSZ6J0u/6/CKsVFD3t686yqse1fnXuydUsgAFmuXg==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-riscv64-musl@11.5.2: + resolution: {integrity: sha512-O6lbEl+heEd3QS2GOwm+iDGMqEWA18X/b9JNodzEHe2TJeOJAV/5xJ7jQTGA2seoy6/REhW744O35DyPFxZ2aQ==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-s390x-gnu@11.5.2: + resolution: {integrity: sha512-6ZASmeqVq+xEQZz/EH+U4j1hPeqVQ8Eo58oYrt9FGJhseowAh6TAOHXe80HAJH6HQTcws1fhS/A7I4hm6NOgZA==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-x64-gnu@11.5.2: + resolution: {integrity: sha512-MYTtU3sKGZfvOYVpUfFHFcxLGOI8WN5BIQeWgNnNDEBHasthEDnyeNYpj6QbLd3XMz84gGA1G+mKMm/lVUF6hA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-linux-x64-musl@11.5.2: + resolution: {integrity: sha512-7u1ANU1jkDUbC5ZxGXWDs0OLuUvV3DzqHUI+g41wHdz0iLoVSJ7rR+hl/crHIm4PpFkYbpU+joRslM5OLxeKlw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-wasm32-wasi@11.5.2: + resolution: {integrity: sha512-2tOsCVH+THg9b9h6MiTymTrveSUWAOaQGj2CPQ4XJncxECsZY6MfxKLul+XsW4KLpstE89KBemRIQi6Il0Twew==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + requiresBuild: true + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + dev: true + optional: true + + /@oxc-resolver/binding-win32-arm64-msvc@11.5.2: + resolution: {integrity: sha512-NmpFIoT86wD2cNAweoEMLKZ4aaGzbYzmeMcYK65Ml9PbH53YXe5XZOXdzVExLKGJ3Rorf055n/67pRRvpIm/sQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-win32-ia32-msvc@11.5.2: + resolution: {integrity: sha512-1EwjnPP5sEKdQl4+3edw+8xMZ79qk7iPXOJRUtdE0jLEdlFmzpnLBfsz54G7mOiQvnc6uR8YePBQb1iCRnysNA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@oxc-resolver/binding-win32-x64-msvc@11.5.2: + resolution: {integrity: sha512-eB8eV8SdO+OpbJJ3dvTgSPOsDsW7SJp+ih5WIBWt7pWMlVbQyjBwDgTI8gGTqg2iwdEEUVqlfivEEs22hKnxRw==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@peculiar/asn1-schema@2.3.13: resolution: {integrity: sha512-3Xq3a01WkHRZL8X04Zsfg//mGaA21xlL4tlVn4v2xGT0JStiztATRkMwa5b+f/HXmY2smsiLXYK46Gwgzvfg3g==} dependencies: @@ -3878,16 +4059,6 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@snyk/github-codeowners@1.1.0: - resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==} - engines: {node: '>=8.10'} - hasBin: true - dependencies: - commander: 4.1.1 - ignore: 5.3.1 - p-map: 4.0.0 - dev: true - /@standard-schema/spec@1.0.0: resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} dev: true @@ -4158,6 +4329,14 @@ packages: '@babel/runtime-corejs3': 7.24.8 dev: false + /@tybys/wasm-util@0.10.0: + resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + requiresBuild: true + dependencies: + tslib: 2.6.3 + dev: true + optional: true + /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true @@ -5409,11 +5588,6 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} @@ -5841,14 +6015,6 @@ packages: engines: {node: '>=4'} dev: true - /easy-table@1.2.0: - resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} - dependencies: - ansi-regex: 5.0.1 - optionalDependencies: - wcwidth: 1.0.1 - dev: true - /ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: @@ -6468,6 +6634,17 @@ packages: micromatch: 4.0.7 dev: true + /fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + dev: true + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true @@ -6527,6 +6704,12 @@ packages: - encoding dev: true + /fd-package-json@2.0.0: + resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + dependencies: + walk-up-path: 4.0.0 + dev: true + /fdir@6.2.0(picomatch@4.0.2): resolution: {integrity: sha512-9XaWcDl0riOX5j2kYfy0kKdg7skw3IY6kA4LFT8Tk2yF9UdrADUy8D6AJuBLtf7ISm/MksumwAHE3WVbMRyCLw==} peerDependencies: @@ -6653,6 +6836,14 @@ packages: mime-types: 2.1.35 dev: true + /formatly@0.2.4: + resolution: {integrity: sha512-lIN7GpcvX/l/i24r/L9bnJ0I8Qn01qijWpQpDDvTLL29nKqSaJJu4h20+7VJ6m2CAhQ2/En/GbxDiHCzq/0MyA==} + engines: {node: '>=18.3.0'} + hasBin: true + dependencies: + fd-package-json: 2.0.0 + dev: true + /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true @@ -7695,29 +7886,26 @@ packages: engines: {node: '>=6'} dev: true - /knip@5.29.2(@types/node@20.11.6)(typescript@5.0.4): - resolution: {integrity: sha512-NfJ3VDyV7gHvI4lVmr9PQCvC4lvrnTdaRMmtHIVBWB2GWWKj86uTw8Yfnp07M+fQeqOnX3AGPG8hjXHPlE1MEw==} - engines: {node: '>=18.6.0'} + /knip@5.61.3(@types/node@20.11.6)(typescript@5.0.4): + resolution: {integrity: sha512-8iSz8i8ufIjuUwUKzEwye7ROAW0RzCze7T770bUiz0PKL+SSwbs4RS32fjMztLwcOzSsNPlXdUAeqmkdzXxJ1Q==} + engines: {node: '>=18.18.0'} hasBin: true peerDependencies: '@types/node': '>=18' typescript: '>=5.0.4' dependencies: '@nodelib/fs.walk': 1.2.8 - '@snyk/github-codeowners': 1.1.0 '@types/node': 20.11.6 - easy-table: 1.2.0 - enhanced-resolve: 5.17.1 - fast-glob: 3.3.2 - jiti: 1.21.6 + fast-glob: 3.3.3 + formatly: 0.2.4 + jiti: 2.4.2 js-yaml: 4.1.0 minimist: 1.2.8 - picocolors: 1.0.1 + oxc-resolver: 11.5.2 + picocolors: 1.1.1 picomatch: 4.0.2 - pretty-ms: 9.1.0 - smol-toml: 1.3.0 - strip-json-comments: 5.0.1 - summary: 2.1.0 + smol-toml: 1.4.1 + strip-json-comments: 5.0.2 typescript: 5.0.4 zod: 3.23.8 zod-validation-error: 3.3.1(zod@3.23.8) @@ -7983,6 +8171,14 @@ packages: picomatch: 2.3.1 dev: true + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -8061,6 +8257,12 @@ packages: hasBin: true dev: true + /napi-postinstall@0.3.0: + resolution: {integrity: sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + dev: true + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -8293,6 +8495,33 @@ packages: engines: {node: '>=0.10.0'} dev: true + /oxc-resolver@11.5.2: + resolution: {integrity: sha512-mYkOsrgvlm4OLPCgSR2XCMkJ203PwSOASxzHYzW7Kz3GXONVbe2VTpgwL/yBo0igSUwlZWTUKEbRJLscJ6N5QQ==} + requiresBuild: true + dependencies: + napi-postinstall: 0.3.0 + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.5.2 + '@oxc-resolver/binding-android-arm64': 11.5.2 + '@oxc-resolver/binding-darwin-arm64': 11.5.2 + '@oxc-resolver/binding-darwin-x64': 11.5.2 + '@oxc-resolver/binding-freebsd-x64': 11.5.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.5.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.5.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.5.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.5.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.5.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.5.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.5.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.5.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.5.2 + '@oxc-resolver/binding-linux-x64-musl': 11.5.2 + '@oxc-resolver/binding-wasm32-wasi': 11.5.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.5.2 + '@oxc-resolver/binding-win32-ia32-msvc': 11.5.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.5.2 + dev: true + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -8373,11 +8602,6 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} - dev: true - /parse5@5.1.0: resolution: {integrity: sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==} dev: true @@ -8478,6 +8702,10 @@ packages: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} dev: true + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + dev: true + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -8976,13 +9204,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /pretty-ms@9.1.0: - resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} - engines: {node: '>=18'} - dependencies: - parse-ms: 4.0.0 - dev: true - /promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: @@ -9648,8 +9869,8 @@ packages: resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} dev: true - /smol-toml@1.3.0: - resolution: {integrity: sha512-tWpi2TsODPScmi48b/OQZGi2lgUmBCHy6SZrhi/FdnnHiU1GwebbCfuQuxsC3nHaLwtYeJGPrDZDIeodDOc4pA==} + /smol-toml@1.4.1: + resolution: {integrity: sha512-CxdwHXyYTONGHThDbq5XdwbFsuY4wlClRGejfE2NtwUtiHYsP1QtNsHb/hnj31jKYSchztJsaA8pSQoVzkfCFg==} engines: {node: '>= 18'} dev: true @@ -9870,8 +10091,8 @@ packages: engines: {node: '>=8'} dev: true - /strip-json-comments@5.0.1: - resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} + /strip-json-comments@5.0.2: + resolution: {integrity: sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g==} engines: {node: '>=14.16'} dev: true @@ -9975,10 +10196,6 @@ packages: - typescript dev: true - /summary@2.1.0: - resolution: {integrity: sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==} - dev: true - /supports-color@10.0.0: resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==} engines: {node: '>=18'} @@ -10810,6 +11027,11 @@ packages: xml-name-validator: 3.0.0 dev: true + /walk-up-path@4.0.0: + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + engines: {node: 20 || >=22} + dev: true + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: From 9a6c9170330f36b3aada1f1718a44cc96156a5e5 Mon Sep 17 00:00:00 2001 From: thenav56 Date: Mon, 7 Jul 2025 22:52:23 +0545 Subject: [PATCH 4/7] chore: update .dockerignore - exclude backend (except backend graphql schema) - exclude all .env --- .dockerignore | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.dockerignore b/.dockerignore index 3971708..04917d8 100644 --- a/.dockerignore +++ b/.dockerignore @@ -130,9 +130,16 @@ typings # dotenv environment variables file .env .env* +**/.env +**/.env* # Sensitive Deploy Files deploy/eb/ # tox ./.tox + + +# Backend +backend +!backend/schema.graphql From f1f1e741a82550c510c680d1179499e702207207 Mon Sep 17 00:00:00 2001 From: thenav56 Date: Mon, 7 Jul 2025 22:53:59 +0545 Subject: [PATCH 5/7] feat: integrate with web-app-serve --- Dockerfile | 36 ++++++++++++++++++-- env.ts | 56 +++++++++++++++++++++----------- package.json | 2 +- pnpm-lock.yaml | 35 +++++++++++--------- web-app-serve/.gitignore | 1 + web-app-serve/docker-compose.yml | 15 +++++++++ 6 files changed, 107 insertions(+), 38 deletions(-) create mode 100644 web-app-serve/.gitignore create mode 100644 web-app-serve/docker-compose.yml diff --git a/Dockerfile b/Dockerfile index 229faa2..ad22dbd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ RUN apt-get update -y \ WORKDIR /code # -------------------------- Nginx - Builder -------------------------------- -FROM dev AS nginx-build +FROM dev AS web-app-serve-build COPY ./package.json ./pnpm-lock.yaml /code/ @@ -20,7 +20,37 @@ RUN pnpm install COPY . /code/ -# Build variables (Requires backend pulled) +# NOTE: Dynamic env variables +# These env variables can be dynamically defined in web-app-serve container runtime. +# These variables are not included in the build files but the values should still be valid. +# See "schema" field in "./env.ts" +ENV APP_TITLE=Timur +ENV APP_ENVIRONMENT=production +ENV APP_GRAPHQL_DOMAIN=https://api.example.com +ENV APP_SENTRY_DSN=https://xyzl@sentry.example.com/123 + +# NOTE: These are set directly in `vite.config.ts` +# We're using raw web-app-serve placeholder values here to treat them as dynamic values +ENV APP_UMAMI_SRC=WEB_APP_SERVE_PLACEHOLDER__APP_UMAMI_SRC +ENV APP_UMAMI_ID=WEB_APP_SERVE_PLACEHOLDER__APP_UMAMI_ID + +# NOTE: Static env variables: +# These env variables are used during build ENV APP_GRAPHQL_CODEGEN_ENDPOINT=./backend/schema.graphql -RUN pnpm generate:type && pnpm build +# NOTE: WEB_APP_SERVE_ENABLED=true will skip defining the above dynamic env variables +# See "overrideDefine" field in "./env.ts" +RUN pnpm generate:type && WEB_APP_SERVE_ENABLED=true pnpm build + +# --------------------------------------------------------------------- +# Final image using web-app-serve +FROM ghcr.io/toggle-corp/web-app-serve:v0.1.2 AS web-app-serve + +MAINTAINER navin +LABEL org.opencontainers.image.source="https://github.com/toggle-corp/timur" +LABEL org.opencontainers.image.authors="dev@togglecorp.com" + +# Env for apply-config script +ENV APPLY_CONFIG__SOURCE_DIRECTORY=/code/build/ + +COPY --from=web-app-serve-build /code/build "$APPLY_CONFIG__SOURCE_DIRECTORY" diff --git a/env.ts b/env.ts index 45100b0..5483b22 100644 --- a/env.ts +++ b/env.ts @@ -1,23 +1,41 @@ -import { defineConfig, Schema } from '@julr/vite-plugin-validate-env'; +import { + defineConfig, + overrideDefineForWebAppServe, + Schema, +} from '@julr/vite-plugin-validate-env'; + +const webAppServeEnabled = process.env.WEB_APP_SERVE_ENABLED?.toLowerCase() === 'true'; +if (webAppServeEnabled) { + // eslint-disable-next-line no-console + console.warn('Building application for web-app-serve'); +} +const overrideDefine = webAppServeEnabled + ? overrideDefineForWebAppServe + : undefined; export default defineConfig({ - APP_TITLE: Schema.string(), - APP_ENVIRONMENT: (key, value) => { - // NOTE: APP_ENVIRONMENT_PLACEHOLDER is meant to be used with image builds - // The value will be later replaced with the actual value - const regex = /^production|staging|testing|alpha-\d+|development|APP_ENVIRONMENT_PLACEHOLDER$/; - const valid = !!value && (value.match(regex) !== null); - if (!valid) { - throw new Error(`Value for environment variable "${key}" must match regex "${regex}", instead received "${value}"`); - } - if (value === 'APP_ENVIRONMENT_PLACEHOLDER') { - console.warn(`Using ${value} for app environment. Make sure to not use this for builds without nginx-serve`) - } - return value as ('production' | 'staging' | 'testing' | `alpha-${number}` | 'development' | 'APP_ENVIRONMENT_PLACEHOLDER'); + overrideDefine, + validator: 'builtin', + schema: { + APP_TITLE: Schema.string(), + APP_ENVIRONMENT: (key: string, value: string) => { + // NOTE: APP_ENVIRONMENT_PLACEHOLDER is meant to be used with image builds + // The value will be later replaced with the actual value + const regex = /^production|staging|testing|alpha-\d+|development|APP_ENVIRONMENT_PLACEHOLDER$/; + const valid = !!value && (value.match(regex) !== null); + if (!valid) { + throw new Error(`Value for environment variable "${key}" must match regex "${regex}", instead received "${value}"`); + } + if (value === 'APP_ENVIRONMENT_PLACEHOLDER') { + // eslint-disable-next-line no-console + console.warn(`Using ${value} for app environment. Make sure to not use this for builds without nginx-serve`); + } + return value as ('production' | 'staging' | 'testing' | `alpha-${number}` | 'development' | 'APP_ENVIRONMENT_PLACEHOLDER'); + }, + APP_GRAPHQL_CODEGEN_ENDPOINT: Schema.string(), + APP_GRAPHQL_DOMAIN: Schema.string(), + APP_UMAMI_SRC: Schema.string.optional(), + APP_UMAMI_ID: Schema.string.optional(), + APP_SENTRY_DSN: Schema.string.optional(), }, - APP_GRAPHQL_CODEGEN_ENDPOINT: Schema.string(), - APP_GRAPHQL_DOMAIN: Schema.string(), - APP_UMAMI_SRC: Schema.string.optional(), - APP_UMAMI_ID: Schema.string.optional(), - APP_SENTRY_DSN: Schema.string.optional(), }); diff --git a/package.json b/package.json index eb17967..dac34e1 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@graphql-codegen/cli": "^5.0.2", "@graphql-codegen/client-preset": "^4.3.3", "@graphql-typed-document-node/core": "^3.2.0", - "@julr/vite-plugin-validate-env": "^2.2.0", + "@julr/vite-plugin-validate-env": "git+https://github.com/toggle-corp/vite-plugin-validate-env#v2.2.0-tc.1", "@types/node": "^20.11.6", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9279b60..cc2647a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,8 +71,8 @@ devDependencies: specifier: ^3.2.0 version: 3.2.0(graphql@16.9.0) '@julr/vite-plugin-validate-env': - specifier: ^2.2.0 - version: 2.2.0(vite@5.0.10) + specifier: git+https://github.com/toggle-corp/vite-plugin-validate-env#v2.2.0-tc.1 + version: github.com/toggle-corp/vite-plugin-validate-env/3225c8405bdadf1168f1fa6f8a6de76c6777b620(vite@5.0.10) '@types/node': specifier: ^20.11.6 version: 20.11.6 @@ -3410,19 +3410,6 @@ packages: '@jridgewell/sourcemap-codec': 1.5.0 dev: true - /@julr/vite-plugin-validate-env@2.2.0(vite@5.0.10): - resolution: {integrity: sha512-R00QZcgMNsATxI9beeM1n7VwMcsSyxFnvElJ0S1ZmglmeGzNyOzaVlfxyGgRb0NmIPYGwPSoJOnFI5BYR7Quug==} - engines: {node: '>=22'} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - dependencies: - '@poppinss/cliui': 6.4.4 - '@poppinss/validator-lite': 2.1.1 - '@standard-schema/spec': 1.0.0 - unconfig: 7.3.2 - vite: 5.0.10(@types/node@20.11.6) - dev: true - /@kamilkisiela/fast-url-parser@1.1.4: resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} dev: true @@ -11492,3 +11479,21 @@ packages: - supports-color - utf-8-validate dev: true + + github.com/toggle-corp/vite-plugin-validate-env/3225c8405bdadf1168f1fa6f8a6de76c6777b620(vite@5.0.10): + resolution: {tarball: https://codeload.github.com/toggle-corp/vite-plugin-validate-env/tar.gz/3225c8405bdadf1168f1fa6f8a6de76c6777b620} + id: github.com/toggle-corp/vite-plugin-validate-env/3225c8405bdadf1168f1fa6f8a6de76c6777b620 + name: '@julr/vite-plugin-validate-env' + version: 2.2.0 + engines: {node: '>=22'} + prepare: true + requiresBuild: true + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + dependencies: + '@poppinss/cliui': 6.4.4 + '@poppinss/validator-lite': 2.1.1 + '@standard-schema/spec': 1.0.0 + unconfig: 7.3.2 + vite: 5.0.10(@types/node@20.11.6) + dev: true diff --git a/web-app-serve/.gitignore b/web-app-serve/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/web-app-serve/.gitignore @@ -0,0 +1 @@ +.env diff --git a/web-app-serve/docker-compose.yml b/web-app-serve/docker-compose.yml new file mode 100644 index 0000000..9615f8a --- /dev/null +++ b/web-app-serve/docker-compose.yml @@ -0,0 +1,15 @@ +# NOTE: The name should is mandatory and should be unique +name: toggle-corp-timur + +services: + web-app-serve: + build: + context: ../ + target: web-app-serve + environment: + # web-app-serve config + APPLY_CONFIG__ENABLE_DEBUG: true + # NOTE: See "Dockerfile" to get dynamic env variables for .env file + env_file: .env + ports: + - '8050:80' From 13b7ca53bbf402a73e4303a5d634f90d65c0a184 Mon Sep 17 00:00:00 2001 From: thenav56 Date: Mon, 7 Jul 2025 22:56:13 +0545 Subject: [PATCH 6/7] feat: add github workflow to push web-app-serve builds --- .github/workflows/publish-web-app-serve.yml | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/publish-web-app-serve.yml diff --git a/.github/workflows/publish-web-app-serve.yml b/.github/workflows/publish-web-app-serve.yml new file mode 100644 index 0000000..b1a2a6c --- /dev/null +++ b/.github/workflows/publish-web-app-serve.yml @@ -0,0 +1,25 @@ +name: Publish web app serve + +on: + workflow_dispatch: + push: + branches: + - develop + - feat/web-app-serve # TODO: Delete me + +permissions: + packages: write + +jobs: + publish_image: + name: Publish Docker Image + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Publish web-app-serve + uses: toggle-corp/web-app-serve-action@v0.1.1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} From 303d873325f89de15e2d645d4a21473076ccb64d Mon Sep 17 00:00:00 2001 From: thenav56 Date: Thu, 10 Jul 2025 22:57:30 +0545 Subject: [PATCH 7/7] cleanup: remove feat/web-app-serve from publish-web-app-serve --- .github/workflows/publish-web-app-serve.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/publish-web-app-serve.yml b/.github/workflows/publish-web-app-serve.yml index b1a2a6c..1b07ab7 100644 --- a/.github/workflows/publish-web-app-serve.yml +++ b/.github/workflows/publish-web-app-serve.yml @@ -5,7 +5,6 @@ on: push: branches: - develop - - feat/web-app-serve # TODO: Delete me permissions: packages: write