Files are uploaded over REST, stored on disk (a volume in Docker) and recorded on the ticket as events; the bytes are written first, so no attachment ever points at a missing file. Only images, video, audio, PDF and plain text are shown inline, everything with nosniff and a sandbox CSP. The web shows thumbnails, uploads by drag and drop or by pasting a screenshot, and attaches files to new comments. Also adds `nx run api:contracts`, which writes schema.gql and openapi.json without starting the API or any database. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
72 lines
1.8 KiB
JSON
72 lines
1.8 KiB
JSON
{
|
|
"name": "api",
|
|
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
|
"sourceRoot": "apps/api/src",
|
|
"projectType": "application",
|
|
"tags": ["scope:api", "type:app"],
|
|
"targets": {
|
|
"prune-lockfile": {
|
|
"dependsOn": ["build"],
|
|
"cache": true,
|
|
"executor": "@nx/js:prune-lockfile",
|
|
"outputs": [
|
|
"{workspaceRoot}/dist/apps/api/package.json",
|
|
"{workspaceRoot}/dist/apps/api/package-lock.json"
|
|
],
|
|
"options": {
|
|
"buildTarget": "build"
|
|
}
|
|
},
|
|
"copy-workspace-modules": {
|
|
"dependsOn": ["build"],
|
|
"cache": true,
|
|
"outputs": ["{workspaceRoot}/dist/apps/api/workspace_modules"],
|
|
"executor": "@nx/js:copy-workspace-modules",
|
|
"options": {
|
|
"buildTarget": "build"
|
|
}
|
|
},
|
|
"prune": {
|
|
"dependsOn": ["prune-lockfile", "copy-workspace-modules"],
|
|
"executor": "nx:noop"
|
|
},
|
|
"serve": {
|
|
"continuous": true,
|
|
"executor": "@nx/js:node",
|
|
"defaultConfiguration": "development",
|
|
"dependsOn": ["build"],
|
|
"options": {
|
|
"buildTarget": "api:build",
|
|
"runBuildTargetDependencies": false
|
|
},
|
|
"configurations": {
|
|
"development": {
|
|
"buildTarget": "api:build:development"
|
|
},
|
|
"production": {
|
|
"buildTarget": "api:build:production"
|
|
}
|
|
}
|
|
},
|
|
"test": {
|
|
"options": {
|
|
"passWithNoTests": true
|
|
}
|
|
},
|
|
"e2e": {
|
|
"executor": "nx:run-commands",
|
|
"options": {
|
|
"command": "jest --config apps/api/jest.e2e.config.cts --runInBand"
|
|
},
|
|
"cache": false
|
|
},
|
|
"contracts": {
|
|
"executor": "nx:run-commands",
|
|
"options": {
|
|
"command": "node -r ./apps/api/scripts/register.cjs apps/api/scripts/contracts.ts"
|
|
},
|
|
"cache": false
|
|
}
|
|
}
|
|
}
|