From bb841f32c58ba5d145f9d73d53006f11a4367840 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 16:04:57 -0400 Subject: [PATCH 01/72] ci(utils): uses workflow_dispatch in act script --- _utils/_scripts/act.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/_utils/_scripts/act.sh b/_utils/_scripts/act.sh index 6140ab13c..7ffa49d2f 100755 --- a/_utils/_scripts/act.sh +++ b/_utils/_scripts/act.sh @@ -8,12 +8,13 @@ elif [ $2 == "b" ]; then elif [ $2 == "p" ]; then action="push" elif [ $2 == "d" ]; then - action="-j dispatch" + action="workflow_dispatch" else printDgErr "Argument needed to specify job." fi -act --pull=false -P ubuntu-latest=github-actions-test:latest \ +act --pull=false \ + -P ubuntu-latest=github-actions-test:latest \ -s GITHUB_TOKEN=$(pass dg/github/pat) \ -s DEPLOYMENT_BRANCH=develop \ -s PUBLIC_ENV=staging \ From 10c17426d37da1cf62838ab18433a792658e98b5 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 16:06:36 -0400 Subject: [PATCH 02/72] ci(project): uses DEPLOYMENT_BRANCH instead of github.ref in robots step --- .github/workflows/build-deploy-front.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index 1540d76ed..5d60bf93d 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest environment: - name: ${{ github.ref == 'refs/heads/main' && 'prd' || 'stg' }} + name: ${{ secrets.DEPLOYMENT_BRANCH == 'main' && 'prd' || 'stg' }} steps: @@ -70,7 +70,7 @@ jobs: run: bash _ci/build.sh - name: Robots - if: ${{ steps.extract_branch.outputs.branch }} == 'main' + if: ${{ secrets.DEPLOYMENT_BRANCH }} == 'main' run: | sed -i 's/^Disallow\: \/$/Allow\: \//' front/build/robots.txt From 73f3a931d3159c595bb22d064dd5e84822a4ef0e Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 16:08:07 -0400 Subject: [PATCH 03/72] ci(project): removes unused steps and adjusts order --- .github/workflows/build-deploy-front.yml | 30 ++++-------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index 5d60bf93d..2fc95ae3d 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -17,21 +17,6 @@ jobs: steps: - - name: Add Masks - run: | - echo "::add-mask::${{ github.token }}" - echo "::add-mask::${{ secrets.PUBLIC_API_PATH_NAVIGATION }}" - echo "::add-mask::${{ secrets.PUBLIC_API_URL }}" - echo "::add-mask::${{ secrets.PUBLIC_API_PATH_HOME }}" - echo "::add-mask::${{ secrets.PUBLIC_API_PATH_FOOTER }}" - echo "::add-mask::${{ secrets.API_KEY }}" - echo "::add-mask::${{ secrets.PUBLIC_SENTRY_DSN }}" - echo "::add-mask::${{ secrets.PUBLIC_ENV }}" - echo "::add-mask::${{ secrets.AWS_ACCESS_KEY_ID }}" - echo "::add-mask::${{ secrets.AWS_SECRET_ACCESS_KEY }}" - echo "::add-mask::${{ secrets.AWS_REGION }}" - echo "::add-mask::${{ secrets.AWS_S3_BUCKET }}" - - name: Checkout uses: actions/checkout@v3 with: @@ -40,16 +25,6 @@ jobs: token: ${{ github.token }} fetch-depth: 0 - - name: Extract Branch Name - shell: bash - run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT - id: extract_branch - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: "18.x" - - name: Set .env run: | touch front/.env @@ -63,6 +38,11 @@ jobs: echo PUBLIC_ENV=${{ secrets.PUBLIC_ENV }} >> front/.env cat front/.env + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: "18.x" + - name: Build id: npm-build env: From a338e91d2adad5fcd9582c8f262d40abe58d4023 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 16:09:10 -0400 Subject: [PATCH 04/72] ci(project): removes repository_dispatch while testing --- .github/workflows/build-deploy-front.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index 2fc95ae3d..41aeb8740 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -2,7 +2,6 @@ name: Build & Deploy Frontend on: workflow_dispatch: - repository_dispatch: types: - Frontend - Strapi From de7e1d046e5172298c2c499116f3567eda14f431 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 21:51:03 -0400 Subject: [PATCH 05/72] ci(project): sets local environment to "development" in sentry logging --- _utils/_scripts/act.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_utils/_scripts/act.sh b/_utils/_scripts/act.sh index 7ffa49d2f..88fc37175 100755 --- a/_utils/_scripts/act.sh +++ b/_utils/_scripts/act.sh @@ -17,7 +17,7 @@ act --pull=false \ -P ubuntu-latest=github-actions-test:latest \ -s GITHUB_TOKEN=$(pass dg/github/pat) \ -s DEPLOYMENT_BRANCH=develop \ - -s PUBLIC_ENV=staging \ + -s PUBLIC_ENV=development \ -s PUBLIC_MEDIA_URL="" \ -s PUBLIC_API_PATH_NAVIGATION="$(pass dg/cms/api/paths/navigation)" \ -s PUBLIC_API_PATH_HOME="$(pass dg/cms/api/paths/home)" \ From d28cfad5609b76f77d0686e64e7b363c84bc85a5 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 21:56:19 -0400 Subject: [PATCH 06/72] build(back): reinstalls @strapi/plugin-seo after flexbox PR merged --- back/package-lock.json | 8 ++++---- back/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/back/package-lock.json b/back/package-lock.json index cb5cd58e5..f3ace2dc8 100644 --- a/back/package-lock.json +++ b/back/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@strapi/plugin-i18n": "4.11.1", - "@strapi/plugin-seo": "github:dgrebb/strapi-plugin-seo#develop", + "@strapi/plugin-seo": "^1.9.2", "@strapi/plugin-users-permissions": "4.11.1", "@strapi/provider-upload-aws-s3": "4.11.1", "@strapi/strapi": "4.11.1", @@ -4256,9 +4256,9 @@ } }, "node_modules/@strapi/plugin-seo": { - "version": "1.9.1", - "resolved": "git+ssh://git@github.com/dgrebb/strapi-plugin-seo.git#105ec0364e891c393d370adc846ca78a05ef2f54", - "license": "MIT", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@strapi/plugin-seo/-/plugin-seo-1.9.2.tgz", + "integrity": "sha512-skqckP1ut5nshgLyLJh/aXdwxCawfNzhdA0GfHK4OLffoYIVrtBhLaGyyschJH6NfVt/0AFl2uhU16ievdz9QQ==", "dependencies": { "date-fns": "^2.29.3", "eslint-plugin-react-hooks": "^4.3.0", diff --git a/back/package.json b/back/package.json index 345e0f6d1..3169f665a 100644 --- a/back/package.json +++ b/back/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@strapi/plugin-i18n": "4.11.1", - "@strapi/plugin-seo": "github:dgrebb/strapi-plugin-seo#develop", + "@strapi/plugin-seo": "^1.9.2", "@strapi/plugin-users-permissions": "4.11.1", "@strapi/provider-upload-aws-s3": "4.11.1", "@strapi/strapi": "4.11.1", From 53f442137c7608f650c676d0f7f157e649b8a5d3 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 22:33:11 -0400 Subject: [PATCH 07/72] ci(project): removes event types from workflow_dispatch --- .github/workflows/build-deploy-front.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index 41aeb8740..6b3b53162 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -2,9 +2,6 @@ name: Build & Deploy Frontend on: workflow_dispatch: - types: - - Frontend - - Strapi jobs: front: From c2cdbcc88cb89d18d8f06a3ba8646e3fb809f67d Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 22:38:03 -0400 Subject: [PATCH 08/72] ci(project): removes colon --- .github/workflows/build-deploy-front.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index 6b3b53162..a392b63b2 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -1,7 +1,7 @@ name: Build & Deploy Frontend on: - workflow_dispatch: + workflow_dispatch jobs: front: From 73c05780660eb2344843e152c2bcf441687cc238 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 22:41:39 -0400 Subject: [PATCH 09/72] ci(project): uses github.ref as environment conditional --- .github/workflows/build-deploy-front.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index a392b63b2..5f9ed09cf 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest environment: - name: ${{ secrets.DEPLOYMENT_BRANCH == 'main' && 'prd' || 'stg' }} + name: ${{ github.ref == 'refs/heads/main' && 'prd' || 'stg' }} steps: From 18b3a6ec3fa6b62224d9023adeebe5de36f637d0 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 22:47:25 -0400 Subject: [PATCH 10/72] ci(project): uses github.ref_name for contitional and also logs the ref_name for testing --- .github/workflows/build-deploy-front.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index 5f9ed09cf..54a81a0ff 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest environment: - name: ${{ github.ref == 'refs/heads/main' && 'prd' || 'stg' }} + name: ${{ github.ref_name == 'main' && 'prd' || 'stg' }} steps: @@ -23,6 +23,7 @@ jobs: - name: Set .env run: | + echo github.ref_name touch front/.env echo PUBLIC_MEDIA_URL='' >> front/.env echo PUBLIC_API_URL='${{ secrets.PUBLIC_API_URL }}' >> front/.env @@ -46,7 +47,7 @@ jobs: run: bash _ci/build.sh - name: Robots - if: ${{ secrets.DEPLOYMENT_BRANCH }} == 'main' + if: ${{ github.ref_name == 'main' }} run: | sed -i 's/^Disallow\: \/$/Allow\: \//' front/build/robots.txt From 31d398c341639ce09aa7ed6226be65f3c9b16c72 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Mon, 19 Jun 2023 22:52:30 -0400 Subject: [PATCH 11/72] ci(project): removes echo --- .github/workflows/build-deploy-front.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index 54a81a0ff..90cdf226f 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -23,7 +23,6 @@ jobs: - name: Set .env run: | - echo github.ref_name touch front/.env echo PUBLIC_MEDIA_URL='' >> front/.env echo PUBLIC_API_URL='${{ secrets.PUBLIC_API_URL }}' >> front/.env From c15dacd4843dca2f68e81a0209989e5636bcc037 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 09:55:55 -0400 Subject: [PATCH 12/72] ci(project): adds and updates test configuration for workflow_dispatch removes DEPLOYMENT_BRANCH and uses github.ref context property --- .github/workflows/build-deploy-back.yml | 2 +- .github/workflows/build-deploy-front.yml | 26 ++++++++++++++++- .github/workflows/dispatch-build-deploy.yml | 6 ++-- _ci/dispatches/dev.workflow_dispatch.json | 3 ++ _ci/dispatches/main.workflow_dispatch.json | 3 ++ _ci/workflow_dispatch-tests.yml | 32 +++++++++++++++++++++ _utils/_scripts/act.sh | 4 ++- 7 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 _ci/dispatches/dev.workflow_dispatch.json create mode 100644 _ci/dispatches/main.workflow_dispatch.json create mode 100644 _ci/workflow_dispatch-tests.yml diff --git a/.github/workflows/build-deploy-back.yml b/.github/workflows/build-deploy-back.yml index d66df68ab..09fac9332 100644 --- a/.github/workflows/build-deploy-back.yml +++ b/.github/workflows/build-deploy-back.yml @@ -41,5 +41,5 @@ jobs: # uses: actions/checkout@v3 # with: # repository: dgrebb/dgrebb.com - # ref: ${{ secrets.DEPLOYMENT_BRANCH }} + # ref: ${{ github.ref }} # token: ${{ github.token }} \ No newline at end of file diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index 90cdf226f..e1e2c1a57 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -13,14 +13,38 @@ jobs: steps: + - name: Branch Information + run: | + printf "\033[0;34mgithub.ref:\033[0m ${{ github.ref }}\n" + printf "\033[0;34mgithub.base_ref:\033[0m ${{ github.base_ref }}\n" + printf "\033[0;34mgithub.ref_name:\033[0m ${{ github.ref_name }}\n" + printf "\033[0;34mgithub.sha:\033[0m ${{ github.sha }}\n" + printf "\033[0;34mGITHUB_REF:\033[0m $GITHUB_REF\n" + printf "\033[0;34mGITHUB_REF_NAME:\033[0m $GITHUB_REF_NAME\n" + printf "\033[0;34mGITHUB_SHA:\033[0m $GITHUB_SHA\n" + - name: Checkout uses: actions/checkout@v3 with: repository: dgrebb/dgrebb.com - ref: ${{ secrets.DEPLOYMENT_BRANCH }} + ref: ${{ github.ref }} token: ${{ github.token }} fetch-depth: 0 + - name: Inspect Checkout + run: | + printf $(git log -n 5) + + - name: Post-Checkout Branch Information + run: | + printf "\033[0;34mgithub.ref:\033[0m ${{ github.ref }}\n" + printf "\033[0;34mgithub.base_ref:\033[0m ${{ github.base_ref }}\n" + printf "\033[0;34mgithub.ref_name:\033[0m ${{ github.ref_name }}\n" + printf "\033[0;34mgithub.sha:\033[0m ${{ github.sha }}\n" + printf "\033[0;34mGITHUB_REF:\033[0m $GITHUB_REF\n" + printf "\033[0;34mGITHUB_REF_NAME:\033[0m $GITHUB_REF_NAME\n" + printf "\033[0;34mGITHUB_SHA:\033[0m $GITHUB_SHA\n" + - name: Set .env run: | touch front/.env diff --git a/.github/workflows/dispatch-build-deploy.yml b/.github/workflows/dispatch-build-deploy.yml index f569f4aab..83a009eb1 100644 --- a/.github/workflows/dispatch-build-deploy.yml +++ b/.github/workflows/dispatch-build-deploy.yml @@ -17,7 +17,7 @@ jobs: - uses: dorny/paths-filter@v2 id: changes with: - base: ${{ secrets.DEPLOYMENT_BRANCH }} + base: ${{ github.ref_name }} filters: | backend: - 'back/**' @@ -56,6 +56,6 @@ jobs: - name: Dispatch Frontend run: | curl -X POST https://api.github.com/repos/dgrebb/dgrebb.com/dispatches \ - -H 'Accept: application/vnd.github.everest-preview+json' \ + -H 'Accept: application/vnd.github+json' \ -H 'Authorization: Bearer ${{ secrets.DISPATCH_TOKEN }}' \ - --data '{"event_type": "Frontend"}' + --data '{"ref": ${{ github.ref_name }}}' diff --git a/_ci/dispatches/dev.workflow_dispatch.json b/_ci/dispatches/dev.workflow_dispatch.json new file mode 100644 index 000000000..5f4fcb5be --- /dev/null +++ b/_ci/dispatches/dev.workflow_dispatch.json @@ -0,0 +1,3 @@ +{ + "ref": "feature/184-build-out-ci-workflow-for-backend" +} \ No newline at end of file diff --git a/_ci/dispatches/main.workflow_dispatch.json b/_ci/dispatches/main.workflow_dispatch.json new file mode 100644 index 000000000..a74dc4371 --- /dev/null +++ b/_ci/dispatches/main.workflow_dispatch.json @@ -0,0 +1,3 @@ +{ + "ref": "main" +} \ No newline at end of file diff --git a/_ci/workflow_dispatch-tests.yml b/_ci/workflow_dispatch-tests.yml new file mode 100644 index 000000000..f0b119086 --- /dev/null +++ b/_ci/workflow_dispatch-tests.yml @@ -0,0 +1,32 @@ +name: Build & Deploy Tests + +on: + workflow_dispatch + +jobs: + front: + name: Frontend Test + runs-on: ubuntu-latest + + environment: + name: ${{ github.ref_name == 'main' && 'prd' || 'stg' }} + + steps: + + - name: Branch Information + run: | + printf "\033[0;34mRef:\033[0m ${{ github.ref }}\n" + printf "\033[0;34mRef Name:\033[0m ${{ github.ref_name }}\n" + printf "\033[0;34mSHA:\033[0m ${{ github.sha }}\n" + + - name: Checkout + uses: actions/checkout@v3 + with: + repository: dgrebb/dgrebb.com + ref: ${{ github.ref }} + token: ${{ github.token }} + fetch-depth: 0 + + - name: Inspect Checkout + run: | + printf $(git log -n 5) \ No newline at end of file diff --git a/_utils/_scripts/act.sh b/_utils/_scripts/act.sh index 88fc37175..3c04f23fd 100755 --- a/_utils/_scripts/act.sh +++ b/_utils/_scripts/act.sh @@ -1,6 +1,8 @@ #!/bin/bash source $directory/_scripts/functions.sh +if [[ $1 != p ]]; then EVENT_JSON="dev"; else EVENT_JSON="main"; fi + if [ $2 == "f" ]; then action="-j front" elif [ $2 == "b" ]; then @@ -15,8 +17,8 @@ fi act --pull=false \ -P ubuntu-latest=github-actions-test:latest \ + -e $directory/../_ci/dispatches/${EVENT_JSON}.workflow_dispatch.json \ -s GITHUB_TOKEN=$(pass dg/github/pat) \ - -s DEPLOYMENT_BRANCH=develop \ -s PUBLIC_ENV=development \ -s PUBLIC_MEDIA_URL="" \ -s PUBLIC_API_PATH_NAVIGATION="$(pass dg/cms/api/paths/navigation)" \ From e2aa874d1db392af951a7cbf7abb8d755d503a27 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 13:55:11 -0400 Subject: [PATCH 13/72] ci(project): move testing steps out of github workflow file --- .github/workflows/build-deploy-front.yml | 24 ---------------------- _ci/dispatches/dev.workflow_dispatch.json | 5 ++++- _ci/dispatches/main.workflow_dispatch.json | 5 ++++- _ci/workflow_dispatch-tests.yml | 10 ++++++--- 4 files changed, 15 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index e1e2c1a57..c928e64a4 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -13,16 +13,6 @@ jobs: steps: - - name: Branch Information - run: | - printf "\033[0;34mgithub.ref:\033[0m ${{ github.ref }}\n" - printf "\033[0;34mgithub.base_ref:\033[0m ${{ github.base_ref }}\n" - printf "\033[0;34mgithub.ref_name:\033[0m ${{ github.ref_name }}\n" - printf "\033[0;34mgithub.sha:\033[0m ${{ github.sha }}\n" - printf "\033[0;34mGITHUB_REF:\033[0m $GITHUB_REF\n" - printf "\033[0;34mGITHUB_REF_NAME:\033[0m $GITHUB_REF_NAME\n" - printf "\033[0;34mGITHUB_SHA:\033[0m $GITHUB_SHA\n" - - name: Checkout uses: actions/checkout@v3 with: @@ -31,20 +21,6 @@ jobs: token: ${{ github.token }} fetch-depth: 0 - - name: Inspect Checkout - run: | - printf $(git log -n 5) - - - name: Post-Checkout Branch Information - run: | - printf "\033[0;34mgithub.ref:\033[0m ${{ github.ref }}\n" - printf "\033[0;34mgithub.base_ref:\033[0m ${{ github.base_ref }}\n" - printf "\033[0;34mgithub.ref_name:\033[0m ${{ github.ref_name }}\n" - printf "\033[0;34mgithub.sha:\033[0m ${{ github.sha }}\n" - printf "\033[0;34mGITHUB_REF:\033[0m $GITHUB_REF\n" - printf "\033[0;34mGITHUB_REF_NAME:\033[0m $GITHUB_REF_NAME\n" - printf "\033[0;34mGITHUB_SHA:\033[0m $GITHUB_SHA\n" - - name: Set .env run: | touch front/.env diff --git a/_ci/dispatches/dev.workflow_dispatch.json b/_ci/dispatches/dev.workflow_dispatch.json index 5f4fcb5be..5a24ba1c6 100644 --- a/_ci/dispatches/dev.workflow_dispatch.json +++ b/_ci/dispatches/dev.workflow_dispatch.json @@ -1,3 +1,6 @@ { - "ref": "feature/184-build-out-ci-workflow-for-backend" + "_note": "This is not an example or properly formatted request for the GitHub API.", + "__note": "The API takes 'ref': 'develop' instead of the fully qualified ref.", + "ref": "/refs/heads/develop", + "ref_name": "develop" } \ No newline at end of file diff --git a/_ci/dispatches/main.workflow_dispatch.json b/_ci/dispatches/main.workflow_dispatch.json index a74dc4371..0d104ec61 100644 --- a/_ci/dispatches/main.workflow_dispatch.json +++ b/_ci/dispatches/main.workflow_dispatch.json @@ -1,3 +1,6 @@ { - "ref": "main" + "_note": "This is not an example or properly formatted request for the GitHub API.", + "__note": "The API takes 'ref': 'main' instead of the fully qualified ref.", + "ref": "/refs/heads/main", + "ref_name": "main" } \ No newline at end of file diff --git a/_ci/workflow_dispatch-tests.yml b/_ci/workflow_dispatch-tests.yml index f0b119086..445e3b436 100644 --- a/_ci/workflow_dispatch-tests.yml +++ b/_ci/workflow_dispatch-tests.yml @@ -15,9 +15,13 @@ jobs: - name: Branch Information run: | - printf "\033[0;34mRef:\033[0m ${{ github.ref }}\n" - printf "\033[0;34mRef Name:\033[0m ${{ github.ref_name }}\n" - printf "\033[0;34mSHA:\033[0m ${{ github.sha }}\n" + printf "\033[0;34mgithub.ref:\033[0m ${{ github.ref }}\n" + printf "\033[0;34mgithub.base_ref:\033[0m ${{ github.base_ref }}\n" + printf "\033[0;34mgithub.ref_name:\033[0m ${{ github.ref_name }}\n" + printf "\033[0;34mgithub.sha:\033[0m ${{ github.sha }}\n" + printf "\033[0;34mGITHUB_REF:\033[0m $GITHUB_REF\n" + printf "\033[0;34mGITHUB_REF_NAME:\033[0m $GITHUB_REF_NAME\n" + printf "\033[0;34mGITHUB_SHA:\033[0m $GITHUB_SHA\n" - name: Checkout uses: actions/checkout@v3 From a582623c335ae9868af4eee4de0c43e0885ca96d Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 18:14:57 -0400 Subject: [PATCH 14/72] docs(project): adds PRIVACY.md --- PRIVACY.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 PRIVACY.md diff --git a/PRIVACY.md b/PRIVACY.md new file mode 100644 index 000000000..57cd26cc6 --- /dev/null +++ b/PRIVACY.md @@ -0,0 +1,63 @@ +## Effective Date: _June 20, 2023_ + +Thank you for visiting my website. This Privacy Policy explains how I collect, use, and protect your personal information when you use this website and any related services. By accessing or using this website, you agree to the terms of this Privacy Policy. If you do not agree with the terms outlined in this Privacy Policy, please do not use this website or provide any personal information. + +## Information I Collect + +1. **Personal Information**: Apart from browser and system information, no personal details are collected. I've taken great care in scrubbing all personally-identifiable information from both the Analytics and Error Logging tools used (details below). This includes visitors' IP addresses, which are of no use to me, nor do I condone the collection of. + + 1. **Plausible Analytics** is used for pageview and visitor count tracking. See [their delightful post about privacy policies](https://plausible.io/blog/privacy-policy-page#privacy-policy-examples). + + 2. **Sentry.io** is used to capture errors on both the client (browser), and server (500s, 400s, and 300s). Sentry allows capturing browser and system information, which can be used to diagnose problems with this site. Sentry also allows a "playback" of user interaction on the site, aiding in further triage of broken code or user experience. + + Sentry, by default, logs IP addresses. I scrub this data before it is delivered to the sentry.io services and servers. The JavaScript performing this scrub is minified away from evident view on main dgrebb.com pages, but can be seen at the bottom of the static [404 page](/404): + + ```javascript + beforeSend(event) { + if (event.user) { + delete event.user.ip + } + } + ``` + +2. **Usage Information**: I may also collect certain non-personally identifiable information ("Usage Information") automatically when you visit dgrebb.com. This may include your browser type, operating system, referring website, pages you visit, and the date and time of your visit. + +## Use of Cookies + +1. **I do not and will never use cookies**. Please contact privacy [at] dgrebb.com should you ever encounter a cookie on this site. + +## How I Use Your Information + +1. **Personal Information**: Nothing collected is identifiable, and anonymized before sent to third-party services like Plausible and Sentry. In simple terms, I may know the type of browser and operating system used to access dgrebb.com, but am unable to associate those details back to a specific IP address, email address, mailing address, etc. + +2. **Usage Information**: I may use Usage Information to analyze trends, administer the website, track users' movements, and gather demographic information for aggregate use. This information helps me improve the website, monitor its performance, and enhance the overall user experience. + +## Third-Party Services + +1. **Plausible Analytics**: I use Plausible Analytics, a privacy-focused web analytics tool, to collect and analyze Usage Information. Plausible Analytics does not use cookies and does not collect any personally identifiable information. The information collected by Plausible Analytics is stored on servers controlled by Plausible Analytics and is subject to their privacy policy. To learn more about Plausible Analytics' data practices, please visit [their website](https://plausible.io) and review their [privacy policy](https://plausible.io/privacy). + +2. **Sentry.io**: We use Sentry.io to help us identify and fix errors and improve the performance of our website. Sentry.io may collect certain technical information, including your IP address and information about your browser and device. The information collected by Sentry.io is stored on servers controlled by Sentry.io and is subject to their privacy policy. To learn more about Sentry.io's data practices, please visit [their website](https://sentry.io/) and review their [privacy policy](https://sentry.io/privacy/). + + Sentry's entire collection of legal documents can be [found on their site](https://sentry.io/legal/). + +## Data Security + +I take reasonable measures to protect the personal information we collect. However, please be aware that no security measures are perfect or impenetrable, and I cannot guarantee the security of your personal information. + +## Disclosure of Information + +I may disclose your Personal Information or Usage Information to third parties if required by law or when I believe that disclosure is necessary to protect my rights, comply with a judicial proceeding, court order, or legal process served on myself, or investigate suspected or actual fraudulent or illegal activities. + +## Children's Privacy + +My website is not intended for children under the age of 13. I do not knowingly collect personal information from children under the age of 13. If you are a parent or guardian and believe that I may have inadvertently collected personal information from your child, please contact me at privacy [at] dgrebb.com to request deletion of the information. + +## Changes to this Privacy Policy + +I reserve the right to update or modify this Privacy Policy at any time. The most recent version of the Privacy Policy will be posted on this page, with the effective date indicated at the top. Your continued use of this website after any changes to this Privacy Policy constitutes your acceptance of the updated terms. + +## Contact + +If you have any questions, concerns, or requests regarding this Privacy Policy, please contact me at privacy [at] dgrebb.com. + +By using this website, you acknowledge that you have read and understand this Privacy Policy and consent to the collection, use, and disclosure of your information as described herein. \ No newline at end of file From 3ffb11435821224992363686f93c5a3660d2563c Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 18:15:48 -0400 Subject: [PATCH 15/72] feat(strapi): adds privacy singleton and api --- .../privacy/content-types/privacy/schema.json | 21 +++++++++++++++++++ back/src/api/privacy/controllers/privacy.js | 9 ++++++++ back/src/api/privacy/routes/privacy.js | 9 ++++++++ back/src/api/privacy/services/privacy.js | 9 ++++++++ 4 files changed, 48 insertions(+) create mode 100644 back/src/api/privacy/content-types/privacy/schema.json create mode 100644 back/src/api/privacy/controllers/privacy.js create mode 100644 back/src/api/privacy/routes/privacy.js create mode 100644 back/src/api/privacy/services/privacy.js diff --git a/back/src/api/privacy/content-types/privacy/schema.json b/back/src/api/privacy/content-types/privacy/schema.json new file mode 100644 index 000000000..b9885670e --- /dev/null +++ b/back/src/api/privacy/content-types/privacy/schema.json @@ -0,0 +1,21 @@ +{ + "kind": "singleType", + "collectionName": "privacies", + "info": { + "singularName": "privacy", + "pluralName": "privacies", + "displayName": "Privacy" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": {}, + "attributes": { + "title": { + "type": "string" + }, + "details": { + "type": "richtext" + } + } +} diff --git a/back/src/api/privacy/controllers/privacy.js b/back/src/api/privacy/controllers/privacy.js new file mode 100644 index 000000000..8748cae6c --- /dev/null +++ b/back/src/api/privacy/controllers/privacy.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * privacy controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::privacy.privacy'); diff --git a/back/src/api/privacy/routes/privacy.js b/back/src/api/privacy/routes/privacy.js new file mode 100644 index 000000000..b9fb8389c --- /dev/null +++ b/back/src/api/privacy/routes/privacy.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * privacy router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::privacy.privacy'); diff --git a/back/src/api/privacy/services/privacy.js b/back/src/api/privacy/services/privacy.js new file mode 100644 index 000000000..3cb5305d3 --- /dev/null +++ b/back/src/api/privacy/services/privacy.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * privacy service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::privacy.privacy'); From 30265a8e86cba41674455fb36dcf9cd9a0c9c1dd Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 18:17:52 -0400 Subject: [PATCH 16/72] build(utils): adds PUBLIC_API_PATH_PRIVACY env var to setup script --- _utils/_scripts/setFrontEnv.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/_utils/_scripts/setFrontEnv.sh b/_utils/_scripts/setFrontEnv.sh index d728d2a61..be07f42c7 100755 --- a/_utils/_scripts/setFrontEnv.sh +++ b/_utils/_scripts/setFrontEnv.sh @@ -33,5 +33,6 @@ echo "API_KEY=\"$(pass dg/api/${1}/apikey)\"" | tee -a $dockerEnvFile $frontEnvF echo "PUBLIC_API_PATH_NAVIGATION=$(pass dg/cms/api/paths/navigation)" | tee -a $dockerEnvFile $frontEnvFile >/dev/null echo "PUBLIC_API_PATH_HOME=$(pass dg/cms/api/paths/home)" | tee -a $dockerEnvFile $frontEnvFile >/dev/null echo "PUBLIC_API_PATH_FOOTER=$(pass dg/cms/api/paths/footer)" | tee -a $dockerEnvFile $frontEnvFile >/dev/null +echo "PUBLIC_API_PATH_PRIVACY=$(pass dg/cms/api/paths/privacy)" | tee -a $dockerEnvFile $frontEnvFile >/dev/null echo "PUBLIC_API_URL=\"$(pass dg/api/${1}/url)\"" | tee -a $dockerEnvFile $frontEnvFile >/dev/null echo "PUBLIC_SENTRY_DSN=\"$(pass dg/www/logs/sentrydsn)\"" | tee -a $dockerEnvFile $frontEnvFile >/dev/null From 033f1bab944b39f3b03715e090cef130e43ceaf6 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 18:19:46 -0400 Subject: [PATCH 17/72] feat(front): adds privacy route, new (and updated) styles - also refactors existing styles for longform content - also adds privacy policy link to footer --- front/src/components/Footer.svelte | 1 + front/src/routes/privacy/+page.server.js | 15 +++++ front/src/routes/privacy/+page.svelte | 12 ++++ front/src/styles/components.css | 4 +- front/src/styles/global.css | 6 +- front/src/styles/posts.css | 74 ++++++++++++++++++++++++ 6 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 front/src/routes/privacy/+page.server.js create mode 100644 front/src/routes/privacy/+page.svelte create mode 100644 front/src/styles/posts.css diff --git a/front/src/components/Footer.svelte b/front/src/components/Footer.svelte index c8994cfba..6d7bdda05 100644 --- a/front/src/components/Footer.svelte +++ b/front/src/components/Footer.svelte @@ -9,5 +9,6 @@ {#if copyleft}{copyleft}{/if} {year} {#if copyright}{copyright}{/if} + | Privacy Policy diff --git a/front/src/routes/privacy/+page.server.js b/front/src/routes/privacy/+page.server.js new file mode 100644 index 000000000..fc9a11b77 --- /dev/null +++ b/front/src/routes/privacy/+page.server.js @@ -0,0 +1,15 @@ +import { error } from "@sveltejs/kit"; +import api from "../../api"; +import { PUBLIC_API_URL, PUBLIC_API_PATH_PRIVACY } from "$env/static/public"; + +const privacyEndpoint = `${PUBLIC_API_URL}${PUBLIC_API_PATH_PRIVACY}`; + +export async function load({ params }) { + const privacyContent = await api(privacyEndpoint); + if (!privacyContent) { + throw error("Privacy Page Error", "/404"); + } + return { + ...privacyContent.attributes, + }; +} diff --git a/front/src/routes/privacy/+page.svelte b/front/src/routes/privacy/+page.svelte new file mode 100644 index 000000000..e82e46a15 --- /dev/null +++ b/front/src/routes/privacy/+page.svelte @@ -0,0 +1,12 @@ + + +
+

