super-productivity/angular.json
Johannes Millan b2a807f7db perf(archive): remove unused NgRx archive stores to reduce memory usage
Archives (archiveYoung, archiveOld) were being loaded into NgRx state
at startup but their selectors were never read anywhere in the codebase.
All code that needs archives loads them directly from IndexedDB via
ArchiveDbAdapter (StateSnapshotService, TaskArchiveService, etc).

This change removes the archive store registrations from NgRx, which:
- Reduces memory usage for users with large archives
- Improves startup time (no longer dispatching large archive data to NgRx)
- Reduces GC pressure (fewer large objects in memory)

Archive functionality is unaffected - archives are still stored in
IndexedDB and loaded on-demand when needed for worklog, sync, etc.
2026-01-14 13:45:27 +01:00

292 lines
8.5 KiB
JSON

{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"sp2": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "",
"schematics": {
"@schematics/angular:component": {
"style": "scss",
"changeDetection": "OnPush"
},
"@ngrx/schematics:component": {
"styleext": "scss",
"changeDetection": "OnPush"
}
},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"aot": true,
"outputPath": {
"base": ".tmp/angular-dist"
},
"index": "src/index.html",
"polyfills": ["src/polyfills.ts"],
"tsConfig": "src/tsconfig.app.json",
"preserveSymlinks": true,
"assets": [
"src/favicon.ico",
"src/assets",
"src/manifest.json",
"src/static"
],
"styles": ["src/styles.scss"],
"scripts": [],
"webWorkerTsConfig": "src/tsconfig.worker.json",
"browser": "src/main.ts",
"stylePreprocessorOptions": {
"includePaths": [".", "src", "src/styles"]
},
"allowedCommonJsDependencies": [
"typia",
"electron-log",
"stacktrace-js",
"spark-md5",
"chrono-node",
"dayjs",
"jira2md",
"query-string"
]
},
"configurations": {
"development": {
"budgets": [
{
"type": "anyComponentStyle",
"maximumWarning": "20kb"
}
],
"optimization": false,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": false,
"aot": false,
"serviceWorker": "ngsw-config.json"
},
"production": {
"baseHref": "",
"budgets": [
{
"type": "initial",
"maximumWarning": "5.5mb",
"maximumError": "6mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "20kb"
}
],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": {
"scripts": true,
"styles": {
"minify": true,
"inlineCritical": true
},
"fonts": true
},
"outputHashing": "all",
"sourceMap": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"serviceWorker": "ngsw-config.json"
},
"productionWeb": {
"outputPath": {
"base": "dist",
"browser": "browser"
},
"budgets": [
{
"type": "initial",
"maximumWarning": "5.5mb",
"maximumError": "6mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "20kb"
}
],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": {
"scripts": true,
"styles": {
"minify": true,
"inlineCritical": true
},
"fonts": true
},
"outputHashing": "all",
"sourceMap": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"serviceWorker": "ngsw-config.json"
},
"stage": {
"baseHref": "",
"budgets": [
{
"type": "initial",
"maximumWarning": "5.5mb",
"maximumError": "6mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "20kb"
}
],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.stage.ts"
}
],
"optimization": {
"scripts": true,
"styles": {
"minify": true,
"inlineCritical": true
},
"fonts": true
},
"outputHashing": "all",
"sourceMap": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"serviceWorker": false
},
"stageWeb": {
"outputPath": {
"base": "dist",
"browser": "browser"
},
"budgets": [
{
"type": "anyComponentStyle",
"maximumWarning": "20kb"
}
],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.stage.ts"
}
],
"optimization": {
"scripts": true,
"styles": {
"minify": true,
"inlineCritical": true
},
"fonts": true
},
"outputHashing": "all",
"sourceMap": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"serviceWorker": "ngsw-config.json"
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"open": false,
"buildTarget": "sp2:build"
},
"configurations": {
"production": {
"buildTarget": "sp2:build:production"
},
"development": {
"buildTarget": "sp2:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "sp2:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": ["zone.js", "zone.js/testing", "src/polyfills.ts"],
"tsConfig": "src/tsconfig.spec.json",
"preserveSymlinks": true,
"karmaConfig": "src/karma.conf.js",
"styles": ["src/styles.scss"],
"scripts": [],
"assets": ["src/favicon.ico", "src/assets", "src/manifest.json"]
}
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"cache": true,
"lintFilePatterns": [
"src/**/*.ts",
"src/**/*.html",
"e2e/**/*.ts",
"electron/**/*.ts"
]
}
}
}
}
},
"cli": {
"analytics": false,
"schematicCollections": ["@ngrx/schematics"]
},
"schematics": {
"@schematics/angular:component": {
"style": "scss",
"type": "component"
},
"@schematics/angular:directive": {
"type": "directive"
},
"@schematics/angular:service": {
"type": "service"
},
"@schematics/angular:guard": {
"typeSeparator": "."
},
"@schematics/angular:interceptor": {
"typeSeparator": "."
},
"@schematics/angular:module": {
"typeSeparator": "."
},
"@schematics/angular:pipe": {
"typeSeparator": "."
},
"@schematics/angular:resolver": {
"typeSeparator": "."
}
}
}