| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- {
- "name": "xiaoshu-angular",
- "version": "0.0.0",
- "scripts": {
- "ng": "ng",
- "start": "npm run start:mobile",
- "start:mobile": "ng serve xiaoshu-mobile --proxy-config proxy.conf.cjs --port 4200",
- "start:admin": "ng serve xiaoshu-admin --proxy-config proxy.conf.cjs --port 4300",
- "build": "npm run build:mobile && npm run build:admin",
- "build:mobile": "ng build xiaoshu-mobile",
- "build:admin": "ng build xiaoshu-admin",
- "parity:generate": "node scripts/generate-source-parity.mjs",
- "parity:check": "node scripts/generate-source-parity.mjs --check",
- "admin-coverage:generate": "node scripts/generate-admin-coverage.mjs",
- "admin-coverage:check": "node scripts/generate-admin-coverage.mjs --check",
- "admin-icons:generate": "node scripts/generate-admin-icon-catalog.mjs",
- "admin-icons:check": "node scripts/generate-admin-icon-catalog.mjs --check",
- "cloud:validate": "node scripts/deploy-admin-functions.mjs --validate",
- "cloud:indexes:app": "node scripts/ensure-app-performance-indexes.mjs",
- "cloud:deploy": "node scripts/deploy-admin-functions.mjs",
- "cloud:smoke": "node scripts/smoke-admin-functions.mjs",
- "ops:smoke": "node scripts/smoke-operations-functions.mjs",
- "payroll:verify-source": "node scripts/verify-payroll-source.mjs",
- "payroll:backfill": "node scripts/backfill-payroll-lessons.mjs",
- "app:schema:ensure": "node scripts/ensure-app-member-schemas.mjs",
- "app:resources:smoke": "node scripts/smoke-app-member-resources.mjs",
- "app:performance:smoke": "node scripts/smoke-app-performance-read.mjs",
- "app:actions:audit": "node scripts/audit-app-cloud-actions.mjs",
- "reading:prompts:sync": "node scripts/sync-reading-prompts.mjs",
- "reading:ai:configure": "node scripts/configure-reading-ai.mjs",
- "reading:users:merge": "node scripts/merge-reading-users.mjs",
- "sync-bridge:build": "dotnet build legacy-sync-bridge/Xiaoshu.LegacySyncBridge.csproj",
- "sync-bridge:publish": "dotnet publish legacy-sync-bridge/Xiaoshu.LegacySyncBridge.csproj -c Release -r win-x64 --self-contained true -o dist/legacy-sync-bridge-win-x64",
- "sync-bridge:package": "npm run sync-bridge:publish && bash legacy-sync-bridge/deployment/package.sh",
- "sync-bridge:smoke": "dotnet build legacy-sync-bridge/Xiaoshu.LegacySyncBridge.csproj -c Release --no-restore && node scripts/smoke-legacy-sync-bridge.mjs",
- "sync-worker:nightly": "node scripts/run-nightly-direct-sync.mjs",
- "sync-worker:once": "node scripts/run-nightly-direct-sync.mjs",
- "sync-worker:start": "node scripts/run-nightly-direct-sync.mjs",
- "test:sync-worker": "node --test scripts/tests/legacy-sync-worker.test.mjs",
- "watch": "npm run watch:mobile",
- "watch:mobile": "ng build xiaoshu-mobile --watch --configuration development",
- "watch:admin": "ng build xiaoshu-admin --watch --configuration development",
- "test": "npm run test:mobile && npm run test:admin",
- "test:mobile": "ng test xiaoshu-mobile",
- "test:admin": "ng test xiaoshu-admin",
- "test:ci": "npm run test:mobile:ci && npm run test:admin:ci",
- "test:mobile:ci": "ng test xiaoshu-mobile --no-watch --no-progress --browsers=ChromeHeadless",
- "test:admin:ci": "ng test xiaoshu-admin --no-watch --no-progress --browsers=ChromeHeadless",
- "test:review-rewards": "node --test scripts/tests/review-rewards.test.mjs",
- "review-rewards:migrate": "node scripts/migrate-review-rewards.mjs",
- "test:member-enrollment": "node --test scripts/tests/member-enrollment.test.mjs scripts/tests/member-enrollment-gateway.test.mjs",
- "members:migrate": "node scripts/migrate-member-enrollment.mjs",
- "members:smoke": "node scripts/smoke-member-enrollment.mjs",
- "test:payroll-integrity": "node --test scripts/tests/payroll-integrity.test.mjs",
- "payroll:integrity:migrate": "node scripts/migrate-payroll-integrity.mjs",
- "release:admin:prepare": "node scripts/release-admin-web.mjs --prepare",
- "release:admin:verify": "node scripts/release-admin-web.mjs --verify",
- "test:admin-release": "node --test scripts/tests/admin-release.test.mjs",
- "test:lesson-workflow": "node --test scripts/tests/lesson-workflow.test.mjs",
- "lessons:migrate": "node scripts/migrate-lesson-workflow.mjs",
- "lessons:smoke": "node scripts/smoke-mobile-teaching-flow.mjs",
- "sync-worker:install-mac": "node scripts/install-direct-sync-launchagent.mjs",
- "test:direct-sync": "node --test scripts/tests/direct-nightly-sync.test.mjs scripts/tests/review-rewards.test.mjs",
- "test:server": "node --test --test-concurrency=2 scripts/tests/*.test.mjs",
- "app:actions:audit:local": "node scripts/audit-app-cloud-actions.mjs --local",
- "verify:local": "npm run test:ci && npm run test:server && npm run build && npm run cloud:validate && npm run app:actions:audit:local"
- },
- "private": true,
- "dependencies": {
- "@angular/animations": "20.3.33",
- "@angular/common": "20.3.33",
- "@angular/compiler": "20.3.33",
- "@angular/core": "20.3.33",
- "@angular/forms": "20.3.33",
- "@angular/platform-browser": "20.3.33",
- "@angular/platform-browser-dynamic": "20.3.33",
- "@angular/router": "20.3.33",
- "html2pdf.js": "0.14.0",
- "jspdf": "4.2.1",
- "lucide-angular": "1.0.0",
- "mustache": "^4.2.0",
- "rxjs": "~7.8.0",
- "tslib": "^2.3.0",
- "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
- "zone.js": "~0.15.1"
- },
- "devDependencies": {
- "@angular-devkit/build-angular": "20.3.39",
- "@angular/cli": "20.3.39",
- "@angular/compiler-cli": "20.3.33",
- "@electric-sql/pglite": "^0.5.8",
- "@types/jasmine": "~5.1.0",
- "@types/mustache": "^4.2.6",
- "jasmine-core": "~5.2.0",
- "karma": "~6.4.0",
- "karma-chrome-launcher": "~3.2.0",
- "karma-coverage": "~2.2.0",
- "karma-jasmine": "~5.1.0",
- "karma-jasmine-html-reporter": "~2.1.0",
- "typescript": "~5.9.3"
- },
- "overrides": {
- "webpack-dev-middleware": "7.4.5",
- "sockjs": {
- "uuid": "^11.1.1"
- }
- }
- }
|