{title}

+ +
diff --git a/front/src/styles/components.css b/front/src/styles/components.css index 085ebcd70..4bfa85f6d 100644 --- a/front/src/styles/components.css +++ b/front/src/styles/components.css @@ -1,6 +1,6 @@ @layer components { .dg--link-hover { - @apply transition-colors; + @apply transition; @apply dg--transition-effect; color: rgb(var(--foreground-rgb)); &:hover, @@ -9,7 +9,7 @@ } } .dg--btn-primary { - @apply transition-colors; + @apply transition; &:hover, &:focus { } diff --git a/front/src/styles/global.css b/front/src/styles/global.css index e6d3a5507..bb995753c 100644 --- a/front/src/styles/global.css +++ b/front/src/styles/global.css @@ -1,6 +1,7 @@ @import "./fonts.css"; @import "./components.css"; @import "./utilities.css"; +@import "./posts.css"; @tailwind base; @tailwind components; @tailwind utilities; @@ -154,6 +155,7 @@ body { .bio, .post, .posts, +.privacy, .footer { a { @apply dg--link-hover; @@ -163,14 +165,16 @@ body { .bio, .post, .posts, +.privacy, .footer, .not-found { a { - @apply pb-0.5; + @apply pb-0.5 opacity-90; color: rgb(var(--foreground-rgb)); border-bottom: 1px solid rgb(var(--foreground-rgb)); &:hover, &:focus { + @apply opacity-100; border-color: rgb(var(--highlight-rgb)); } } diff --git a/front/src/styles/posts.css b/front/src/styles/posts.css new file mode 100644 index 000000000..d5eacd464 --- /dev/null +++ b/front/src/styles/posts.css @@ -0,0 +1,74 @@ +@import "./components.css"; +@import "./utilities.css"; + +.posts, +.post, +.privacy { + @apply max-w-3xl; + h1, + h2, + h3, + h4, + h5, + h6 { + @apply mt-7; + &:first-child { + @apply mt-0; + } + span.highlight { + @apply text-blue-600 dark:text-blue-500; + } + } + h1 { + @apply mb-5 text-5xl dg--font-psbl dark:text-white; + } + h2 { + @apply mb-4 text-4xl dg--font-psbl dark:text-white; + } + h3 { + @apply mb-4 text-3xl font-bold dark:text-white; + } + h4 { + @apply mb-4 text-2xl font-bold dark:text-white; + } + h5 { + @apply mb-4 text-xl font-bold dark:text-white; + } + h6 { + @apply mb-4 text-lg font-bold dark:text-white; + } + p { + @apply mb-4; + } + ol, + ul { + @apply list-decimal; + li { + @apply mb-3; + pre { + @apply my-3; + } + } + ol, + ul { + @apply mt-3 ml-3; + } + } + pre { + @apply brightness-50 p-3 rounded-md; + background-color: rgb(var(--background-end-rgb)); + } +} + +.privacy { + ol { + counter-reset: item; + list-style-type: none; + } + ol > li { + counter-increment: item; + } + ol > li::before { + content: counters(item, ".") " - "; + } +} From 3a34241208fb46630bb5e6c992d0c916c8d5d6bc Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 18:31:04 -0400 Subject: [PATCH 18/72] feat(front): deletes user.ip from Sentry log events --- front/src/hooks.client.js | 5 +++++ front/src/hooks.server.js | 6 +++++- front/src/routes/+page.server.js | 2 +- front/static/404.html | 28 ++++++++++++++++------------ 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/front/src/hooks.client.js b/front/src/hooks.client.js index 3e01053cd..f350fd5ff 100644 --- a/front/src/hooks.client.js +++ b/front/src/hooks.client.js @@ -14,6 +14,11 @@ Sentry.init({ tracesSampleRate: ( PUBLIC_ENV === "production" ? 0.1 : 1.0 ), replaysSessionSampleRate: ( PUBLIC_ENV === "production" ? 0.1 : 1.0 ), replaysOnErrorSampleRate: ( PUBLIC_ENV === "production" ? 0.1 : 1.0 ), + beforeSend(event) { + if (event.user) { + delete event.user.ip + } + } }); export async function handleError({ error, event }) { diff --git a/front/src/hooks.server.js b/front/src/hooks.server.js index b389a1db6..ed3513e07 100644 --- a/front/src/hooks.server.js +++ b/front/src/hooks.server.js @@ -8,11 +8,15 @@ Sentry.init({ tracesSampleRate: PUBLIC_ENV === "production" ? 0.1 : 1.0, profilesSampleRate: PUBLIC_ENV === "production" ? 0.1 : 1.0, integrations: [], + beforeSend(event) { + if (event.user) { + delete event.user.ip + } + } }); export async function handleError({ error, event }) { const errorId = crypto.randomUUID(); - Sentry.setTag("environment", PUBLIC_ENV); Sentry.captureException(error, { extra: { event, errorId } }); console.log(`\x1b[33mError: ${error}`); diff --git a/front/src/routes/+page.server.js b/front/src/routes/+page.server.js index ae0749b23..a2a733dc5 100644 --- a/front/src/routes/+page.server.js +++ b/front/src/routes/+page.server.js @@ -7,7 +7,7 @@ const homeEndpoint = `${PUBLIC_API_URL}${PUBLIC_API_PATH_HOME}`; export async function load({ params }) { const homeContent = await api(homeEndpoint); if (!homeContent) { - throw error(404, "/404"); + throw error("Home Error", "/404"); } return { ...homeContent.attributes, diff --git a/front/static/404.html b/front/static/404.html index 383abe1ed..5938816ac 100644 --- a/front/static/404.html +++ b/front/static/404.html @@ -94,20 +94,24 @@

404

> From 101f885cfc7410bb8ccdf5316a4204616f92bd72 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 19:13:16 -0400 Subject: [PATCH 19/72] fix(front): adds error message to layout server --- front/src/routes/+layout.server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/src/routes/+layout.server.js b/front/src/routes/+layout.server.js index 8c46d906c..d99912c90 100644 --- a/front/src/routes/+layout.server.js +++ b/front/src/routes/+layout.server.js @@ -16,7 +16,7 @@ export async function load({ params }) { const footerContent = await api(footerEndpoint); if (!navigationContent || !footerContent) { - throw error(404, "/404"); + throw error("Layout Error", "/404"); } return { From 75f1a9d4eac07ee776c113f21bc150f9e4cdc2d9 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 19:13:42 -0400 Subject: [PATCH 20/72] build(utils): adds expose host to svelte-kit preview --- _utils/_scripts/front.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_utils/_scripts/front.sh b/_utils/_scripts/front.sh index 4757112f6..78982a28d 100644 --- a/_utils/_scripts/front.sh +++ b/_utils/_scripts/front.sh @@ -35,7 +35,7 @@ while test "$1" != --; do break ;; p | preview) - cdfront && npm run preview + cdfront && npm run preview -- --host break ;; ?) From 1c10bf1021de2863d6c7ec41fba2de36989ac0e3 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 19:49:56 -0400 Subject: [PATCH 21/72] feat(strapi): installs and configures sentry for strapi --- back/config/plugins.js | 10 ++++++++++ back/package-lock.json | 23 +++++++++++++++++++++++ back/package.json | 1 + 3 files changed, 34 insertions(+) diff --git a/back/config/plugins.js b/back/config/plugins.js index 0bac69f84..32a725b09 100644 --- a/back/config/plugins.js +++ b/back/config/plugins.js @@ -32,6 +32,16 @@ module.exports = ({ env }) => { return { upload, + "sentry": { + enabled: true, + config: { + dsn: env("PUBLIC_SENTRY_DSN"), + sendMetadata: true, + init: { + environment: env("PUBLIC_ENV"), + } + } + }, "strapi-blurhash": { enabled: true, config: { diff --git a/back/package-lock.json b/back/package-lock.json index f3ace2dc8..cf40cacf0 100644 --- a/back/package-lock.json +++ b/back/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "@strapi/plugin-i18n": "4.11.1", + "@strapi/plugin-sentry": "^4.11.1", "@strapi/plugin-seo": "^1.9.2", "@strapi/plugin-users-permissions": "4.11.1", "@strapi/provider-upload-aws-s3": "4.11.1", @@ -4255,6 +4256,28 @@ "styled-components": "5.3.3" } }, + "node_modules/@strapi/plugin-sentry": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@strapi/plugin-sentry/-/plugin-sentry-4.11.1.tgz", + "integrity": "sha512-VoXYqDPIbSOeSP6lIPFVA+wBO3YjyXTIWmQEXhynVT3w21ZNCnNQbT/SOA1suxKUynrxt6HNYFei4N8WYgPO5A==", + "dependencies": { + "@sentry/node": "6.19.7", + "@strapi/design-system": "1.8.0", + "@strapi/helper-plugin": "4.11.1", + "@strapi/icons": "1.8.0" + }, + "engines": { + "node": ">=14.19.1 <=18.x.x", + "npm": ">=6.0.0" + }, + "peerDependencies": { + "@strapi/strapi": "^4.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0", + "react-router-dom": "5.3.4", + "styled-components": "5.3.3" + } + }, "node_modules/@strapi/plugin-seo": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/@strapi/plugin-seo/-/plugin-seo-1.9.2.tgz", diff --git a/back/package.json b/back/package.json index 3169f665a..37b2c8538 100644 --- a/back/package.json +++ b/back/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@strapi/plugin-i18n": "4.11.1", + "@strapi/plugin-sentry": "^4.11.1", "@strapi/plugin-seo": "^1.9.2", "@strapi/plugin-users-permissions": "4.11.1", "@strapi/provider-upload-aws-s3": "4.11.1", From cb5039992ef67c9e658cdc1a1250f92fa980f0a9 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 19:50:44 -0400 Subject: [PATCH 22/72] feat(utils): adds supporting sentry env vars to backend also adjusts how environment is set for backend --- _utils/_scripts/setBackEnv.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/_utils/_scripts/setBackEnv.sh b/_utils/_scripts/setBackEnv.sh index b96f897a9..914fb063d 100755 --- a/_utils/_scripts/setBackEnv.sh +++ b/_utils/_scripts/setBackEnv.sh @@ -10,6 +10,15 @@ backEnv=$directory/../back/.env >$backEnv +if [ $1 == "ld" ] || [ $1 == "l" ] || [ $1 == "ls" ]; then + ENV="development" +elif [ $1 == "s" ]; then + ENV="staging" +else + ENV="production" +fi + +echo "NODE_ENV=${ENV}" >>$backEnv echo "PORT=1337" >>$backEnv echo "APP_KEYS=$(pass dg/cms/appkeys)" >>$backEnv echo "API_TOKEN_SALT=$(pass dg/cms/apitokensalt)" >>$backEnv @@ -22,31 +31,29 @@ echo "AWS_REGION=$(pass dg/aws/region)" >>$backEnv echo "AWS_S3_BUCKET=$(pass dg/cms/s/bucket)" >>$backEnv echo "CDN_BASE_URL=$(pass dg/cms/stg-cdnbaseurl)" >>$backEnv echo "DATABASE_PASSWORD=$(pass dg/cms/db/password)" >>$backEnv +echo "PUBLIC_ENV=${ENV}" >>$backEnv +echo "PUBLIC_SENTRY_DSN=$(pass dg/www/logs/sentrydsn)" >>$backEnv while test "$1" != --; do case $1 in ld | local-dev) echo "HOST=local.cms.dgrebb.com" >>$backEnv echo "DATABASE_HOST=localhost" >>$backEnv - echo "NODE_ENV=development" >>$backEnv break ;; ls | local-dev-stage) echo "HOST=local.cms.dgrebb.com" >>$backEnv echo "DATABASE_HOST=$(pass dg/cms/db/s/host)" >>$backEnv - echo "NODE_ENV=development" >>$backEnv break ;; l | local-docker) echo "HOST=0.0.0.0" >>$backEnv echo "DATABASE_HOST=host.docker.internal" >>$backEnv - echo "NODE_ENV=development" >>$backEnv break ;; s | stg) echo "HOST=0.0.0.0" >>$backEnv echo "DATABASE_HOST=$(pass dg/cms/db/s/host)" >>$backEnv - echo "NODE_ENV=production" >>$backEnv break ;; p | prd | prod) @@ -54,7 +61,6 @@ while test "$1" != --; do echo "AWS_S3_BUCKET=$(pass dg/cms/p/bucket)" >>$backEnv echo "CDN_BASE_URL=$(pass dg/cms/cdnbaseurl)" >>$backEnv echo "DATABASE_HOST=$(pass dg/cms/db/host)" >>$backEnv - echo "NODE_ENV=production" >>$backEnv break ;; ?) From 0163c51a411b056df85d7c9495da9bb51a1b6a84 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 22:30:08 -0400 Subject: [PATCH 23/72] build(front): bumps sentry to latest version --- front/package-lock.json | 158 ++++++++++++++++++++-------------------- front/package.json | 2 +- 2 files changed, 80 insertions(+), 80 deletions(-) diff --git a/front/package-lock.json b/front/package-lock.json index c372a1676..8d56321e3 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -550,13 +550,13 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, "node_modules/@sentry-internal/tracing": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.55.2.tgz", - "integrity": "sha512-yBW+R7NfwLrOjpwOJHoOSvGDDoM3ZKod5OKXi7Gd5tYqVm1mCaL0n2/wlNMcGTbPbulLBtgzjoTU1bPJAGhmYw==", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.56.0.tgz", + "integrity": "sha512-OKI4Pz/O13gng8hT9rNc+gRV3+P7nnk1HnHlV8fgaQydS6DsRxoDL1sHa42tZGbh7K9jqNAP3TC6VjBOsr2tXA==", "dependencies": { - "@sentry/core": "7.55.2", - "@sentry/types": "7.55.2", - "@sentry/utils": "7.55.2", + "@sentry/core": "7.56.0", + "@sentry/types": "7.56.0", + "@sentry/utils": "7.56.0", "tslib": "^1.9.3" }, "engines": { @@ -564,15 +564,15 @@ } }, "node_modules/@sentry/browser": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.55.2.tgz", - "integrity": "sha512-RgA4KOD6t8XHVLm6D2oTh9KW19g3DoQ0QsrUmAq4+giSj2AyDW67VP2V4E72mCZ9Ln9AkNhY0Eh3XuD3opiFQA==", - "dependencies": { - "@sentry-internal/tracing": "7.55.2", - "@sentry/core": "7.55.2", - "@sentry/replay": "7.55.2", - "@sentry/types": "7.55.2", - "@sentry/utils": "7.55.2", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.56.0.tgz", + "integrity": "sha512-qpyyw+NM/psbNAYMlTCCdWwxHHcogppEQ+Q40jGE4sKP2VRIjjyteJkUcaEMoGpbJXx9puzTWbpzqlQ8r15Now==", + "dependencies": { + "@sentry-internal/tracing": "7.56.0", + "@sentry/core": "7.56.0", + "@sentry/replay": "7.56.0", + "@sentry/types": "7.56.0", + "@sentry/utils": "7.56.0", "tslib": "^1.9.3" }, "engines": { @@ -628,12 +628,12 @@ } }, "node_modules/@sentry/core": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.55.2.tgz", - "integrity": "sha512-clzQirownxqADv9+fopyMJTHzaoWedkN2+mi4ro1LxjLgROdXBFurMCC1nT+7cH/xvQ5gMIRkM/y/4gRtKy2Ew==", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.56.0.tgz", + "integrity": "sha512-Nuyyfh09Yz27kPo74fXHlrdmZeK6zrlJVtxQ6LkwuoaTBcNcesNXVaOtr6gjvUGUmsfriVPP3Jero5LXufV7GQ==", "dependencies": { - "@sentry/types": "7.55.2", - "@sentry/utils": "7.55.2", + "@sentry/types": "7.56.0", + "@sentry/utils": "7.56.0", "tslib": "^1.9.3" }, "engines": { @@ -641,12 +641,12 @@ } }, "node_modules/@sentry/integrations": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.55.2.tgz", - "integrity": "sha512-QgHx7MKMLMx1e5XgQyeUYtZA+xPc7IjS0MaZTpIRehtxD8Fg1tWkOxV4PP2nUXksLjfkoISo0jpYLtuDSCGFTw==", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.56.0.tgz", + "integrity": "sha512-0d/E/R3MW+5bQ9wcHPD0h/B2KFOpUt+wQgN1kNk7atY12auDzHKuGCjPP87D/xVyRoma3ErFqZCRqwtvCj1cfQ==", "dependencies": { - "@sentry/types": "7.55.2", - "@sentry/utils": "7.55.2", + "@sentry/types": "7.56.0", + "@sentry/utils": "7.56.0", "localforage": "^1.8.1", "tslib": "^1.9.3" }, @@ -655,14 +655,14 @@ } }, "node_modules/@sentry/node": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.55.2.tgz", - "integrity": "sha512-43lGfMFFUD38Xerc4DqIuQkEOETHCh31JHUTI6r/gXdzmcKpWRscgH4nAcAUoCu+Myrv0fVXsOa12FM4DPfr8A==", - "dependencies": { - "@sentry-internal/tracing": "7.55.2", - "@sentry/core": "7.55.2", - "@sentry/types": "7.55.2", - "@sentry/utils": "7.55.2", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.56.0.tgz", + "integrity": "sha512-QXbWy/ypRxfFd8iP6zLvHInYZyjGKPrkVNYt43mhKAZHm764NxX/29vDfj1FztgG9Z6lVLIG2eyqTvLruYmsWw==", + "dependencies": { + "@sentry-internal/tracing": "7.56.0", + "@sentry/core": "7.56.0", + "@sentry/types": "7.56.0", + "@sentry/utils": "7.56.0", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", @@ -673,26 +673,26 @@ } }, "node_modules/@sentry/replay": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.55.2.tgz", - "integrity": "sha512-G9iAcI9bvy5X8fvdz0QxF3LJ8oGB0Vxt0iOPdRZYhjIcPbNpE3NaeT6xZlNX1pCcHLroE6BMRF/6TTalcl5Erw==", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.56.0.tgz", + "integrity": "sha512-bvjiJK1+SM/paLapuL+nEJ8CIF1bJqi0nnFyxUIi2L5L6yb2uMwfyT3IQ+kz0cXJsLdb3HN4WMphVjyiU9pFdg==", "dependencies": { - "@sentry/core": "7.55.2", - "@sentry/types": "7.55.2", - "@sentry/utils": "7.55.2" + "@sentry/core": "7.56.0", + "@sentry/types": "7.56.0", + "@sentry/utils": "7.56.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/svelte": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/svelte/-/svelte-7.55.2.tgz", - "integrity": "sha512-xXyupAc34pTtZJZ2caAbFORn4dG8fn5B3I7PzcvBDF4V01H6GMygsyZMyKflegM8x1+bqVzgd/ALYpG9vZaogw==", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/svelte/-/svelte-7.56.0.tgz", + "integrity": "sha512-dmyDWdbJbikQnbupbl20CgZazpGyz1p0AlS3Z99aWr8RKWOqYs6zsfijdsV5UQ6blxSuWztZg2sD9++WxPRtgw==", "dependencies": { - "@sentry/browser": "7.55.2", - "@sentry/types": "7.55.2", - "@sentry/utils": "7.55.2", + "@sentry/browser": "7.56.0", + "@sentry/types": "7.56.0", + "@sentry/utils": "7.56.0", "magic-string": "^0.30.0", "tslib": "^1.9.3" }, @@ -704,17 +704,17 @@ } }, "node_modules/@sentry/sveltekit": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/sveltekit/-/sveltekit-7.55.2.tgz", - "integrity": "sha512-KW6kuL3WTFNy4cU8NbtW56uaRmNGUfHWMYK7+mCEB7XZxmaA78I42m9qj3xDWHa4GFfcpYpe9F4rsMb6XMVXYw==", - "dependencies": { - "@sentry-internal/tracing": "7.55.2", - "@sentry/core": "7.55.2", - "@sentry/integrations": "7.55.2", - "@sentry/node": "7.55.2", - "@sentry/svelte": "7.55.2", - "@sentry/types": "7.55.2", - "@sentry/utils": "7.55.2", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/sveltekit/-/sveltekit-7.56.0.tgz", + "integrity": "sha512-yuHZ9azMGD+Zl3S7+1hwVugNzN2hk+7iEFZlfPW+q8ZSRZcDOULVL63EHoTFWH1gnusu6dRSbwj4BT3GvVOmWg==", + "dependencies": { + "@sentry-internal/tracing": "7.56.0", + "@sentry/core": "7.56.0", + "@sentry/integrations": "7.56.0", + "@sentry/node": "7.56.0", + "@sentry/svelte": "7.56.0", + "@sentry/types": "7.56.0", + "@sentry/utils": "7.56.0", "@sentry/vite-plugin": "^0.6.0", "magicast": "0.2.8", "sorcery": "0.11.0" @@ -727,30 +727,30 @@ } }, "node_modules/@sentry/tracing": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.55.2.tgz", - "integrity": "sha512-hVhz/XvZ4vE9hgkGkUOdXuJ6CxUDKe0Zp+WUAxU1s48onN7Yia9yQYtDx4ZpTDrJw2ap4QgHwGK4PH+PUMN3Rg==", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.56.0.tgz", + "integrity": "sha512-Qy7lJdC2YBk9T8JFt4da7xHB3pTZH6yUiIwo5edmSBv2cY6MQ0QZgLzsjJurjf47+/WecVYYKdye9q4twsBlDA==", "dependencies": { - "@sentry-internal/tracing": "7.55.2" + "@sentry-internal/tracing": "7.56.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.55.2.tgz", - "integrity": "sha512-mAtkA8wvUDrLjAAmy9tjn+NiXcxVz/ltbslTKaIW6JNgVRz5kMt1Ny8RJsgqaZqa4LFP8q+IvWw4Vd91kb57rA==", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.56.0.tgz", + "integrity": "sha512-5WjhVOQm75ItOytOx2jTx+5yw8/qJ316+g1Di8dS9+kgIi1zniqdMcX00C2yYe3FMUgFB49PegCUYulm9Evapw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.55.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.55.2.tgz", - "integrity": "sha512-Yv9XtbOESdN7bkK2AMrKsmKMF5OOVv5v5hVcOqXtSTw1t2oMAtRjXXqGpUo+TkdTOjeoX6dr19ozVFHaGvqHkw==", + "version": "7.56.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.56.0.tgz", + "integrity": "sha512-wgeX7bufxc//TjjSIE+gCMm8hVId7Jzvc+f441bYrWnNZBuzPIDW2BummCcPrKzSYe5GeYZDTZGV8YZGMLGBjw==", "dependencies": { - "@sentry/types": "7.55.2", + "@sentry/types": "7.56.0", "tslib": "^1.9.3" }, "engines": { @@ -1101,9 +1101,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001503", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001503.tgz", - "integrity": "sha512-Sf9NiF+wZxPfzv8Z3iS0rXM1Do+iOy2Lxvib38glFX+08TCYYYGR5fRJXk4d77C4AYwhUjgYgMsMudbh2TqCKw==", + "version": "1.0.30001505", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001505.tgz", + "integrity": "sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A==", "dev": true, "funding": [ { @@ -1248,9 +1248,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.433", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.433.tgz", - "integrity": "sha512-MGO1k0w1RgrfdbLVwmXcDhHHuxCn2qRgR7dYsJvWFKDttvYPx6FNzCGG0c/fBBvzK2LDh3UV7Tt9awnHnvAAUQ==", + "version": "1.4.435", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.435.tgz", + "integrity": "sha512-B0CBWVFhvoQCW/XtjRzgrmqcgVWg6RXOEM/dK59+wFV93BFGR6AeNKc4OyhM+T3IhJaOOG8o/V+33Y2mwJWtzw==", "dev": true }, "node_modules/es6-object-assign": { @@ -2138,9 +2138,9 @@ } }, "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, "engines": { "node": ">= 6" @@ -2654,9 +2654,9 @@ } }, "node_modules/svelte": { - "version": "3.59.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.1.tgz", - "integrity": "sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==", + "version": "3.59.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz", + "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==", "engines": { "node": ">= 8" } diff --git a/front/package.json b/front/package.json index 18e1204c0..7e3ee1fb3 100644 --- a/front/package.json +++ b/front/package.json @@ -23,7 +23,7 @@ "type": "module", "dependencies": { "@accuser/svelte-plausible-analytics": "github:dgrebb/svelte-plausible-analytics#release/v0.4.0", - "@sentry/sveltekit": "^7.55.2", + "@sentry/sveltekit": "^7.56.0", "blurhash": "^1.1.5", "svelte-blurhash": "^1.2.1", "svelte-markdown": "^0.2.3" From fbbb3edc20a1f113bf1a4a7648f8bae566ee879c Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 22:30:47 -0400 Subject: [PATCH 24/72] build(front): adds exception for intentional link to 404 page --- front/svelte.config.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/front/svelte.config.js b/front/svelte.config.js index e36eb2582..2c3028401 100644 --- a/front/svelte.config.js +++ b/front/svelte.config.js @@ -11,6 +11,14 @@ const config = { precompress: true, strict: true, }), + prerender: { + handleHttpError: ({ path, referrer, message }) => { + if (path === "/404" && referrer === "/privacy") { + return; + } + throw new Error(message); + }, + }, }, preprocess: vitePreprocess(), }; From 71a926549dea5db841778226e37da8f870333447 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Tue, 20 Jun 2023 22:32:11 -0400 Subject: [PATCH 25/72] style(front): self-closes span --- front/src/routes/+layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/src/routes/+layout.svelte b/front/src/routes/+layout.svelte index 48b78fdd3..456bcce42 100644 --- a/front/src/routes/+layout.svelte +++ b/front/src/routes/+layout.svelte @@ -8,7 +8,7 @@ const { navHeading, navItems, copyright, copyleft } = data; - +
From 968a2175c48f1fe4a16925ac7e79975461fe280c Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 02:00:12 -0400 Subject: [PATCH 26/72] fix(front): installs, uses, and refactors for unplugin-icons and inanimate svgs --- front/package-lock.json | 355 ++++++++++++++++++++++++++---- front/package.json | 12 +- front/src/components/Links.svelte | 56 +++-- front/vite.config.js | 12 +- 4 files changed, 364 insertions(+), 71 deletions(-) diff --git a/front/package-lock.json b/front/package-lock.json index 8d56321e3..679aaf243 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -9,22 +9,26 @@ "version": "0.0.1", "dependencies": { "@accuser/svelte-plausible-analytics": "github:dgrebb/svelte-plausible-analytics#release/v0.4.0", - "@sentry/sveltekit": "^7.55.2", + "@sentry/sveltekit": "^7.56.0", "blurhash": "^1.1.5", "svelte-blurhash": "^1.2.1", "svelte-markdown": "^0.2.3" }, "devDependencies": { - "@iconify/svelte": "^3.1.4", - "@sveltejs/adapter-auto": "^2.1.0", + "@iconify-json/entypo-social": "^1.1.4", + "@iconify-json/icomoon-free": "^1.1.4", + "@iconify-json/mdi": "^1.1.52", + "@iconify-json/ph": "^1.1.5", + "@iconify-json/typcn": "^1.1.4", "@sveltejs/adapter-static": "^2.0.2", - "@sveltejs/kit": "^1.20.2", + "@sveltejs/kit": "^1.20.4", "autoprefixer": "^10.4.14", "postcss": "^8.4.24", "postcss-nesting": "^11.2.2", - "svelte": "^3.59.1", + "svelte": "^3.59.2", "svelte-meta-tags": "^2.8.0", "tailwindcss": "^3.3.2", + "unplugin-icons": "^0.16.3", "vite": "^4.3.9" } }, @@ -49,6 +53,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@antfu/install-pkg": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz", + "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==", + "dev": true, + "dependencies": { + "execa": "^5.1.1", + "find-up": "^5.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.4.tgz", + "integrity": "sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@babel/helper-string-parser": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", @@ -435,19 +461,49 @@ "node": ">=12" } }, - "node_modules/@iconify/svelte": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-3.1.4.tgz", - "integrity": "sha512-YDwQlN46ka8KPRayDb7TivmkAPizfTXi6BSRNqa1IV0+byA907n8JcgQafA7FD//pW5XCuuAhVx6uRbKTo+CfA==", + "node_modules/@iconify-json/entypo-social": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@iconify-json/entypo-social/-/entypo-social-1.1.4.tgz", + "integrity": "sha512-i/DMR+LDyqufjkEJRfJtTBdo8gEabFN0HzE+dTWMrm1ZHEuJNpLY0y86TdAsHKmpnW59OlGUzGJ/hH4Xg0CHuQ==", "dev": true, "dependencies": { - "@iconify/types": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/cyberalien" - }, - "peerDependencies": { - "svelte": "*" + "@iconify/types": "*" + } + }, + "node_modules/@iconify-json/icomoon-free": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@iconify-json/icomoon-free/-/icomoon-free-1.1.4.tgz", + "integrity": "sha512-HrUpi+0lwTS+jkbjFwLOeO/u2BuF3zWbS/AUOJEGbcXdhkX7uBRWa/V8IF9cFVhmd72mpp6Nk2Ic1h+R/cBpww==", + "dev": true, + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify-json/mdi": { + "version": "1.1.52", + "resolved": "https://registry.npmjs.org/@iconify-json/mdi/-/mdi-1.1.52.tgz", + "integrity": "sha512-tLzpFcmoGw1/jHcl+BshUd4bqvP4755OUluaARsuKskTp2aIPIAkRQOhzJGpry9CZ0i82z0alq4HrKrp9uvj4A==", + "dev": true, + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify-json/ph": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@iconify-json/ph/-/ph-1.1.5.tgz", + "integrity": "sha512-iLXq3nohfGge22gL2tZmQ2WHBKkKkIbGWrkuyC8arckS4PWaONyh4A+uDPtSek9QbYDvi9AE2+NxWkNZhANotA==", + "dev": true, + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify-json/typcn": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@iconify-json/typcn/-/typcn-1.1.4.tgz", + "integrity": "sha512-zMpo21Vmb3Gwfi4ppxkafgOMi80BEFwiHhUYIrMqCWEpLBVOj+KpcrP3Tl3kQ9UgLxMRBFoQq/CYLLjqRG6TWA==", + "dev": true, + "dependencies": { + "@iconify/types": "*" } }, "node_modules/@iconify/types": { @@ -456,6 +512,20 @@ "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", "dev": true }, + "node_modules/@iconify/utils": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.6.tgz", + "integrity": "sha512-WJNcj/mmFQoYok+576EexlCQe/g2tZ8X9jR4QLo++z6DlVqrjwt7FBYetTQ3iyTtrPMFHcAx0JiCqtUz30XG5A==", + "dev": true, + "dependencies": { + "@antfu/install-pkg": "^0.1.1", + "@antfu/utils": "^0.7.4", + "@iconify/types": "^2.0.0", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "local-pkg": "^0.4.3" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -768,18 +838,6 @@ "node": ">= 10" } }, - "node_modules/@sveltejs/adapter-auto": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz", - "integrity": "sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==", - "dev": true, - "dependencies": { - "import-meta-resolve": "^3.0.0" - }, - "peerDependencies": { - "@sveltejs/kit": "^1.0.0" - } - }, "node_modules/@sveltejs/adapter-static": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.2.tgz", @@ -1101,9 +1159,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001505", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001505.tgz", - "integrity": "sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A==", + "version": "1.0.30001506", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001506.tgz", + "integrity": "sha512-6XNEcpygZMCKaufIcgpQNZNf00GEqc7VQON+9Rd0K1bMYo8xhMZRAo5zpbnbMNizi4YNgIDAFrdykWsvY3H4Hw==", "dev": true, "funding": [ { @@ -1179,6 +1237,20 @@ "node": ">= 0.6" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -1325,6 +1397,29 @@ "node": ">=4" } }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -1446,6 +1541,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/glob": { "version": "9.3.2", "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz", @@ -1561,21 +1668,20 @@ "node": ">= 6" } }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, - "node_modules/import-meta-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", - "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1695,6 +1801,18 @@ "node": ">=0.12.0" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-typed-array": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", @@ -1735,6 +1853,12 @@ "node": ">=6" } }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true + }, "node_modules/lie": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", @@ -1758,6 +1882,18 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/localforage": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", @@ -1825,6 +1961,12 @@ "node": ">= 12" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -1858,6 +2000,15 @@ "node": ">=10.0.0" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/minimatch": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", @@ -1990,6 +2141,18 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2039,6 +2202,21 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -2083,6 +2261,15 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -2526,6 +2713,33 @@ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/sirv": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", @@ -2577,6 +2791,15 @@ "node": ">=10.0.0" } }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/sucrase": { "version": "3.32.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", @@ -2842,6 +3065,56 @@ "webpack-virtual-modules": "^0.5.0" } }, + "node_modules/unplugin-icons": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.16.3.tgz", + "integrity": "sha512-hivVVr6++WHSj6Iz+rjTa14/ALMYT+PFd2sPtTBKlQR3cdzui1VwM72TzSu94NkDm/KVncvOIiBwoHwUPeL9bg==", + "dev": true, + "dependencies": { + "@antfu/install-pkg": "^0.1.1", + "@antfu/utils": "^0.7.4", + "@iconify/utils": "^2.1.6", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "local-pkg": "^0.4.3", + "unplugin": "^1.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@svgr/core": ">=7.0.0", + "@vue/compiler-sfc": "^3.0.2 || ^2.7.0", + "vue-template-compiler": "^2.6.12", + "vue-template-es2015-compiler": "^1.9.0" + }, + "peerDependenciesMeta": { + "@svgr/core": { + "optional": true + }, + "@vue/compiler-sfc": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "vue-template-es2015-compiler": { + "optional": true + } + } + }, + "node_modules/unplugin-icons/node_modules/unplugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.3.1.tgz", + "integrity": "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.2", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.5.0" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", diff --git a/front/package.json b/front/package.json index 7e3ee1fb3..eef0de00a 100644 --- a/front/package.json +++ b/front/package.json @@ -8,16 +8,20 @@ "preview": "vite preview" }, "devDependencies": { - "@iconify/svelte": "^3.1.4", - "@sveltejs/adapter-auto": "^2.1.0", + "@iconify-json/entypo-social": "^1.1.4", + "@iconify-json/icomoon-free": "^1.1.4", + "@iconify-json/mdi": "^1.1.52", + "@iconify-json/ph": "^1.1.5", + "@iconify-json/typcn": "^1.1.4", "@sveltejs/adapter-static": "^2.0.2", - "@sveltejs/kit": "^1.20.2", + "@sveltejs/kit": "^1.20.4", "autoprefixer": "^10.4.14", "postcss": "^8.4.24", "postcss-nesting": "^11.2.2", - "svelte": "^3.59.1", + "svelte": "^3.59.2", "svelte-meta-tags": "^2.8.0", "tailwindcss": "^3.3.2", + "unplugin-icons": "^0.16.3", "vite": "^4.3.9" }, "type": "module", diff --git a/front/src/components/Links.svelte b/front/src/components/Links.svelte index 886e3e59b..2d3086561 100644 --- a/front/src/components/Links.svelte +++ b/front/src/components/Links.svelte @@ -1,21 +1,33 @@
    - {#if link.icon === "Catchafire"} - - {:else} - - {/if} + {/each} diff --git a/front/vite.config.js b/front/vite.config.js index bbf8c7da4..d97601bb7 100644 --- a/front/vite.config.js +++ b/front/vite.config.js @@ -1,6 +1,12 @@ -import { sveltekit } from '@sveltejs/kit/vite'; -import { defineConfig } from 'vite'; +import { sveltekit } from "@sveltejs/kit/vite"; +import { defineConfig } from "vite"; +import Icons from "unplugin-icons/vite"; export default defineConfig({ - plugins: [sveltekit()] + plugins: [ + sveltekit(), + Icons({ + compiler: "svelte", + }), + ], }); From 1818232b7f9408719a84a5d5aae6202c82a50cdd Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 02:02:13 -0400 Subject: [PATCH 27/72] fix(front): refactors for and uses noscript styles closes #100 --- front/src/app.html | 20 +++++++------------- front/src/components/Image.svelte | 2 +- front/src/components/Links.svelte | 2 -- front/src/routes/+page.svelte | 11 ++++++++++- front/src/styles/global.css | 1 + front/static/styles/noscript.css | 9 +++++++++ 6 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 front/static/styles/noscript.css diff --git a/front/src/app.html b/front/src/app.html index a85925466..8cafde57e 100644 --- a/front/src/app.html +++ b/front/src/app.html @@ -4,21 +4,15 @@ %sveltekit.head% - - + +
    %sveltekit.body%
    diff --git a/front/src/components/Image.svelte b/front/src/components/Image.svelte index abbbd9fc2..de6a6965f 100644 --- a/front/src/components/Image.svelte +++ b/front/src/components/Image.svelte @@ -7,7 +7,7 @@ export let title; export let width; export let height; - export let classes; + export let classes = null; export let ariaHidden = "false"; let loaded = false; diff --git a/front/src/components/Links.svelte b/front/src/components/Links.svelte index 2d3086561..f6dfc346b 100644 --- a/front/src/components/Links.svelte +++ b/front/src/components/Links.svelte @@ -44,8 +44,6 @@ ) }); - let thing = IconMastodon; -
      + {/if}

      {headline}

      Date: Wed, 21 Jun 2023 02:29:02 -0400 Subject: [PATCH 28/72] ci(front): adds privacy api endpoint to workflow --- .github/workflows/build-deploy-front.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-deploy-front.yml b/.github/workflows/build-deploy-front.yml index c928e64a4..7fb1315ad 100644 --- a/.github/workflows/build-deploy-front.yml +++ b/.github/workflows/build-deploy-front.yml @@ -29,6 +29,7 @@ jobs: echo PUBLIC_API_PATH_NAVIGATION='${{ secrets.PUBLIC_API_PATH_NAVIGATION }}' >> front/.env echo PUBLIC_API_PATH_HOME='${{ secrets.PUBLIC_API_PATH_HOME }}' >> front/.env echo PUBLIC_API_PATH_FOOTER='${{ secrets.PUBLIC_API_PATH_FOOTER }}' >> front/.env + echo PUBLIC_API_PATH_PRIVACY='${{ secrets.PUBLIC_API_PATH_PRIVACY }}' >> front/.env echo API_KEY=${{ secrets.API_KEY }} >> front/.env echo PUBLIC_SENTRY_DSN=${{ secrets.PUBLIC_SENTRY_DSN }} >> front/.env echo PUBLIC_ENV=${{ secrets.PUBLIC_ENV }} >> front/.env From 7efbab94f0503c33aa2786d9fcec51a141ff1584 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 10:57:22 -0400 Subject: [PATCH 29/72] fix(front): uses theme colors for pre tag on privacy page --- front/src/styles/posts.css | 18 ++++++++++-------- front/src/styles/utilities.css | 2 ++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/front/src/styles/posts.css b/front/src/styles/posts.css index d5eacd464..976ab10b4 100644 --- a/front/src/styles/posts.css +++ b/front/src/styles/posts.css @@ -12,6 +12,7 @@ h5, h6 { @apply mt-7; + color: rgb(var(--foreground-rgb)); &:first-child { @apply mt-0; } @@ -20,22 +21,22 @@ } } h1 { - @apply mb-5 text-5xl dg--font-psbl dark:text-white; + @apply mb-5 text-5xl dg--font-psbl; } h2 { - @apply mb-4 text-4xl dg--font-psbl dark:text-white; + @apply mb-4 text-4xl dg--font-psbl; } h3 { - @apply mb-4 text-3xl font-bold dark:text-white; + @apply mb-4 text-3xl font-bold; } h4 { - @apply mb-4 text-2xl font-bold dark:text-white; + @apply mb-4 text-2xl font-bold; } h5 { - @apply mb-4 text-xl font-bold dark:text-white; + @apply mb-4 text-xl font-bold; } h6 { - @apply mb-4 text-lg font-bold dark:text-white; + @apply mb-4 text-lg font-bold; } p { @apply mb-4; @@ -55,8 +56,9 @@ } } pre { - @apply brightness-50 p-3 rounded-md; - background-color: rgb(var(--background-end-rgb)); + @apply p-3 rounded-md shadow-lg; + background-color: rgb(var(--background-pre-rgb)); + color: rgb(var(--foreground-rgb)); } } diff --git a/front/src/styles/utilities.css b/front/src/styles/utilities.css index 05e0871fb..4fb337c90 100644 --- a/front/src/styles/utilities.css +++ b/front/src/styles/utilities.css @@ -17,6 +17,7 @@ --foreground-rgb-faded: 179, 181, 181; --background-start-rgb: 214, 219, 220; --background-end-rgb: 255, 255, 255; + --background-pre-rgb: 203, 213, 225; --btn--secondary-rgb: 190, 193, 194; --btn-secondary-highlight-rgb: 92, 92, 92; --highlight-rgb: 175, 83, 7; @@ -28,6 +29,7 @@ --foreground-rgb-faded: 89, 90, 91; --background-start-rgb: 35, 36, 38; --background-end-rgb: 29, 30, 32; + --background-pre-rgb: 3, 3, 3; --highlight-rgb: 255, 255, 21; --btn--secondary-rgb: 54, 54, 56; --btn-secondary-highlight-rgb: 92, 92, 92; From be297c8721b68e6cce7b9ee4afe7ec5c632b642d Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 12:09:29 -0400 Subject: [PATCH 30/72] feat(front): adds Flourish component and sets z-index for media elements --- front/src/components/Flourish.svelte | 1 + front/src/routes/+layout.svelte | 1 - front/src/routes/+page.svelte | 2 ++ front/src/routes/privacy/+page.svelte | 2 ++ front/src/styles/global.css | 12 ++++++++---- front/src/styles/posts.css | 2 ++ 6 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 front/src/components/Flourish.svelte diff --git a/front/src/components/Flourish.svelte b/front/src/components/Flourish.svelte new file mode 100644 index 000000000..ee532b6e3 --- /dev/null +++ b/front/src/components/Flourish.svelte @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front/src/routes/+layout.svelte b/front/src/routes/+layout.svelte index 456bcce42..fc2d8b757 100644 --- a/front/src/routes/+layout.svelte +++ b/front/src/routes/+layout.svelte @@ -8,7 +8,6 @@ const { navHeading, navItems, copyright, copyleft } = data; -
      diff --git a/front/src/routes/+page.svelte b/front/src/routes/+page.svelte index a43cd8b34..c6934438c 100644 --- a/front/src/routes/+page.svelte +++ b/front/src/routes/+page.svelte @@ -2,6 +2,7 @@ import { PUBLIC_MEDIA_URL } from "$env/static/public"; import SvelteMarkdown from 'svelte-markdown'; import { MetaTags } from "svelte-meta-tags"; + import Flourish from "../components/Flourish.svelte"; import Head from "../components/Head.svelte"; import Image from "../components/Image.svelte"; import Links from "../components/Links.svelte"; @@ -14,6 +15,7 @@
      + {#if image} import SvelteMarkdown from 'svelte-markdown'; + import Flourish from '../../components/Flourish.svelte'; import Link from "../../components/markdown/Link.svelte"; export let data; @@ -7,6 +8,7 @@
      +

      {title}

      diff --git a/front/src/styles/global.css b/front/src/styles/global.css index 3a5c415f2..76715a089 100644 --- a/front/src/styles/global.css +++ b/front/src/styles/global.css @@ -67,11 +67,13 @@ body { } .flourish { - position: fixed; - top: 0; + @apply shadow-sm; + border-top: 8px solid rgb(var(--foreground-rgb)); left: 0; + position: fixed; right: 0; - border-top: 8px solid rgb(var(--foreground-rgb)); + top: 0; + z-index: 1; } .header, @@ -141,8 +143,10 @@ body { .bio { img { - @apply m-auto rounded-full; + @apply m-auto rounded-full shadow-lg; border: 1px solid rgba(var(--foreground-rgb), 0.5); + position: relative; + z-index: 3; } h1.headline { @apply dg--font-psb; diff --git a/front/src/styles/posts.css b/front/src/styles/posts.css index 976ab10b4..a2e1d178e 100644 --- a/front/src/styles/posts.css +++ b/front/src/styles/posts.css @@ -59,6 +59,8 @@ @apply p-3 rounded-md shadow-lg; background-color: rgb(var(--background-pre-rgb)); color: rgb(var(--foreground-rgb)); + position: relative; + z-index: 3; } } From b6eb27774f8ed78058954dca927aec8df8c0fabf Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 12:24:01 -0400 Subject: [PATCH 31/72] build(front): removes server_name from sentry events --- front/src/hooks.client.js | 1 + front/src/hooks.server.js | 1 + front/static/404.html | 1 + 3 files changed, 3 insertions(+) diff --git a/front/src/hooks.client.js b/front/src/hooks.client.js index f350fd5ff..f5ff743e3 100644 --- a/front/src/hooks.client.js +++ b/front/src/hooks.client.js @@ -17,6 +17,7 @@ Sentry.init({ beforeSend(event) { if (event.user) { delete event.user.ip + delete event.server_name } } }); diff --git a/front/src/hooks.server.js b/front/src/hooks.server.js index ed3513e07..09daaf160 100644 --- a/front/src/hooks.server.js +++ b/front/src/hooks.server.js @@ -11,6 +11,7 @@ Sentry.init({ beforeSend(event) { if (event.user) { delete event.user.ip + delete event.server_name } } }); diff --git a/front/static/404.html b/front/static/404.html index 5938816ac..29b1a9e1a 100644 --- a/front/static/404.html +++ b/front/static/404.html @@ -107,6 +107,7 @@

      404

      beforeSend(event) { if (event.user) { delete event.user.ip + delete event.server_name } } }), From 54331f54990a0073f9d5de2039300782c8030ecb Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 13:08:41 -0400 Subject: [PATCH 32/72] docs(project): updates privacy policy --- PRIVACY.md | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/PRIVACY.md b/PRIVACY.md index 57cd26cc6..0fad2e0f3 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -1,25 +1,30 @@ -## Effective Date: _June 20, 2023_ +## Effective Date: _June 21, 2023_ -Thank you for visiting my website. This Privacy Policy explains how I collect, use, and protect your personal information when you use this website and any related services. By accessing or using this website, you agree to the terms of this Privacy Policy. If you do not agree with the terms outlined in this Privacy Policy, please do not use this website or provide any personal information. +Thank you for visiting! This Privacy Policy explains how I collect, use, and protect your personal information when you use this website and any related services. + +By accessing or using this website, you agree to the terms of this Privacy Policy. If you do not agree with the terms outlined in this Privacy Policy, please do not use this website or provide any personal information. ## Information I Collect -1. **Personal Information**: Apart from browser and system information, no personal details are collected. I've taken great care in scrubbing all personally-identifiable information from both the Analytics and Error Logging tools used (details below). This includes visitors' IP addresses, which are of no use to me, nor do I condone the collection of. +1. **Personal Information**: Apart from browser and system information, no personal details are collected. I've taken great care in scrubbing all personally-identifiable information from both the Analytics and Error Logging tools used (details below). This includes visitors' IP addresses and `server_name`, which refers to your computer's network name. - 1. **Plausible Analytics** is used for pageview and visitor count tracking. See [their delightful post about privacy policies](https://plausible.io/blog/privacy-policy-page#privacy-policy-examples). + 1. **Plausible Analytics** is used for pageview and visitor count tracking. See the company's [delightful post about privacy policies](https://plausible.io/blog/privacy-policy-page#privacy-policy-examples), which inspired most of this document. More details specific to Plausible's privacy practices can be found below in the [Third-Party Services](#third-party-services) section. - 2. **Sentry.io** is used to capture errors on both the client (browser), and server (500s, 400s, and 300s). Sentry allows capturing browser and system information, which can be used to diagnose problems with this site. Sentry also allows a "playback" of user interaction on the site, aiding in further triage of broken code or user experience. + 2. **Sentry.io** is used to capture errors on both the client (browser), and server (500s, 400s, and 300s). Sentry allows capturing browser and system information, which can be used to diagnose problems with this site. Sentry also allows a "playback" of user interaction on the site, aiding in further triage of broken code or user experience. Sentry, by default, logs IP addresses. I scrub this data before it is delivered to the sentry.io services and servers. The JavaScript performing this scrub is minified away from evident view on main dgrebb.com pages, but can be seen at the bottom of the static [404 page](/404): ```javascript beforeSend(event) { if (event.user) { - delete event.user.ip + delete event.user.ip + delete event.server_name } } ``` + Regardless of the data scrubbing done on my side, Sentry's servers will log the requesting IP address when a client (your browser) loads JavaScript from their servers. Please see the [Third-Party Services](#third-party-services) section for details specific to Sentry's privacy practices. + 2. **Usage Information**: I may also collect certain non-personally identifiable information ("Usage Information") automatically when you visit dgrebb.com. This may include your browser type, operating system, referring website, pages you visit, and the date and time of your visit. ## Use of Cookies @@ -28,9 +33,9 @@ Thank you for visiting my website. This Privacy Policy explains how I collect, u ## How I Use Your Information -1. **Personal Information**: Nothing collected is identifiable, and anonymized before sent to third-party services like Plausible and Sentry. In simple terms, I may know the type of browser and operating system used to access dgrebb.com, but am unable to associate those details back to a specific IP address, email address, mailing address, etc. +1. **Personal Information**: Nothing collected is identifiable, and anonymized before sent to third-party services like Plausible and Sentry. In simple terms, I may know the type of browser and operating system used to access dgrebb.com, but am unable to associate those details back to a specific IP address, MAC address, email address, mailing address, etc. -2. **Usage Information**: I may use Usage Information to analyze trends, administer the website, track users' movements, and gather demographic information for aggregate use. This information helps me improve the website, monitor its performance, and enhance the overall user experience. +2. **Usage Information**: I may review Usage Information to analyze trends, administer the website, track users' movements, and gather anonymous geo-location information for aggregate use. This information helps with website improvements, performance monitoring, and overall user experience enhancements. ## Third-Party Services @@ -38,11 +43,11 @@ Thank you for visiting my website. This Privacy Policy explains how I collect, u 2. **Sentry.io**: We use Sentry.io to help us identify and fix errors and improve the performance of our website. Sentry.io may collect certain technical information, including your IP address and information about your browser and device. The information collected by Sentry.io is stored on servers controlled by Sentry.io and is subject to their privacy policy. To learn more about Sentry.io's data practices, please visit [their website](https://sentry.io/) and review their [privacy policy](https://sentry.io/privacy/). - Sentry's entire collection of legal documents can be [found on their site](https://sentry.io/legal/). +Sentry's entire collection of legal documents can also be [found on their site](https://sentry.io/legal/). ## Data Security -I take reasonable measures to protect the personal information we collect. However, please be aware that no security measures are perfect or impenetrable, and I cannot guarantee the security of your personal information. +I take reasonable measures to protect the personal information collected. However, please be aware that no security measures are perfect or impenetrable, and I cannot guarantee the security of your personal information. ## Disclosure of Information @@ -60,4 +65,4 @@ I reserve the right to update or modify this Privacy Policy at any time. The mos If you have any questions, concerns, or requests regarding this Privacy Policy, please contact me at privacy [at] dgrebb.com. -By using this website, you acknowledge that you have read and understand this Privacy Policy and consent to the collection, use, and disclosure of your information as described herein. \ No newline at end of file +By using this website, you acknowledge that you have read and understand this Privacy Policy and consent to the collection, use, and disclosure of your information as described herein. From c1165773aa3120662b18a96d50816ab3c71fd31a Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 13:09:47 -0400 Subject: [PATCH 33/72] style(front): refactors styles for privacy policy; makes footer link brighter --- front/src/components/Footer.svelte | 4 ++-- front/src/styles/global.css | 7 ++++++- front/src/styles/posts.css | 11 +++++++---- front/src/styles/utilities.css | 11 ++--------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/front/src/components/Footer.svelte b/front/src/components/Footer.svelte index 6d7bdda05..4bd5a09a4 100644 --- a/front/src/components/Footer.svelte +++ b/front/src/components/Footer.svelte @@ -7,8 +7,8 @@
      {#if copyleft}{copyleft}{/if} - {year} - {#if copyright}{copyright}{/if} + {year} AD + | {#if copyright}{copyright}{/if} | Privacy Policy
      diff --git a/front/src/styles/global.css b/front/src/styles/global.css index 76715a089..f0ef38d21 100644 --- a/front/src/styles/global.css +++ b/front/src/styles/global.css @@ -261,6 +261,11 @@ body { @apply mt-auto; @apply text-sm; small { - @apply opacity-20; + color: rgb(var(--subdued-rgb)); + a { + @apply brightness-125; + color: rgb(var(--subdued-rgb)); + border-color: rgb(var(--subdued-rgb)); + } } } diff --git a/front/src/styles/posts.css b/front/src/styles/posts.css index a2e1d178e..55d1b936a 100644 --- a/front/src/styles/posts.css +++ b/front/src/styles/posts.css @@ -27,20 +27,23 @@ @apply mb-4 text-4xl dg--font-psbl; } h3 { - @apply mb-4 text-3xl font-bold; + @apply mb-4 text-3xl dg--font-psb; } h4 { - @apply mb-4 text-2xl font-bold; + @apply mb-4 text-2xl dg--font-psb; } h5 { - @apply mb-4 text-xl font-bold; + @apply mb-4 text-xl dg--font-psb; } h6 { - @apply mb-4 text-lg font-bold; + @apply mb-4 text-lg dg--font-psb; } p { @apply mb-4; } + strong { + @apply dg--font-psb; + } ol, ul { @apply list-decimal; diff --git a/front/src/styles/utilities.css b/front/src/styles/utilities.css index 4fb337c90..2d191ba2b 100644 --- a/front/src/styles/utilities.css +++ b/front/src/styles/utilities.css @@ -1,13 +1,4 @@ @layer utilities { - .dg--font-ps { - font-family: "Public Sans", sans-serif; - } - .dg--font-psb { - font-family: "Public Sans Bold", sans-serif; - } - .dg--font-psbl { - font-family: "Public Sans Black", sans-serif; - } .dg--transition-effect { transition-duration: var(--transform-duration); transition-timing-function: var(--transform-timing-function); @@ -21,6 +12,7 @@ --btn--secondary-rgb: 190, 193, 194; --btn-secondary-highlight-rgb: 92, 92, 92; --highlight-rgb: 175, 83, 7; + --subdued-rgb: 216, 216, 216; --transform-duration: 500ms; --transform-timing-function: ease-in-out; } @@ -31,6 +23,7 @@ --background-end-rgb: 29, 30, 32; --background-pre-rgb: 3, 3, 3; --highlight-rgb: 255, 255, 21; + --subdued-rgb: 71, 72, 73; --btn--secondary-rgb: 54, 54, 56; --btn-secondary-highlight-rgb: 92, 92, 92; --transform-duration: 500ms; From a26192a580536bced4c394c2c6dfe790195c9aee Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 13:10:07 -0400 Subject: [PATCH 34/72] style(front): moves font classes --- front/src/styles/fonts.css | 66 ++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/front/src/styles/fonts.css b/front/src/styles/fonts.css index 7cadec9bb..82895585a 100644 --- a/front/src/styles/fonts.css +++ b/front/src/styles/fonts.css @@ -1,31 +1,43 @@ @font-face { - font-display: swap; - font-family: "Public Sans"; - src: url("/fonts/PublicSans-Regular.woff2") format("woff2"), - url("/fonts/PublicSans-Regular.woff") format("woff"), - url("/fonts/PublicSans-Regular.ttf") format("truetype"), - url("/fonts/PublicSans-Regular.otf") format("opentype"); + font-display: swap; + font-family: "Public Sans"; + src: url("/fonts/PublicSans-Regular.woff2") format("woff2"), + url("/fonts/PublicSans-Regular.woff") format("woff"), + url("/fonts/PublicSans-Regular.ttf") format("truetype"), + url("/fonts/PublicSans-Regular.otf") format("opentype"); +} + +@font-face { + font-display: swap; + font-family: "Public Sans Bold"; + src: url("/fonts/PublicSans-Bold.woff2") format("woff2"), + url("/fonts/PublicSans-Bold.woff") format("woff"), + url("/fonts/PublicSans-Bold.ttf") format("truetype"), + url("/fonts/PublicSans-Bold.otf") format("opentype"); +} + +@font-face { + font-display: swap; + font-family: "Public Sans Black"; + src: url("/fonts/PublicSans-Black.woff2") format("woff2"), + url("/fonts/PublicSans-Black.woff") format("woff"), + url("/fonts/PublicSans-Black.ttf") format("truetype"), + url("/fonts/PublicSans-Black.otf") format("opentype"); +} + +* { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +@layer utilities { + .dg--font-ps { + font-family: "Public Sans", sans-serif; } - - @font-face { - font-display: swap; - font-family: "Public Sans Bold"; - src: url("/fonts/PublicSans-Bold.woff2") format("woff2"), - url("/fonts/PublicSans-Bold.woff") format("woff"), - url("/fonts/PublicSans-Bold.ttf") format("truetype"), - url("/fonts/PublicSans-Bold.otf") format("opentype"); + .dg--font-psb { + font-family: "Public Sans Bold", sans-serif; } - - @font-face { - font-display: swap; - font-family: "Public Sans Black"; - src: url("/fonts/PublicSans-Black.woff2") format("woff2"), - url("/fonts/PublicSans-Black.woff") format("woff"), - url("/fonts/PublicSans-Black.ttf") format("truetype"), - url("/fonts/PublicSans-Black.otf") format("opentype"); + .dg--font-psbl { + font-family: "Public Sans Black", sans-serif; } - - * { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } \ No newline at end of file +} From 429567526ceee629da817fe1496f01ff7031b18a Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 13:32:18 -0400 Subject: [PATCH 35/72] fix(front): refactor beforeSend scrub conditionals --- front/src/hooks.client.js | 6 ++++-- front/src/hooks.server.js | 7 ++++--- front/static/404.html | 10 ++++++---- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/front/src/hooks.client.js b/front/src/hooks.client.js index f5ff743e3..98b245e07 100644 --- a/front/src/hooks.client.js +++ b/front/src/hooks.client.js @@ -16,8 +16,10 @@ Sentry.init({ replaysOnErrorSampleRate: ( PUBLIC_ENV === "production" ? 0.1 : 1.0 ), beforeSend(event) { if (event.user) { - delete event.user.ip - delete event.server_name + delete event.user.ip; + } + if (event.server_name) { + delete event.server_name; } } }); diff --git a/front/src/hooks.server.js b/front/src/hooks.server.js index 09daaf160..896e87881 100644 --- a/front/src/hooks.server.js +++ b/front/src/hooks.server.js @@ -10,10 +10,11 @@ Sentry.init({ integrations: [], beforeSend(event) { if (event.user) { - delete event.user.ip - delete event.server_name + delete event.user.ip; + } + if (event.server_name) { + delete event.server_name; } - } }); export async function handleError({ error, event }) { diff --git a/front/static/404.html b/front/static/404.html index 29b1a9e1a..b837f3804 100644 --- a/front/static/404.html +++ b/front/static/404.html @@ -106,11 +106,13 @@

      404

      environment, beforeSend(event) { if (event.user) { - delete event.user.ip - delete event.server_name + delete event.user.ip; } - } - }), + if (event.server_name) { + delete event.server_name; + } + }, + }); Sentry.captureMessage("Page Not Found", { page: document.location.pathname, }); From c5f4cac59855abc9d4fdd9a449fe0cdb1b9119bf Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 14:07:30 -0400 Subject: [PATCH 36/72] fix(front): fixes closing Sentry.init() bracket --- front/src/hooks.server.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/front/src/hooks.server.js b/front/src/hooks.server.js index 896e87881..54dfdb76a 100644 --- a/front/src/hooks.server.js +++ b/front/src/hooks.server.js @@ -15,6 +15,7 @@ Sentry.init({ if (event.server_name) { delete event.server_name; } + }, }); export async function handleError({ error, event }) { @@ -27,4 +28,4 @@ export async function handleError({ error, event }) { message: "Server error!", errorId, }; -} \ No newline at end of file +} From 10b9da1614144d71f35caf8c5f6f769583c3ac62 Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 17:30:08 -0400 Subject: [PATCH 37/72] style(front): changes linkedin svg --- front/src/components/Links.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/src/components/Links.svelte b/front/src/components/Links.svelte index f6dfc346b..d3bb5cfdc 100644 --- a/front/src/components/Links.svelte +++ b/front/src/components/Links.svelte @@ -5,7 +5,7 @@ import IconInstagram from "~icons/mdi/instagram"; import IconSoundCloud from "~icons/ph/soundcloud-logo-bold"; import IconStackOverflow from "~icons/mdi/stackoverflow"; - import IconLinkedIn from "~icons/entypo-social/linkedin-with-circle"; + import IconLinkedIn from "~icons/entypo-social/linkedin"; import IconTwitter from "~icons/mdi/twitter"; import IconMastodon from "~icons/mdi/mastodon"; import IconFlickr from "~icons/icomoon-free/flickr2"; From 56e6cc7d2324a77d13d5d88a76d232a24573365c Mon Sep 17 00:00:00 2001 From: Dan Grebb Date: Wed, 21 Jun 2023 17:40:40 -0400 Subject: [PATCH 38/72] feat(front): refactors tailwind classes with @apply in css removes classes from components --- front/src/components/Header.svelte | 4 +- front/src/components/Links.svelte | 2 +- front/src/components/NavBar.svelte | 8 +- front/src/components/NavHome.svelte | 4 +- front/src/routes/+layout.svelte | 2 +- front/src/routes/privacy/+page.svelte | 2 +- front/src/styles/components.css | 10 +- front/src/styles/fonts.css | 10 +- front/src/styles/global.css | 181 ++++++++++++++++---------- front/src/styles/not-found.css | 16 +-- front/src/styles/posts.css | 60 +++++++-- front/src/styles/utilities.css | 8 +- 12 files changed, 192 insertions(+), 115 deletions(-) diff --git a/front/src/components/Header.svelte b/front/src/components/Header.svelte index 5c009dbe0..0f5539733 100644 --- a/front/src/components/Header.svelte +++ b/front/src/components/Header.svelte @@ -5,9 +5,9 @@ export let navItems; -