Andrew Smith 71eb339b5a
feat: move library sync to processor, optimize cover art retrieval (#903)
Library syncs can lock the web app. Syncs now occur async by offloading a message to be consumed by sync-library-processor (formerly game-assets-processor). E2E sync tests are now against the processor, to be removed from playnite-web-app. New snapshot mechanism used for local dev and e2e tests; allows a database to be snapshotted and restored.

next/image is used to optimze cover art and platform images.

BREAKING CHANGE: game-assets-processor renamed to sync-library-processor to reflect its new responsibilities; refer to new docker-compose sample for deployment. This will require users to sync their libraries again after updating.
2025-12-24 11:28:30 -05:00

147 lines
3.3 KiB
JSON
Executable File

{
"$schema": "./node_modules/nx/schemas/nx-schema.json",
"plugins": [
{
"plugin": "@nx/next/plugin",
"options": {
"buildTargetName": "build",
"devTargetName": "start",
"startTargetName": "start/prod",
"serveStaticTargetName": "start/static"
}
},
{
"plugin": "@nx/eslint/plugin",
"options": {
"targetName": "lint"
}
},
{
"plugin": "@nx/jest/plugin",
"options": {
"targetName": "test/unit"
}
},
{
"plugin": "@nx/cypress/plugin",
"options": {
"targetName": "test/e2e",
"ciTargetName": "test/e2e/ci",
"componentTestingTargetName": "test/component",
"openTargetName": "test/open"
}
},
{
"plugin": "@nx/react/router-plugin",
"options": {
"buildTargetName": "build",
"devTargetName": "dev",
"startTargetName": "start",
"watchDepsTargetName": "watch-deps",
"buildDepsTargetName": "build-deps",
"typecheckTargetName": "typecheck"
}
}
],
"namedInputs": {
"src": ["{projectRoot}/src/**"],
"generated": ["{projectRoot}/.generated"]
},
"targetDefaults": {
"build": {
"outputs": ["{projectRoot}/build"],
"dependsOn": [
"clean/build",
"prepare",
"^prepare",
"build/restore",
"^start"
],
"cache": true
},
"build/e2e": {
"outputs": ["{projectRoot}/build"],
"dependsOn": [
"clean/build",
"prepare",
"^prepare",
"^build",
"build/restore",
"^start"
],
"cache": true
},
"build/restore": {
"dependsOn": [],
"cache": true
},
"prepare": {
"outputs": ["{projectRoot}/.generated"],
"dependsOn": ["^prepare"],
"cache": true
},
"start": {
"dependsOn": ["prepare", "^build", "^start"],
"cache": false
},
"package": {
"dependsOn": ["clean/package", "build"],
"cache": true
},
"package/e2e": {
"cache": true,
"dependsOn": ["clean/package", "build/e2e"]
},
"publish": {
"dependsOn": ["prepare", "^prepare"],
"cache": false
},
"test/unit": {
"dependsOn": ["prepare", "test/unit/restore", "test/unit/build"],
"outputs": ["{projectRoot}/.test-runs/unit"],
"cache": true
},
"test/unit/restore": {
"dependsOn": ["build/restore"],
"cache": true
},
"test/components": {
"dependsOn": ["clean/test", "prepare"],
"cache": true
},
"test/components/update": {
"dependsOn": ["clean/test", "prepare"],
"cache": false
},
"test/e2e": {
"dependsOn": ["clean/test", "package/e2e", "^start"],
"cache": false
},
"test/e2e/update": {
"dependsOn": ["clean/test", "package/e2e", "^start"],
"cache": false
},
"@nx/js:tsc": {
"cache": true,
"dependsOn": ["^build"],
"inputs": ["default", "^default"]
}
},
"affected": {
"defaultBase": "main"
},
"generators": {
"@nx/next": {
"application": {
"style": "@emotion/styled",
"linter": "eslint"
}
},
"@nx/react": {
"library": {
"unitTestRunner": "none"
}
}
}
}