| { |
| "name": "fineract-backoffice-ui", |
| "version": "1.0.0-rc.1", |
| "license": "Apache-2.0", |
| "engines": { |
| "node": ">=22.22.3" |
| }, |
| "scripts": { |
| "ng": "ng", |
| "start": "ng serve", |
| "start:sandbox": "ng serve --configuration sandbox", |
| "build": "ng build", |
| "build:sandbox": "ng build --configuration sandbox", |
| "watch": "ng build --watch --configuration development", |
| "test": "ng run fineract-backoffice-ui:unit-test", |
| "test:mfe": "ng run fineract-mfe:unit-test", |
| "test:unit": "ng run fineract-backoffice-ui:unit-test", |
| "test:e2e": "playwright test", |
| "test:e2e:mobile": "playwright test --project=mobile", |
| "test:e2e:local": "FINERACT_SERVER_URL=/fineract-provider/api/v1 FINERACT_TENANT_ID=default FINERACT_USERNAME=mifos FINERACT_PASSWORD=password playwright test --project=mocked --project=backend", |
| "seed:demo-data": "FINERACT_SERVER_URL=/fineract-provider/api/v1 FINERACT_TENANT_ID=default FINERACT_USERNAME=mifos FINERACT_PASSWORD=password playwright test --project=demo-seed", |
| "e2e:stack": "bash scripts/e2e-stack.sh", |
| "e2e:stack:fresh": "bash scripts/e2e-stack.sh --fresh", |
| "e2e:stack:2fa": "bash scripts/e2e-stack-2fa.sh", |
| "test:e2e:2fa": "FINERACT_SERVER_URL=/fineract-provider/api/v1 FINERACT_TENANT_ID=default FINERACT_USERNAME=mifos FINERACT_PASSWORD=password playwright test --project=two-factor --workers=1", |
| "lint": "eslint src --suppressions-location eslint-suppressions.json", |
| "lint:prune": "eslint src --suppressions-location eslint-suppressions.json --prune-suppressions", |
| "format": "prettier --write .", |
| "format:check": "prettier --check .", |
| "generate-api": "npm run copy-swagger && npm run clean-api && npx openapi-generator-cli generate -i ./api-spec/fineract.json -g typescript-angular -o src/app/api -t templates/openapi-generator --additional-properties=ngVersion=22.0.7", |
| "copy-swagger": "mkdir -p api-spec && node scripts/preprocess-spec.mjs ${FINERACT_SWAGGER_PATH:-./public/api/fineract.json} api-spec/fineract.json", |
| "clean-api": "node -e \"fs.rmSync('src/app/api/api',{recursive:true,force:true});fs.rmSync('src/app/api/model',{recursive:true,force:true})\"", |
| "verify-api-client": "npm run generate-api && git diff --exit-code src/app/api", |
| "i18n:check": "node scripts/check-translations.mjs", |
| "check:icons": "node scripts/check-icons.mjs", |
| "check:a11y-names": "node scripts/check-a11y-names.mjs", |
| "check:internal-endpoints": "node scripts/check-internal-endpoints.mjs", |
| "check:route-permissions": "node scripts/check-route-permissions.mjs", |
| "check:nav-ids": "node scripts/check-nav-ids.mjs", |
| "check:branding-path": "node scripts/check-branding-path.mjs", |
| "check:reference-downstream": "node scripts/check-reference-downstream.mjs", |
| "check:responsive": "node scripts/check-responsive.mjs", |
| "branding:demo": "node scripts/make-branding-demo.mjs", |
| "check:licenses": "node scripts/check-dependency-licenses.mjs", |
| "check:licenses:production": "node scripts/check-dependency-licenses.mjs --production", |
| "check:licenses:selftest": "node scripts/check-dependency-licenses.mjs --self-test", |
| "check:version": "node scripts/check-version.mjs", |
| "test:eslint-rules": "node --test \"eslint-rules/*.test.js\"", |
| "test:scripts": "node --test \"scripts/*.test.mjs\"", |
| "typecheck:e2e": "tsc -p tsconfig.e2e.json", |
| "api:surface": "node scripts/check-api-surface.mjs", |
| "ga:check": "node scripts/ga-check.mjs", |
| "demo:record": "DEMO_RECORD=1 DEMO_BEAT_MS=900 PLAYWRIGHT_OUTPUT_DIR=demo-recordings FINERACT_SERVER_URL=/fineract-provider/api/v1 FINERACT_TENANT_ID=default FINERACT_USERNAME=mifos FINERACT_PASSWORD=password playwright test --project=backend --workers=1" |
| }, |
| "prettier": { |
| "printWidth": 100, |
| "singleQuote": true, |
| "overrides": [ |
| { |
| "files": "*.html", |
| "options": { |
| "parser": "angular" |
| } |
| } |
| ] |
| }, |
| "dependencies": { |
| "@angular/animations": "22.1.0", |
| "@angular/cdk": "^22.0.6", |
| "@angular/common": "22.1.0", |
| "@angular/compiler": "22.1.0", |
| "@angular/core": "22.1.0", |
| "@angular/forms": "22.1.0", |
| "@angular/platform-browser": "22.1.0", |
| "@angular/router": "22.1.0", |
| "@ionic/angular": "^8.8.15", |
| "@ngx-translate/core": "^17.0.0", |
| "@ngx-translate/http-loader": "^17.0.0", |
| "es-module-shims": "^2.8.4", |
| "ionicons": "^8.0.13", |
| "rxjs": "~7.8.0", |
| "tslib": "^2.8.1", |
| "zone.js": "~0.16.2" |
| }, |
| "devDependencies": { |
| "@angular-architects/native-federation": "^22.0.6", |
| "@angular-devkit/build-angular": "^22.0.7", |
| "@angular/build": "22.1.0", |
| "@angular/cli": "^22.1.4", |
| "@angular/compiler-cli": "22.1.0", |
| "@axe-core/playwright": "^4.12.1", |
| "@emnapi/core": "1.11.3", |
| "@emnapi/runtime": "1.11.2", |
| "@openapitools/openapi-generator-cli": "^2.40.1", |
| "@playwright/test": "^1.61.1", |
| "@softarc/native-federation-orchestrator": "^4.5.2", |
| "angular-eslint": "^22.0.0", |
| "eslint": "^9.39.4", |
| "eslint-config-prettier": "^10.1.8", |
| "eslint-import-resolver-typescript": "^4.4.5", |
| "eslint-plugin-import": "^2.32.0", |
| "eslint-plugin-security": "^4.0.1", |
| "eslint-plugin-unicorn": "^65.0.1", |
| "jsdom": "^28.0.0", |
| "license-checker": "^25.0.1", |
| "prettier": "^3.9.6", |
| "prettier-plugin-organize-attributes": "^1.0.0", |
| "typescript": "~6.0.3", |
| "typescript-eslint": "8.64.0", |
| "vitest": "^4.0.8" |
| }, |
| "overrides": { |
| "@openapitools/openapi-generator-cli": { |
| "@nestjs/core": { |
| "path-to-regexp": "^8.3.0" |
| } |
| }, |
| "path-to-regexp": "^8.3.0" |
| } |
| } |