- What reaches the bell also reaches the devices where the person turned «Avisos en este dispositivo» on, with TaskStream closed: the Notifier sends each new notification encrypted (aes128gcm) and signed with VAPID, and forgets subscriptions the push service dropped (404/410). A failure never blocks the event stream. - The API keeps one subscription per device (push_subscriptions) and exposes the VAPID public key in the notification settings; GraphQL subscribePush/unsubscribePush, REST /me/push-subscriptions. Without VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY push is off. - The web registers /push-sw.js, a service worker that only shows the notification and opens its ticket on a tap (no caching, served without cache by nginx), and a manifest that makes it installable, which iPhones need for push. - The bell's toggles show their text next to them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
133 lines
4.0 KiB
JSON
133 lines
4.0 KiB
JSON
{
|
|
"name": "@task-stream/source",
|
|
"version": "0.0.0",
|
|
"license": "MIT",
|
|
"scripts": {},
|
|
"private": true,
|
|
"dependencies": {
|
|
"@angular/animations": "~22.1.0",
|
|
"@angular/cdk": "~22.1.0",
|
|
"@angular/common": "~22.1.0",
|
|
"@angular/compiler": "~22.1.0",
|
|
"@angular/core": "~22.1.0",
|
|
"@angular/forms": "~22.1.0",
|
|
"@angular/material": "~22.1.0",
|
|
"@angular/platform-browser": "~22.1.0",
|
|
"@angular/router": "~22.1.0",
|
|
"@apollo/client": "^4.3.1",
|
|
"@apollo/server": "^5.5.1",
|
|
"@as-integrations/express5": "^1.1.2",
|
|
"@graphql-typed-document-node/core": "^3.2.0",
|
|
"@modelcontextprotocol/server": "^2.3.1",
|
|
"@nestjs-mcp/server": "^2.0.0",
|
|
"@nestjs/apollo": "^13.4.5",
|
|
"@nestjs/common": "^11.0.0",
|
|
"@nestjs/config": "^4.0.4",
|
|
"@nestjs/core": "^11.0.0",
|
|
"@nestjs/cqrs": "^11.0.3",
|
|
"@nestjs/graphql": "^13.4.5",
|
|
"@nestjs/mongoose": "^11.0.4",
|
|
"@nestjs/platform-express": "^11.0.0",
|
|
"@nestjs/swagger": "^11.4.7",
|
|
"@nestjs/typeorm": "^11.0.3",
|
|
"@ngrx/operators": "^22.0.1",
|
|
"@ngrx/signals": "^22.0.1",
|
|
"@ngx-translate/core": "^18.0.0",
|
|
"@ngx-translate/http-loader": "^18.0.0",
|
|
"@pi/ui": "^0.0.8",
|
|
"@tiptap/core": "3.31.3",
|
|
"@tiptap/extension-image": "3.31.3",
|
|
"@tiptap/extension-list": "3.31.3",
|
|
"@tiptap/extension-mention": "3.31.3",
|
|
"@tiptap/extension-table": "3.31.3",
|
|
"@tiptap/extensions": "3.31.3",
|
|
"@tiptap/markdown": "3.31.3",
|
|
"@tiptap/pm": "3.31.3",
|
|
"@tiptap/starter-kit": "3.31.3",
|
|
"@tiptap/suggestion": "3.31.3",
|
|
"apollo-angular": "^14.2.0",
|
|
"chart.js": "^4.5.1",
|
|
"class-transformer": "^0.5.1",
|
|
"class-validator": "^0.15.1",
|
|
"dompurify": "^3.4.16",
|
|
"graphql": "^16.14.2",
|
|
"graphql-redis-subscriptions": "^2.7.0",
|
|
"graphql-ws": "^6.3.0",
|
|
"ioredis": "^5.11.1",
|
|
"joi": "^18.2.9",
|
|
"marked": "^18.1.0",
|
|
"mongoose": "^8.24.4",
|
|
"nodemailer": "^7.0.13",
|
|
"openapi-fetch": "^0.17.0",
|
|
"pg": "^8.23.1",
|
|
"reflect-metadata": "^0.2.0",
|
|
"rxjs": "^7.8.0",
|
|
"tslib": "^2.8.1",
|
|
"typeorm": "^0.3.31",
|
|
"web-push": "3.6.7",
|
|
"ws": "^8.22.0",
|
|
"zod": "^4.6.5"
|
|
},
|
|
"devDependencies": {
|
|
"@analogjs/vite-plugin-angular": "~2.6.0",
|
|
"@analogjs/vitest-angular": "~2.6.0",
|
|
"@angular-devkit/core": "~22.1.0",
|
|
"@angular-devkit/schematics": "~22.1.0",
|
|
"@angular/build": "~22.1.0",
|
|
"@angular/cli": "~22.1.0",
|
|
"@angular/compiler-cli": "~22.1.0",
|
|
"@angular/language-service": "~22.1.0",
|
|
"@eslint/js": "^9.8.0",
|
|
"@graphql-codegen/cli": "^7.4.3",
|
|
"@graphql-codegen/typed-document-node": "^7.1.1",
|
|
"@graphql-codegen/typescript": "^6.1.0",
|
|
"@graphql-codegen/typescript-operations": "^6.1.9",
|
|
"@nestjs/schematics": "^11.0.0",
|
|
"@nestjs/testing": "^11.0.0",
|
|
"@nx/angular": "^23.2.1",
|
|
"@nx/eslint": "23.2.1",
|
|
"@nx/eslint-plugin": "23.2.1",
|
|
"@nx/jest": "23.2.1",
|
|
"@nx/js": "23.2.1",
|
|
"@nx/nest": "23.2.1",
|
|
"@nx/node": "23.2.1",
|
|
"@nx/vite": "23.2.1",
|
|
"@nx/vitest": "23.2.1",
|
|
"@nx/web": "23.2.1",
|
|
"@nx/webpack": "23.2.1",
|
|
"@nx/workspace": "23.2.1",
|
|
"@oxc-project/runtime": "^0.115.0",
|
|
"@schematics/angular": "~22.1.0",
|
|
"@swc/helpers": "~0.5.18",
|
|
"@types/jest": "~30.0.0",
|
|
"@types/node": "^22.0.0",
|
|
"@types/nodemailer": "^8.0.2",
|
|
"@types/web-push": "3.6.4",
|
|
"@types/ws": "^8.18.2",
|
|
"@typescript-eslint/utils": "^8.58.0",
|
|
"@vitest/coverage-v8": "~4.1.0",
|
|
"@vitest/ui": "~4.1.0",
|
|
"angular-eslint": "^22.1.0",
|
|
"eslint": "^9.8.0",
|
|
"eslint-config-prettier": "^10.0.0",
|
|
"jest": "~30.3.0",
|
|
"jest-environment-node": "~30.3.0",
|
|
"jest-util": "~30.3.0",
|
|
"jsdom": "^27.1.0",
|
|
"nx": "23.2.1",
|
|
"prettier": "~3.6.2",
|
|
"ts-jest": "^29.4.7",
|
|
"ts-node": "10.9.1",
|
|
"typescript": "~6.0.3",
|
|
"typescript-eslint": "^8.58.0",
|
|
"vite": "^8.0.0",
|
|
"vitest": "4.1.11",
|
|
"webpack": "^5.101.3",
|
|
"webpack-cli": "^7.0.0",
|
|
"webpack-dev-server": "^5.2.1"
|
|
},
|
|
"overrides": {
|
|
"vitest": "4.1.11"
|
|
}
|
|
}
|