dependencies update & cleanup
This commit is contained in:
parent
f4d0adac3c
commit
377b72111a
8 changed files with 1576 additions and 2268 deletions
223
.gitlab-ci.yml
223
.gitlab-ci.yml
|
|
@ -1,223 +0,0 @@
|
||||||
# This file is a template, and might need editing before it works on your project.
|
|
||||||
# Official framework image. Look for the different tagged releases at:
|
|
||||||
# https://hub.docker.com/r/library/node/tags/
|
|
||||||
image: node:20
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- check-changelog
|
|
||||||
- lint
|
|
||||||
- build
|
|
||||||
- test
|
|
||||||
- deploy
|
|
||||||
|
|
||||||
# https://git.pleroma.social/help/ci/yaml/workflow.md#switch-between-branch-pipelines-and-merge-request-pipelines
|
|
||||||
workflow:
|
|
||||||
rules:
|
|
||||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
||||||
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
|
|
||||||
when: never
|
|
||||||
- if: $CI_COMMIT_BRANCH
|
|
||||||
|
|
||||||
check-changelog:
|
|
||||||
stage: check-changelog
|
|
||||||
image: alpine
|
|
||||||
rules:
|
|
||||||
- if: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == 'pleroma/pleroma-fe' && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^renovate/
|
|
||||||
when: never
|
|
||||||
- if: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == 'pleroma/pleroma-fe' && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'weblate'
|
|
||||||
when: never
|
|
||||||
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"
|
|
||||||
before_script: ''
|
|
||||||
after_script: ''
|
|
||||||
cache: {}
|
|
||||||
script:
|
|
||||||
- apk add git
|
|
||||||
- sh ./tools/check-changelog
|
|
||||||
|
|
||||||
lint-eslint:
|
|
||||||
stage: lint
|
|
||||||
script:
|
|
||||||
- yarn
|
|
||||||
- yarn ci-eslint
|
|
||||||
|
|
||||||
lint-biome:
|
|
||||||
stage: lint
|
|
||||||
script:
|
|
||||||
- yarn
|
|
||||||
- yarn ci-biome
|
|
||||||
|
|
||||||
lint-stylelint:
|
|
||||||
stage: lint
|
|
||||||
script:
|
|
||||||
- yarn
|
|
||||||
- yarn ci-stylelint
|
|
||||||
|
|
||||||
test:
|
|
||||||
stage: test
|
|
||||||
tags:
|
|
||||||
- amd64
|
|
||||||
- himem
|
|
||||||
variables:
|
|
||||||
APT_CACHE_DIR: apt-cache
|
|
||||||
script:
|
|
||||||
- mkdir -pv $APT_CACHE_DIR && apt-get -qq update
|
|
||||||
- yarn
|
|
||||||
- yarn playwright install firefox
|
|
||||||
- yarn playwright install-deps
|
|
||||||
- yarn unit-ci
|
|
||||||
artifacts:
|
|
||||||
# When the test fails, upload screenshots for better context on why it fails
|
|
||||||
paths:
|
|
||||||
- test/**/__screenshots__
|
|
||||||
when: on_failure
|
|
||||||
|
|
||||||
e2e-pleroma:
|
|
||||||
stage: test
|
|
||||||
image: mcr.microsoft.com/playwright:v1.61.0-jammy
|
|
||||||
services:
|
|
||||||
- name: postgres:15-alpine
|
|
||||||
alias: db
|
|
||||||
- name: $PLEROMA_IMAGE
|
|
||||||
alias: pleroma
|
|
||||||
entrypoint: ["/bin/ash", "-c"]
|
|
||||||
command:
|
|
||||||
- |
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
SEED_SENTINEL_PATH=/var/lib/pleroma/.e2e_seeded
|
|
||||||
CONFIG_OVERRIDE_PATH=/var/lib/pleroma/config.exs
|
|
||||||
|
|
||||||
echo '-- Waiting for database...'
|
|
||||||
while ! pg_isready -U ${DB_USER:-pleroma} -d postgres://${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-pleroma} -t 1; do
|
|
||||||
sleep 1s
|
|
||||||
done
|
|
||||||
|
|
||||||
echo '-- Writing E2E config overrides...'
|
|
||||||
cat > $CONFIG_OVERRIDE_PATH <<EOF
|
|
||||||
import Config
|
|
||||||
|
|
||||||
config :pleroma, Pleroma.Captcha,
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
config :pleroma, :instance,
|
|
||||||
registrations_open: true,
|
|
||||||
account_activation_required: false,
|
|
||||||
approval_required: false
|
|
||||||
EOF
|
|
||||||
|
|
||||||
echo '-- Running migrations...'
|
|
||||||
/opt/pleroma/bin/pleroma_ctl migrate
|
|
||||||
|
|
||||||
echo '-- Starting!'
|
|
||||||
/opt/pleroma/bin/pleroma start &
|
|
||||||
PLEROMA_PID=$!
|
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
if kill -0 $PLEROMA_PID 2>/dev/null; then
|
|
||||||
kill -TERM $PLEROMA_PID
|
|
||||||
wait $PLEROMA_PID || true
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
trap cleanup INT TERM
|
|
||||||
|
|
||||||
echo '-- Waiting for API...'
|
|
||||||
api_ok=false
|
|
||||||
for _i in $(seq 1 120); do
|
|
||||||
if wget -qO- http://127.0.0.1:4000/api/v1/instance >/dev/null 2>&1; then
|
|
||||||
api_ok=true
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1s
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ $api_ok != true ]; then
|
|
||||||
echo 'Timed out waiting for Pleroma API to become available'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f $SEED_SENTINEL_PATH ]; then
|
|
||||||
if [ -n ${E2E_ADMIN_USERNAME:-} ] && [ -n ${E2E_ADMIN_PASSWORD:-} ] && [ -n ${E2E_ADMIN_EMAIL:-} ]; then
|
|
||||||
echo '-- Seeding admin user' $E2E_ADMIN_USERNAME '...'
|
|
||||||
if ! /opt/pleroma/bin/pleroma_ctl user new $E2E_ADMIN_USERNAME $E2E_ADMIN_EMAIL --admin --password $E2E_ADMIN_PASSWORD -y; then
|
|
||||||
echo '-- User already exists or creation failed, ensuring admin + confirmed...'
|
|
||||||
/opt/pleroma/bin/pleroma_ctl user set $E2E_ADMIN_USERNAME --admin --confirmed
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo '-- Skipping admin seeding (missing E2E_ADMIN_* env)'
|
|
||||||
fi
|
|
||||||
|
|
||||||
touch $SEED_SENTINEL_PATH
|
|
||||||
fi
|
|
||||||
|
|
||||||
wait $PLEROMA_PID
|
|
||||||
tags:
|
|
||||||
- amd64
|
|
||||||
- himem
|
|
||||||
variables:
|
|
||||||
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1"
|
|
||||||
FF_NETWORK_PER_BUILD: "true"
|
|
||||||
PLEROMA_IMAGE: git.pleroma.social/pleroma/pleroma:stable
|
|
||||||
POSTGRES_USER: pleroma
|
|
||||||
POSTGRES_PASSWORD: pleroma
|
|
||||||
POSTGRES_DB: pleroma
|
|
||||||
DB_USER: pleroma
|
|
||||||
DB_PASS: pleroma
|
|
||||||
DB_NAME: pleroma
|
|
||||||
DB_HOST: db
|
|
||||||
DB_PORT: 5432
|
|
||||||
DOMAIN: localhost
|
|
||||||
INSTANCE_NAME: Pleroma E2E
|
|
||||||
E2E_ADMIN_USERNAME: admin
|
|
||||||
E2E_ADMIN_PASSWORD: adminadmin
|
|
||||||
E2E_ADMIN_EMAIL: admin@example.com
|
|
||||||
ADMIN_EMAIL: $E2E_ADMIN_EMAIL
|
|
||||||
NOTIFY_EMAIL: $E2E_ADMIN_EMAIL
|
|
||||||
VITE_PROXY_TARGET: http://pleroma:4000
|
|
||||||
VITE_PROXY_ORIGIN: http://localhost:4000
|
|
||||||
E2E_BASE_URL: http://localhost:8099
|
|
||||||
script:
|
|
||||||
- npm install -g yarn@1.22.22
|
|
||||||
- yarn --frozen-lockfile
|
|
||||||
- |
|
|
||||||
echo "-- Waiting for Pleroma API..."
|
|
||||||
api_ok="false"
|
|
||||||
for _i in $(seq 1 120); do
|
|
||||||
if wget -qO- http://pleroma:4000/api/v1/instance >/dev/null 2>&1; then
|
|
||||||
api_ok="true"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1s
|
|
||||||
done
|
|
||||||
if [ "$api_ok" != "true" ]; then
|
|
||||||
echo "Timed out waiting for Pleroma API to become available"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
- yarn e2e:pw
|
|
||||||
artifacts:
|
|
||||||
when: on_failure
|
|
||||||
paths:
|
|
||||||
- test/e2e-playwright/test-results
|
|
||||||
- test/e2e-playwright/playwright-report
|
|
||||||
|
|
||||||
build:
|
|
||||||
stage: build
|
|
||||||
tags:
|
|
||||||
- amd64
|
|
||||||
- himem
|
|
||||||
script:
|
|
||||||
- yarn
|
|
||||||
- yarn build
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- dist/
|
|
||||||
|
|
||||||
docs-deploy:
|
|
||||||
stage: deploy
|
|
||||||
image: alpine:latest
|
|
||||||
only:
|
|
||||||
- develop@pleroma/pleroma-fe
|
|
||||||
before_script:
|
|
||||||
- apk add curl
|
|
||||||
script:
|
|
||||||
- curl -X POST -F"token=$DOCS_PIPELINE_TRIGGER" -F'ref=master' https://git.pleroma.social/api/v4/projects/673/trigger/pipeline
|
|
||||||
|
|
@ -14,7 +14,7 @@ labels:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
build:
|
build:
|
||||||
image: docker.io/node:20-alpine
|
image: docker.io/node:26-alpine
|
||||||
commands:
|
commands:
|
||||||
- apk add --no-cache zip git
|
- apk add --no-cache zip git
|
||||||
- yarn --frozen-lockfile
|
- yarn --frozen-lockfile
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ labels:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
build:
|
build:
|
||||||
image: docker.io/node:20-alpine
|
image: docker.io/node:26-alpine
|
||||||
commands:
|
commands:
|
||||||
- yarn --frozen-lockfile
|
- yarn --frozen-lockfile
|
||||||
- yarn build
|
- yarn build
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ when:
|
||||||
steps:
|
steps:
|
||||||
install-depends:
|
install-depends:
|
||||||
image: &node-image
|
image: &node-image
|
||||||
docker.io/node:20-alpine
|
docker.io/node:26-alpine
|
||||||
commands:
|
commands:
|
||||||
- yarn --frozen-lockfile
|
- yarn --frozen-lockfile
|
||||||
|
|
||||||
|
|
|
||||||
51
package.json
51
package.json
|
|
@ -21,7 +21,7 @@
|
||||||
"lint-fix": "yarn exec eslint -- --fix; yarn exec stylelint '**/*.scss' '**/*.vue' --fix; biome check --write"
|
"lint-fix": "yarn exec eslint -- --fix; yarn exec stylelint '**/*.scss' '**/*.vue' --fix; biome check --write"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.4",
|
"@babel/runtime": "^8.0.0",
|
||||||
"@chenfengyuan/vue-qrcode": "2.0.0",
|
"@chenfengyuan/vue-qrcode": "2.0.0",
|
||||||
"@fortawesome/fontawesome-svg-core": "7.1.0",
|
"@fortawesome/fontawesome-svg-core": "7.1.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "7.1.0",
|
"@fortawesome/free-regular-svg-icons": "7.1.0",
|
||||||
|
|
@ -41,69 +41,55 @@
|
||||||
"hash-sum": "^2.0.0",
|
"hash-sum": "^2.0.0",
|
||||||
"js-cookie": "3.0.5",
|
"js-cookie": "3.0.5",
|
||||||
"localforage": "1.10.0",
|
"localforage": "1.10.0",
|
||||||
|
"lodash-es": "4.17.21",
|
||||||
"parse-link-header": "2.0.0",
|
"parse-link-header": "2.0.0",
|
||||||
"phoenix": "1.8.1",
|
"phoenix": "1.8.1",
|
||||||
"pinia": "^3.0.4",
|
"pinia": "4.0.3",
|
||||||
"punycode.js": "2.3.1",
|
"punycode.js": "2.3.1",
|
||||||
"qrcode": "1.5.4",
|
"qrcode": "1.5.4",
|
||||||
"querystring-es3": "0.2.1",
|
"querystring-es3": "0.2.1",
|
||||||
"utf8": "3.0.0",
|
"utf8": "3.0.0",
|
||||||
"uuid": "11.1.0",
|
"uuid": "11.1.0",
|
||||||
"vue": "3.5.22",
|
"vue": "3.5.42",
|
||||||
"vue-i18n": "11",
|
"vue-i18n": "11.4.0",
|
||||||
"vue-router": "4.6.4",
|
"vue-router": "5.3.1",
|
||||||
"vue-virtual-scroller": "^2.0.0-beta.7"
|
"vue-virtual-scroller": "^3.0.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.28.5",
|
"@babel/core": "^8.0.0",
|
||||||
"@babel/eslint-parser": "7.28.5",
|
"@babel/eslint-parser": "^8.0.0",
|
||||||
"@babel/plugin-transform-runtime": "7.28.5",
|
"@babel/plugin-transform-runtime": "^8.0.0",
|
||||||
"@babel/preset-env": "7.28.5",
|
"@babel/preset-env": "^8.0.0",
|
||||||
"@babel/register": "7.28.3",
|
"@babel/register": "^8.0.0",
|
||||||
"@biomejs/biome": "2.3.11",
|
"@biomejs/biome": "2.5.11",
|
||||||
"@pinia/testing": "1.0.3",
|
"@pinia/testing": "1.0.3",
|
||||||
"@ungap/event-target": "0.2.4",
|
"@ungap/event-target": "0.2.4",
|
||||||
"@vitejs/devtools": "^0.3.1",
|
"@vitejs/devtools": "^0.3.1",
|
||||||
"@vitejs/plugin-vue": "^6.0.7",
|
"@vitejs/plugin-vue": "^6.0.8",
|
||||||
"@vitejs/plugin-vue-jsx": "^5.1.5",
|
"@vitejs/plugin-vue-jsx": "^5.1.5",
|
||||||
"@vitest/browser": "^4.1.11",
|
"@vitest/browser": "^4.1.11",
|
||||||
"@vitest/browser-playwright": "^4.1.11",
|
"@vitest/browser-playwright": "^4.1.11",
|
||||||
"@vitest/coverage-v8": "^4.1.11",
|
"@vitest/coverage-v8": "^4.1.11",
|
||||||
"@vitest/ui": "^4.1.11",
|
"@vitest/ui": "^4.1.11",
|
||||||
"@vue/babel-helper-vue-jsx-merge-props": "1.4.0",
|
"@vue/babel-plugin-jsx": "3.0.0",
|
||||||
"@vue/babel-plugin-jsx": "1.5.0",
|
|
||||||
"@vue/compiler-sfc": "3.5.22",
|
"@vue/compiler-sfc": "3.5.22",
|
||||||
"@vue/test-utils": "2.4.6",
|
"@vue/devtools-api": "^8.1.5",
|
||||||
|
"@vue/test-utils": "2.5.0",
|
||||||
"autoprefixer": "10.4.21",
|
"autoprefixer": "10.4.21",
|
||||||
"chai": "5.3.3",
|
|
||||||
"chalk": "5.6.2",
|
"chalk": "5.6.2",
|
||||||
"globals": "^16.0.0",
|
|
||||||
"chromedriver": "135.0.4",
|
|
||||||
"connect-history-api-fallback": "2.0.0",
|
|
||||||
"cross-spawn": "7.0.6",
|
"cross-spawn": "7.0.6",
|
||||||
"custom-event-polyfill": "1.0.7",
|
|
||||||
"eslint": "9.39.2",
|
"eslint": "9.39.2",
|
||||||
"eslint-plugin-vue": "10.6.2",
|
"eslint-plugin-vue": "10.6.2",
|
||||||
"eventsource-polyfill": "0.9.6",
|
|
||||||
"express": "5.1.0",
|
|
||||||
"function-bind": "1.1.2",
|
|
||||||
"http-proxy-middleware": "3.0.5",
|
|
||||||
"iso-639-1": "3.1.5",
|
"iso-639-1": "3.1.5",
|
||||||
"lodash-es": "4.17.21",
|
|
||||||
"msw": "2.14.6",
|
"msw": "2.14.6",
|
||||||
"nightwatch": "3.12.2",
|
"nightwatch": "3.12.2",
|
||||||
"oxc": "^1.0.1",
|
|
||||||
"playwright": "1.61.0",
|
"playwright": "1.61.0",
|
||||||
"postcss": "8.5.6",
|
"postcss": "8.5.6",
|
||||||
"postcss-html": "^1.5.0",
|
"postcss-html": "^1.5.0",
|
||||||
"postcss-scss": "^4.0.6",
|
"postcss-scss": "^4.0.6",
|
||||||
"sass-embedded": "^1.100.0",
|
"sass-embedded": "^1.100.0",
|
||||||
"selenium-server": "3.141.59",
|
"selenium-server": "3.141.59",
|
||||||
"semver": "7.7.3",
|
|
||||||
"serve-static": "2.2.0",
|
"serve-static": "2.2.0",
|
||||||
"shelljs": "0.10.0",
|
|
||||||
"sinon": "20.0.0",
|
|
||||||
"sinon-chai": "4.0.1",
|
|
||||||
"stylelint": "16.25.0",
|
"stylelint": "16.25.0",
|
||||||
"stylelint-config-html": "^1.1.0",
|
"stylelint-config-html": "^1.1.0",
|
||||||
"stylelint-config-recommended": "^16.0.0",
|
"stylelint-config-recommended": "^16.0.0",
|
||||||
|
|
@ -113,12 +99,13 @@
|
||||||
"vite": "^8.0.0",
|
"vite": "^8.0.0",
|
||||||
"vite-plugin-eslint2": "^5.1.0",
|
"vite-plugin-eslint2": "^5.1.0",
|
||||||
"vite-plugin-stylelint": "^6.1.0",
|
"vite-plugin-stylelint": "^6.1.0",
|
||||||
|
"vite-plugin-vue-devtools": "^8.2.1",
|
||||||
"vitest": "^4.1.11",
|
"vitest": "^4.1.11",
|
||||||
"vue-eslint-parser": "10.2.0"
|
"vue-eslint-parser": "10.2.0"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 16.0.0"
|
"node": ">= 26.0.0"
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
import { createPinia } from 'pinia'
|
import { createPinia } from 'pinia'
|
||||||
|
|
||||||
import 'custom-event-polyfill'
|
|
||||||
import './lib/event_target_polyfill.js'
|
import './lib/event_target_polyfill.js'
|
||||||
|
|
||||||
// Polyfill for Array.prototype.toSorted (ES2023)
|
// Polyfill for Array.prototype.toSorted (ES2023)
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import { dirname, resolve } from 'node:path'
|
||||||
import { fileURLToPath } from 'node:url'
|
import { fileURLToPath } from 'node:url'
|
||||||
import vue from '@vitejs/plugin-vue'
|
import vue from '@vitejs/plugin-vue'
|
||||||
import vueJsx from '@vitejs/plugin-vue-jsx'
|
import vueJsx from '@vitejs/plugin-vue-jsx'
|
||||||
|
import vueDevTools from 'vite-plugin-vue-devtools'
|
||||||
import { playwright } from '@vitest/browser-playwright'
|
import { playwright } from '@vitest/browser-playwright'
|
||||||
import { defineConfig } from 'vite'
|
import { defineConfig } from 'vite'
|
||||||
import eslint from 'vite-plugin-eslint2'
|
import eslint from 'vite-plugin-eslint2'
|
||||||
|
|
@ -142,6 +143,7 @@ export default defineConfig(async ({ mode, command }) => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
vueDevTools(),
|
||||||
vueJsx(),
|
vueJsx(),
|
||||||
buildSwPlugin({ swSrc, swDest }),
|
buildSwPlugin({ swSrc, swDest }),
|
||||||
swMessagesPlugin(),
|
swMessagesPlugin(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue