mirror of
https://github.com/apricote/Listory.git
synced 2026-01-13 21:21:02 +00:00
Compare commits
No commits in common. "main" and "v1.30.0" have entirely different histories.
13 changed files with 22352 additions and 7951 deletions
4
.github/workflows/ci.yaml
vendored
4
.github/workflows/ci.yaml
vendored
|
|
@ -12,7 +12,7 @@ jobs:
|
|||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ jobs:
|
|||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
|
|
|
|||
2
.github/workflows/release.yaml
vendored
2
.github/workflows/release.yaml
vendored
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
version: "v0.11.2"
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
|
|
|
|||
14
CHANGELOG.md
14
CHANGELOG.md
|
|
@ -1,17 +1,3 @@
|
|||
# [1.31.0](https://github.com/apricote/Listory/compare/v1.30.1...v1.31.0) (2023-10-15)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **frontend:** hide revoked api tokens ([#307](https://github.com/apricote/Listory/issues/307)) ([4cef4f7](https://github.com/apricote/Listory/commit/4cef4f75ace6a38ba19c1d2f93d81389ec2b7cb8))
|
||||
|
||||
## [1.30.1](https://github.com/apricote/Listory/compare/v1.30.0...v1.30.1) (2023-10-08)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* no listens are being crawled ([#306](https://github.com/apricote/Listory/issues/306)) ([9af3115](https://github.com/apricote/Listory/commit/9af3115cab19cc4ac4a6cd0fb680371154069aa2))
|
||||
|
||||
# [1.30.0](https://github.com/apricote/Listory/compare/v1.29.0...v1.30.0) (2023-10-01)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# syntax=docker/dockerfile:1.12
|
||||
# syntax=docker/dockerfile:1.5
|
||||
|
||||
##################
|
||||
## common
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ type: application
|
|||
|
||||
# This is the chart version. This version number should be incremented each time you make changes
|
||||
# to the chart and its templates, including the app version.
|
||||
version: 1.31.0
|
||||
version: 1.30.0
|
||||
|
||||
# This is the version number of the application being deployed. This version number should be
|
||||
# incremented each time you make changes to the application.
|
||||
appVersion: 1.31.0
|
||||
appVersion: 1.30.0
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ services:
|
|||
#####
|
||||
|
||||
db:
|
||||
image: postgres:16.6
|
||||
image: postgres:16.0
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_PASSWORD: listory
|
||||
|
|
@ -18,7 +18,7 @@ services:
|
|||
- db
|
||||
|
||||
api:
|
||||
image: apricote/listory:1.31.0
|
||||
image: apricote/listory:1.30.0
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
DB_HOST: db
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ services:
|
|||
#####
|
||||
|
||||
db:
|
||||
image: postgres:16.6
|
||||
image: postgres:16.0
|
||||
environment:
|
||||
POSTGRES_PASSWORD: listory
|
||||
POSTGRES_USER: listory
|
||||
|
|
@ -73,7 +73,7 @@ services:
|
|||
- web
|
||||
|
||||
proxy:
|
||||
image: traefik:v2.11.15
|
||||
image: traefik:v2.10.4
|
||||
command:
|
||||
#- --log.level=debug
|
||||
#- --accesslog=true
|
||||
|
|
@ -131,7 +131,7 @@ services:
|
|||
|
||||
prometheus:
|
||||
profiles: ["observability"]
|
||||
image: prom/prometheus:v2.55.1
|
||||
image: prom/prometheus:v2.47.0
|
||||
volumes:
|
||||
- ./observability/prometheus:/etc/prometheus
|
||||
- prometheus_data:/prometheus
|
||||
|
|
@ -148,7 +148,7 @@ services:
|
|||
|
||||
loki:
|
||||
profiles: ["observability"]
|
||||
image: grafana/loki:2.9.11
|
||||
image: grafana/loki:2.9.1
|
||||
command: ["-config.file=/etc/loki/loki.yaml"]
|
||||
ports:
|
||||
- "3100" # loki needs to be exposed so it receives logs
|
||||
|
|
@ -159,7 +159,7 @@ services:
|
|||
|
||||
promtail:
|
||||
profiles: ["observability"]
|
||||
image: grafana/promtail:2.9.11
|
||||
image: grafana/promtail:2.9.1
|
||||
command: ["-config.file=/etc/promtail.yaml"]
|
||||
volumes:
|
||||
- ./observability/promtail/promtail.yaml:/etc/promtail.yaml
|
||||
|
|
@ -177,7 +177,7 @@ services:
|
|||
|
||||
tempo:
|
||||
profiles: ["observability"]
|
||||
image: grafana/tempo:2.6.1
|
||||
image: grafana/tempo:2.2.3
|
||||
command: ["-config.file=/etc/tempo.yaml"]
|
||||
volumes:
|
||||
- ./observability/tempo/tempo.yaml:/etc/tempo.yaml
|
||||
|
|
@ -191,7 +191,7 @@ services:
|
|||
|
||||
grafana:
|
||||
profiles: ["observability"]
|
||||
image: grafana/grafana-oss:10.4.14
|
||||
image: grafana/grafana-oss:10.1.4
|
||||
volumes:
|
||||
- ./observability/grafana/provisioning:/etc/grafana/provisioning
|
||||
environment:
|
||||
|
|
|
|||
13426
frontend/package-lock.json
generated
13426
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -8,44 +8,44 @@
|
|||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@radix-ui/react-avatar": "1.1.2",
|
||||
"@radix-ui/react-dropdown-menu": "2.1.3",
|
||||
"@radix-ui/react-label": "2.1.1",
|
||||
"@radix-ui/react-navigation-menu": "1.2.2",
|
||||
"@radix-ui/react-select": "2.1.3",
|
||||
"@radix-ui/react-slot": "1.1.1",
|
||||
"@testing-library/jest-dom": "6.6.3",
|
||||
"@testing-library/react": "16.1.0",
|
||||
"@testing-library/user-event": "14.5.2",
|
||||
"@types/jest": "29.5.14",
|
||||
"@types/node": "20.17.16",
|
||||
"@types/react": "18.3.18",
|
||||
"@types/react-dom": "18.3.5",
|
||||
"@radix-ui/react-avatar": "1.0.4",
|
||||
"@radix-ui/react-dropdown-menu": "2.0.6",
|
||||
"@radix-ui/react-label": "2.0.2",
|
||||
"@radix-ui/react-navigation-menu": "1.1.4",
|
||||
"@radix-ui/react-select": "2.0.0",
|
||||
"@radix-ui/react-slot": "1.0.2",
|
||||
"@testing-library/jest-dom": "6.1.3",
|
||||
"@testing-library/react": "14.0.0",
|
||||
"@testing-library/user-event": "14.5.1",
|
||||
"@types/jest": "29.5.5",
|
||||
"@types/node": "20.8.0",
|
||||
"@types/react": "18.2.23",
|
||||
"@types/react-dom": "18.2.8",
|
||||
"@types/react-router-dom": "5.3.3",
|
||||
"@types/recharts": "1.8.29",
|
||||
"@vitejs/plugin-react": "4.3.4",
|
||||
"autoprefixer": "10.4.20",
|
||||
"axios": "1.7.9",
|
||||
"class-variance-authority": "0.7.1",
|
||||
"clsx": "2.1.1",
|
||||
"@types/recharts": "1.8.25",
|
||||
"@vitejs/plugin-react": "4.1.0",
|
||||
"autoprefixer": "10.4.16",
|
||||
"axios": "1.5.1",
|
||||
"class-variance-authority": "0.7.0",
|
||||
"clsx": "2.0.0",
|
||||
"date-fns": "2.30.0",
|
||||
"eslint-config-react-app": "7.0.1",
|
||||
"jsdom": "22.1.0",
|
||||
"lucide-react": "0.468.0",
|
||||
"lucide-react": "0.279.0",
|
||||
"npm-run-all": "4.1.5",
|
||||
"postcss": "8.4.49",
|
||||
"prettier": "3.4.2",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"react-files": "3.0.3",
|
||||
"react-router-dom": "6.28.0",
|
||||
"recharts": "2.15.0",
|
||||
"postcss": "8.4.31",
|
||||
"prettier": "3.0.3",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react-files": "3.0.0",
|
||||
"react-router-dom": "6.16.0",
|
||||
"recharts": "2.8.0",
|
||||
"tailwind-merge": "1.14.0",
|
||||
"tailwindcss": "3.4.16",
|
||||
"tailwindcss": "3.3.3",
|
||||
"tailwindcss-animate": "1.0.7",
|
||||
"typescript": "5.7.2",
|
||||
"vite": "5.4.12",
|
||||
"vitest": "1.6.0"
|
||||
"typescript": "5.2.2",
|
||||
"vite": "4.4.9",
|
||||
"vitest": "0.34.6"
|
||||
},
|
||||
"scripts": {
|
||||
"format": "prettier --write \"./*.js\" \"src/**/*.(tsx|ts|css)\"",
|
||||
|
|
|
|||
|
|
@ -9,10 +9,7 @@ import { Spinner } from "./ui/Spinner";
|
|||
export const AuthApiTokens: React.FC = () => {
|
||||
const { apiTokens, isLoading, createToken, revokeToken } = useApiTokens();
|
||||
const sortedTokens = useMemo(
|
||||
() =>
|
||||
apiTokens
|
||||
.filter((token) => !token.revokedAt)
|
||||
.sort((a, b) => (a.createdAt > b.createdAt ? -1 : 1)),
|
||||
() => apiTokens.sort((a, b) => (a.createdAt > b.createdAt ? -1 : 1)),
|
||||
[apiTokens],
|
||||
);
|
||||
|
||||
|
|
@ -25,7 +22,7 @@ export const AuthApiTokens: React.FC = () => {
|
|||
<p className="mb-4">
|
||||
You can use API Tokens to access the Listory API directly. You can
|
||||
find the API docs{" "}
|
||||
<a href="/api/docs" target="_blank" className={"underline"}>
|
||||
<a href="/api/docs" target="_blank">
|
||||
here
|
||||
</a>
|
||||
.
|
||||
|
|
|
|||
16626
package-lock.json
generated
16626
package-lock.json
generated
File diff suppressed because it is too large
Load diff
136
package.json
136
package.json
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@listory/api",
|
||||
"version": "1.31.0",
|
||||
"version": "1.30.0",
|
||||
"description": "Track your Spotify Listen History",
|
||||
"author": {
|
||||
"name": "Julian Tölle",
|
||||
|
|
@ -28,91 +28,91 @@
|
|||
"dependencies": {
|
||||
"@apricote/nest-pg-boss": "2.1.0",
|
||||
"@narando/nest-axios-interceptor": "3.0.0",
|
||||
"@nestjs/axios": "3.1.3",
|
||||
"@nestjs/common": "10.4.15",
|
||||
"@nestjs/config": "3.3.0",
|
||||
"@nestjs/core": "10.4.15",
|
||||
"@nestjs/jwt": "10.2.0",
|
||||
"@nestjs/passport": "10.0.3",
|
||||
"@nestjs/platform-express": "10.4.15",
|
||||
"@nestjs/serve-static": "4.0.2",
|
||||
"@nestjs/swagger": "7.4.2",
|
||||
"@nestjs/terminus": "10.2.3",
|
||||
"@nestjs/typeorm": "10.0.2",
|
||||
"@opentelemetry/api": "1.9.0",
|
||||
"@nestjs/axios": "3.0.0",
|
||||
"@nestjs/common": "10.2.6",
|
||||
"@nestjs/config": "3.1.1",
|
||||
"@nestjs/core": "10.2.6",
|
||||
"@nestjs/jwt": "10.1.1",
|
||||
"@nestjs/passport": "10.0.2",
|
||||
"@nestjs/platform-express": "10.2.6",
|
||||
"@nestjs/serve-static": "4.0.0",
|
||||
"@nestjs/swagger": "7.1.12",
|
||||
"@nestjs/terminus": "10.1.1",
|
||||
"@nestjs/typeorm": "10.0.0",
|
||||
"@opentelemetry/api": "1.6.0",
|
||||
"@opentelemetry/api-metrics": "0.33.0",
|
||||
"@opentelemetry/context-async-hooks": "1.29.0",
|
||||
"@opentelemetry/exporter-prometheus": "0.56.0",
|
||||
"@opentelemetry/exporter-trace-otlp-http": "0.56.0",
|
||||
"@opentelemetry/instrumentation": "0.56.0",
|
||||
"@opentelemetry/instrumentation-dns": "0.42.0",
|
||||
"@opentelemetry/instrumentation-express": "0.46.0",
|
||||
"@opentelemetry/instrumentation-http": "0.56.0",
|
||||
"@opentelemetry/instrumentation-nestjs-core": "0.43.0",
|
||||
"@opentelemetry/instrumentation-pg": "0.49.0",
|
||||
"@opentelemetry/instrumentation-pino": "0.45.0",
|
||||
"@opentelemetry/resources": "1.29.0",
|
||||
"@opentelemetry/sdk-metrics": "1.29.0",
|
||||
"@opentelemetry/sdk-node": "0.56.0",
|
||||
"@opentelemetry/sdk-trace-base": "1.29.0",
|
||||
"@opentelemetry/semantic-conventions": "1.28.0",
|
||||
"@sentry/node": "7.120.3",
|
||||
"@opentelemetry/context-async-hooks": "1.17.0",
|
||||
"@opentelemetry/exporter-prometheus": "0.43.0",
|
||||
"@opentelemetry/exporter-trace-otlp-http": "0.43.0",
|
||||
"@opentelemetry/instrumentation": "0.43.0",
|
||||
"@opentelemetry/instrumentation-dns": "0.32.2",
|
||||
"@opentelemetry/instrumentation-express": "0.33.1",
|
||||
"@opentelemetry/instrumentation-http": "0.43.0",
|
||||
"@opentelemetry/instrumentation-nestjs-core": "0.33.1",
|
||||
"@opentelemetry/instrumentation-pg": "0.36.1",
|
||||
"@opentelemetry/instrumentation-pino": "0.34.1",
|
||||
"@opentelemetry/resources": "1.17.0",
|
||||
"@opentelemetry/sdk-metrics": "1.17.0",
|
||||
"@opentelemetry/sdk-node": "0.43.0",
|
||||
"@opentelemetry/sdk-trace-base": "1.17.0",
|
||||
"@opentelemetry/semantic-conventions": "1.17.0",
|
||||
"@sentry/node": "7.72.0",
|
||||
"class-transformer": "0.5.1",
|
||||
"class-validator": "0.14.1",
|
||||
"cookie-parser": "1.4.7",
|
||||
"class-validator": "0.14.0",
|
||||
"cookie-parser": "1.4.6",
|
||||
"date-fns": "2.30.0",
|
||||
"joi": "17.13.3",
|
||||
"joi": "17.10.2",
|
||||
"lodash": "4.17.21",
|
||||
"nest-raven": "10.1.0",
|
||||
"nest-raven": "10.0.0",
|
||||
"nestjs-otel": "5.1.5",
|
||||
"nestjs-pino": "4.1.0",
|
||||
"nestjs-pino": "3.5.0",
|
||||
"nestjs-typeorm-paginate": "4.0.4",
|
||||
"passport": "0.7.0",
|
||||
"passport": "0.6.0",
|
||||
"passport-http-bearer": "1.0.1",
|
||||
"passport-jwt": "4.0.1",
|
||||
"passport-spotify": "2.0.0",
|
||||
"pg": "8.13.1",
|
||||
"pg": "8.11.3",
|
||||
"pg-boss": "9.0.3",
|
||||
"pino": "8.21.0",
|
||||
"pino-http": "9.0.0",
|
||||
"reflect-metadata": "0.1.14",
|
||||
"rimraf": "5.0.10",
|
||||
"pino": "8.15.1",
|
||||
"pino-http": "8.5.0",
|
||||
"reflect-metadata": "0.1.13",
|
||||
"rimraf": "5.0.5",
|
||||
"rxjs": "7.8.1",
|
||||
"typeorm": "0.3.20"
|
||||
"typeorm": "0.3.17"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/cli": "10.4.9",
|
||||
"@nestjs/schematics": "10.2.3",
|
||||
"@nestjs/testing": "10.4.15",
|
||||
"@types/cookie-parser": "1.4.8",
|
||||
"@types/express": "5.0.0",
|
||||
"@types/jest": "29.5.14",
|
||||
"@types/lodash": "4.17.14",
|
||||
"@types/node": "20.17.16",
|
||||
"@types/passport-http-bearer": "1.0.41",
|
||||
"@types/passport-jwt": "4.0.1",
|
||||
"@types/supertest": "6.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "6.21.0",
|
||||
"@typescript-eslint/parser": "6.21.0",
|
||||
"eslint": "8.57.1",
|
||||
"@nestjs/cli": "10.1.18",
|
||||
"@nestjs/schematics": "10.0.2",
|
||||
"@nestjs/testing": "10.2.6",
|
||||
"@types/cookie-parser": "1.4.4",
|
||||
"@types/express": "4.17.18",
|
||||
"@types/jest": "29.5.5",
|
||||
"@types/lodash": "4.14.199",
|
||||
"@types/node": "20.8.0",
|
||||
"@types/passport-http-bearer": "1.0.38",
|
||||
"@types/passport-jwt": "3.0.10",
|
||||
"@types/supertest": "2.0.13",
|
||||
"@typescript-eslint/eslint-plugin": "6.7.3",
|
||||
"@typescript-eslint/parser": "6.7.3",
|
||||
"eslint": "8.50.0",
|
||||
"eslint-config-airbnb-base": "15.0.0",
|
||||
"eslint-config-airbnb-typescript": "17.1.0",
|
||||
"eslint-config-prettier": "9.1.0",
|
||||
"eslint-plugin-import": "2.31.0",
|
||||
"eslint-plugin-jsdoc": "48.11.0",
|
||||
"eslint-plugin-jsx-a11y": "6.10.2",
|
||||
"eslint-config-prettier": "9.0.0",
|
||||
"eslint-plugin-import": "2.28.1",
|
||||
"eslint-plugin-jsdoc": "46.8.2",
|
||||
"eslint-plugin-jsx-a11y": "6.7.1",
|
||||
"eslint-plugin-prefer-arrow": "1.2.3",
|
||||
"eslint-plugin-react": "7.37.4",
|
||||
"eslint-plugin-react-hooks": "4.6.2",
|
||||
"eslint-plugin-react": "7.33.2",
|
||||
"eslint-plugin-react-hooks": "4.6.0",
|
||||
"jest": "29.7.0",
|
||||
"pino-pretty": "10.3.1",
|
||||
"prettier": "3.4.2",
|
||||
"supertest": "6.3.4",
|
||||
"ts-jest": "29.2.5",
|
||||
"ts-loader": "9.5.1",
|
||||
"ts-node": "10.9.2",
|
||||
"pino-pretty": "10.2.0",
|
||||
"prettier": "3.0.3",
|
||||
"supertest": "6.3.3",
|
||||
"ts-jest": "29.1.1",
|
||||
"ts-loader": "9.4.4",
|
||||
"ts-node": "10.9.1",
|
||||
"tsconfig-paths": "4.2.0",
|
||||
"typescript": "5.7.2"
|
||||
"typescript": "5.2.2"
|
||||
},
|
||||
"jest": {
|
||||
"moduleFileExtensions": [
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ export class SchedulerService implements OnApplicationBootstrap {
|
|||
}
|
||||
|
||||
@Span()
|
||||
@CrawlerSupervisorJob.Handle()
|
||||
// @CrawlerSupervisorJob.Handle()
|
||||
async superviseImportJobs(): Promise<void> {
|
||||
this.logger.log("Starting crawler jobs");
|
||||
const userInfo = await this.spotifyService.getCrawlableUserInfo();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue