diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 39f5f2b..31caad6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: commits-linting, forbidden-comments-linting, ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Check jobs status run: if ${{ contains(needs.*.result, 'failure') }}; then exit 1; fi @@ -28,10 +28,10 @@ jobs: run: echo 'All dependencies completed' app-code-linting: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: # Make sure the actual branch is checked out when running on pull requests ref: ${{ github.head_ref }} @@ -40,9 +40,9 @@ jobs: with: gpg-private-key: ${{ secrets.GIT_SECRET_PRIVATE_KEY }} - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: '20.9.0' + node-version: '22.15.0' cache: 'npm' cache-dependency-path: package-lock.json - name: Install NPM dependencies @@ -51,20 +51,20 @@ jobs: run: npm run build && npm run lint app-tests-unit-node: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: index: ['1'] steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: # Make sure the actual branch is checked out when running on pull requests ref: ${{ github.head_ref }} - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: '20.9.0' + node-version: '22.15.0' cache: 'npm' cache-dependency-path: package-lock.json - name: Install NPM dependencies @@ -74,20 +74,20 @@ jobs: npm run test:unit:node -- --shard=${{matrix.index}}/1 app-tests-unit-dom: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: index: ['1'] steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: # Make sure the actual branch is checked out when running on pull requests ref: ${{ github.head_ref }} - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: '20.9.0' + node-version: '22.15.0' cache: 'npm' cache-dependency-path: package-lock.json - name: Install NPM dependencies @@ -97,16 +97,16 @@ jobs: npm run test:unit:dom -- --shard=${{matrix.index}}/1 app-tests-playwright-e2e: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: '20.9.0' + node-version: '22.15.0' cache: 'npm' cache-dependency-path: package-lock.json - name: Install NPM dependencies @@ -122,7 +122,7 @@ jobs: run: ./scripts/stack/local/all/e2e/headless.js - name: Upload data for failed tests if: failure() && steps.run-e2e-tests.outcome == 'failure' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-failed-tests-data path: | @@ -131,16 +131,16 @@ jobs: retention-days: 3 app-tests-playwright-api: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: '20.9.0' + node-version: '22.15.0' cache: 'npm' cache-dependency-path: package-lock.json - name: Install NPM dependencies @@ -156,7 +156,7 @@ jobs: run: ./scripts/stack/local/all/api/headless.js - name: Upload data for failed tests if: failure() && steps.run-api-tests.outcome == 'failure' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: api-failed-tests-data path: | @@ -165,10 +165,10 @@ jobs: retention-days: 3 commits-linting: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} - name: 'Validate PR commits messages' @@ -182,10 +182,10 @@ jobs: echo "Commits messages are valid" forbidden-comments-linting: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} - name: Setup todos CLI command diff --git a/.tool-versions b/.tool-versions index c2ca3d3..36e55c3 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -nodejs 20.9.0 +nodejs 22.15.0 diff --git a/docker-compose.local.infra-only.yml b/docker-compose.local.infra-only.yml index 26a8cec..6c45cec 100644 --- a/docker-compose.local.infra-only.yml +++ b/docker-compose.local.infra-only.yml @@ -2,7 +2,7 @@ services: postgres: container_name: ${PROJECT_NAME:?err}--postgres hostname: ${PROJECT_NAME:?err}--postgres - image: postgres:15.3-alpine3.18 + image: postgres:16.3-alpine3.18 # NOTE: To avoid the error "FATAL: role "root" does not exist docker postgres" user: postgres ports: @@ -30,7 +30,7 @@ services: # http://localhost:8080/?pgsql=${PROJECT_NAME}--postgres%3A5434&username=postgres&db=postgres&ns=public&select=keys adminer: container_name: ${PROJECT_NAME:?err}--adminer - image: adminer:4.8.1-standalone + image: adminer:5.2.1-standalone ports: - host_ip: 0.0.0.0 published: 8080 # host diff --git a/docker/app/Dockerfile b/docker/app/Dockerfile index 4d506e1..d9c9b41 100644 --- a/docker/app/Dockerfile +++ b/docker/app/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM node:20.9.0-alpine3.18 as base-node-version +FROM node:22.2.0-alpine3.18 as base-node-version FROM base-node-version as install diff --git a/docker/playwright/Dockerfile b/docker/playwright/Dockerfile index 6b260df..1f4818a 100644 --- a/docker/playwright/Dockerfile +++ b/docker/playwright/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/playwright:v1.39.0-jammy as common +FROM mcr.microsoft.com/playwright:v1.52.0-jammy as common WORKDIR /playwright diff --git a/package.json b/package.json index 16f501e..a17cef8 100644 --- a/package.json +++ b/package.json @@ -55,90 +55,90 @@ "packages:audit": "npm audit" }, "dependencies": { - "@floating-ui/dom": "1.5.3", - "@lucia-auth/adapter-prisma": "3.0.2", - "@lucia-auth/oauth": "3.4.0", - "@prisma/client": "5.5.2", - "@sentry/sveltekit": "7.99.0", - "callsites": "4.1.0", - "dayjs": "1.11.10", + "@floating-ui/dom": "1.7.0", + "@lucia-auth/adapter-prisma": "4.0.1", + "@lucia-auth/oauth": "3.5.3", + "@prisma/client": "6.7.0", + "@sentry/sveltekit": "9.17.0", + "callsites": "4.2.0", + "dayjs": "1.11.13", "lodash": "4.17.21", - "lucia": "2.7.3", - "posthog-js": "1.102.0", - "posthog-node": "3.6.1", - "roarr": "7.21.0", - "serialize-error": "11.0.3", - "sveltekit-flash-message": "2.3.0", - "sveltekit-superforms": "1.12.0", - "zod": "3.22.4" + "lucia": "3.2.2", + "posthog-js": "1.240.6", + "posthog-node": "4.17.1", + "roarr": "7.21.1", + "serialize-error": "12.0.0", + "sveltekit-flash-message": "2.4.6", + "sveltekit-superforms": "2.25.0", + "zod": "3.24.4" }, "devDependencies": { - "@faker-js/faker": "8.2.0", - "@iconify/json": "2.2.137", - "@northflank/cli": "0.9.12", - "@playwright/test": "1.39.0", + "@faker-js/faker": "9.7.0", + "@iconify/json": "2.2.337", + "@northflank/cli": "0.9.27", + "@playwright/test": "1.52.0", "@roarr/cli": "5.12.4", - "@skeletonlabs/skeleton": "2.4.0", - "@skeletonlabs/tw-plugin": "0.2.3", - "@sveltejs/adapter-auto": "2.1.1", - "@sveltejs/adapter-node": "1.3.1", - "@sveltejs/kit": "1.27.3", - "@tailwindcss/forms": "0.5.6", - "@tailwindcss/typography": "0.5.10", - "@testing-library/dom": "9.3.3", - "@testing-library/jest-dom": "6.1.5", - "@testing-library/svelte": "4.0.5", - "@testing-library/user-event": "14.5.1", - "@types/estree": "1.0.4", - "@types/jsdom": "21.1.6", - "@types/lodash": "4.14.200", - "@types/node": "20.8.10", - "@types/shelljs": "0.8.14", - "@typescript-eslint/eslint-plugin": "6.9.1", - "@typescript-eslint/parser": "6.9.1", - "@vitest/browser": "1.0.4", - "@vitest/coverage-v8": "1.0.4", - "@vitest/ui": "1.0.4", - "autoprefixer": "10.4.16", - "commander": "11.1.0", - "dotenv": "16.3.1", - "eslint": "8.53.0", - "eslint-config-prettier": "9.0.0", - "eslint-plugin-jest-dom": "5.1.0", - "eslint-plugin-playwright": "1.5.4", - "eslint-plugin-simple-import-sort": "12.0.0", - "eslint-plugin-svelte": "2.34.1", - "eslint-plugin-testing-library": "6.1.0", - "ignore": "5.3.0", - "jsdom": "23.0.1", - "npm-check-updates": "16.14.6", - "playwright": "1.39.0", - "postcss": "8.4.31", - "postcss-html": "1.5.0", - "postcss-import": "15.1.0", - "postcss-load-config": "4.0.1", - "postcss-nesting": "12.0.1", - "postcss-preset-env": "9.3.0", - "prettier": "3.0.3", - "prettier-plugin-svelte": "3.0.3", - "prettier-plugin-tailwindcss": "0.5.6", + "@skeletonlabs/skeleton": "3.1.3", + "@skeletonlabs/tw-plugin": "0.4.1", + "@sveltejs/adapter-auto": "6.0.0", + "@sveltejs/adapter-node": "5.2.12", + "@sveltejs/kit": "2.20.8", + "@tailwindcss/forms": "0.5.10", + "@tailwindcss/typography": "0.5.16", + "@testing-library/dom": "10.4.0", + "@testing-library/jest-dom": "6.6.3", + "@testing-library/svelte": "5.2.7", + "@testing-library/user-event": "14.6.1", + "@types/estree": "1.0.7", + "@types/jsdom": "21.1.7", + "@types/lodash": "4.17.16", + "@types/node": "22.15.17", + "@types/shelljs": "0.8.16", + "@typescript-eslint/eslint-plugin": "8.32.0", + "@typescript-eslint/parser": "8.32.0", + "@vitest/browser": "3.1.3", + "@vitest/coverage-v8": "3.1.3", + "@vitest/ui": "3.1.3", + "autoprefixer": "10.4.21", + "commander": "13.1.0", + "dotenv": "16.5.0", + "eslint": "9.26.0", + "eslint-config-prettier": "10.1.5", + "eslint-plugin-jest-dom": "5.5.0", + "eslint-plugin-playwright": "2.2.0", + "eslint-plugin-simple-import-sort": "12.1.1", + "eslint-plugin-svelte": "3.5.1", + "eslint-plugin-testing-library": "7.1.1", + "ignore": "7.0.4", + "jsdom": "26.1.0", + "npm-check-updates": "18.0.1", + "playwright": "1.52.0", + "postcss": "8.5.3", + "postcss-html": "1.8.0", + "postcss-import": "16.1.0", + "postcss-load-config": "6.0.1", + "postcss-nesting": "13.0.1", + "postcss-preset-env": "10.1.6", + "prettier": "3.5.3", + "prettier-plugin-svelte": "3.3.3", + "prettier-plugin-tailwindcss": "0.6.11", "pretty-format": "29.7.0", - "prisma": "5.5.2", - "rollup-plugin-visualizer": "5.9.2", - "shelljs": "0.8.5", - "stylelint": "15.11.0", - "stylelint-config-recommended": "13.0.0", - "stylelint-config-standard": "34.0.0", - "svelte": "4.2.2", - "svelte-check": "3.5.2", - "svelte-portal": "2.2.0", - "tailwindcss": "3.3.5", - "tslib": "2.6.2", - "tsx": "3.14.0", - "typescript": "5.2.2", - "unplugin-icons": "0.17.3", - "vite": "4.5.0", - "vite-plugin-tailwind-purgecss": "0.1.3", - "vitest": "1.0.4" + "prisma": "6.7.0", + "rollup-plugin-visualizer": "5.14.0", + "shelljs": "0.10.0", + "stylelint": "16.19.1", + "stylelint-config-recommended": "16.0.0", + "stylelint-config-standard": "38.0.0", + "svelte": "5.28.2", + "svelte-check": "4.1.7", + "svelte-portal": "2.2.1", + "tailwindcss": "4.1.6", + "tslib": "2.8.1", + "tsx": "4.19.4", + "typescript": "5.8.3", + "unplugin-icons": "22.1.0", + "vite": "6.3.5", + "vite-plugin-tailwind-purgecss": "0.3.5", + "vitest": "3.1.3" } }