{ "name": "truckwashdashboardsfrontend", "version": "0.0.0", "private": true, "type": "module", "scripts": { "dev": "vite", "build": "vite build", "build:dev": "vite build --mode development", "format:tests": "prettier --write \"tests/**/*.{js,ts}\"", "format:tests:commit": "node scripts/pre-commit-format-tests.mjs", "format:tests:check": "prettier --check \"tests/**/*.{js,ts}\"", "prepare": "node scripts/prepare-husky.mjs", "postinstall": "node scripts/postinstall-sync-playwright-root-links.mjs", "preview": "vite preview", "preview:prod": "npm run build && npm run preview -- --host 127.0.0.1 --port 4173", "text:fix-encoding": "node scripts/text-encoding.mjs fix", "text:check-encoding": "node scripts/text-encoding.mjs check", "i18n:v2:compile": "node scripts/i18n-v2-compile-source.mjs", "i18n:v2:source-check": "node scripts/i18n-v2-compile-source.mjs --check", "i18n:v2:check": "npm run i18n:v2:source-check && npm run i18n:v2:global-template-audit && npm run i18n:v2:template-dedupe-audit && npm run i18n:v2:word-audit", "i18n:v2:word-audit": "node scripts/i18n-v2-word-dedupe.mjs", "i18n:v2:word-dedupe": "node scripts/i18n-v2-word-dedupe.mjs --apply", "i18n:v2:global-template-audit": "node scripts/i18n-v2-globalize-templates.mjs", "i18n:v2:globalize-templates": "node scripts/i18n-v2-globalize-templates.mjs --apply", "i18n:v2:template-dedupe-audit": "node scripts/i18n-v2-template-dedupe.mjs", "i18n:v2:template-dedupe": "node scripts/i18n-v2-template-dedupe.mjs --apply", "test:unit": "npm run text:check-encoding && npm run test:unit:fast && npm run test:unit:serial", "test:unit:fast": "node scripts/run-vitest-unit-fast.mjs", "test:unit:serial": "node scripts/run-vitest-unit-batches.mjs --from-list tests/unit/serial-tests.txt", "test:unit:single": "vitest run", "test:e2e": "npm run test:e2e:matrix --", "test:e2e:matrix": "playwright test", "test:e2e:pr": "node scripts/run-playwright-pr.mjs", "test:e2e:changed": "node scripts/run-playwright-pr.mjs --changed-only", "test:e2e:i18n:views": "playwright test tests/e2e/i18n.views.spec.ts --project=chromium-desktop", "test:e2e:ci": "node scripts/run-playwright-ci-parallel.mjs", "test:e2e:full:slice": "node scripts/run-playwright-full-slice.mjs", "test:e2e:ci:serial": "playwright test --reporter=line,html", "test:e2e:batched:chromium": "node scripts/run-playwright-batched-chromium.mjs", "test:e2e:batched:chromium:rerun-failed": "node scripts/run-playwright-batched-chromium.mjs --rerun-failed", "test:e2e:smoke": "playwright test --grep @smoke --project=chromium-desktop --project=chromium-mobile", "test:e2e:prod": "playwright test --config=playwright.prod.config.ts", "test:e2e:live": "playwright test --config=playwright.live.config.ts", "test:e2e:live:public": "playwright test --config=playwright.live.config.ts --grep @public-live", "test:e2e:live:roles": "playwright test --config=playwright.live.config.ts --grep @role-live", "test:e2e:release": "npm run test:e2e:prod && npm run test:e2e:live", "release:verify-upload": "node scripts/release/verify-upload.mjs", "release:update-server-version": "node scripts/release/update-server-version.mjs", "release:upload:lftp": "bash scripts/release/upload-dist-lftp.sh", "test:e2e:pos-mobile-live": "node -e \"const { spawnSync } = require('child_process'); const result = spawnSync('npx', ['playwright', 'test', 'tests/e2e/adminModulePosMobileOrderFlow.spec.ts', '--project=chromium-mobile'], { stdio: 'inherit', shell: true, env: { ...process.env, PLAYWRIGHT_LIVE: '1' } }); process.exit(result.status ?? 1);\"", "test:all": "npm run test:unit && npm run test:e2e:pr", "twa:build": "bubblewrap build", "twa:update": "bubblewrap update" }, "dependencies": { "@azure/msal-browser": "^4.12.0", "@bubblewrap/cli": "^1.23.0", "@creativebulma/bulma-badge": "^1.0.1", "@fullcalendar/core": "^6.1.17", "@fullcalendar/daygrid": "^6.1.17", "@fullcalendar/interaction": "^6.1.17", "@fullcalendar/list": "^6.1.17", "@fullcalendar/timegrid": "^6.1.17", "@fullcalendar/vue3": "^6.1.17", "@popperjs/core": "^2.11.8", "@sweetalert2/theme-bulma": "^5.0.18", "@sweetalert2/theme-dark": "^5.0.18", "@vue-flow/core": "^1.43.1", "@vueuse/core": "^12.7.0", "@vueuse/head": "^2.0.0", "@vueuse/integrations": "^13.7.0", "@xterm/addon-fit": "^0.11.0", "animate.css": "^4.1.1", "apexcharts": "^5.10.4", "axios": "1.13.5", "buefy": "^3.0.3", "bulma": "^1.0.2", "bulma-block-list": "^1.1.0", "bulma-calendar": "^7.1.1", "bulma-list": "^3.0.0", "bulma-o-steps": "^1.1.0", "bulma-pageloader": "^0.3.0", "bulma-quickview": "^2.0.0", "bulma-switch": "^2.0.4", "chart.js": "^4.4.7", "dayspan-vuetify": "^0.4.0", "flow": "^0.2.3", "html2canvas": "^1.4.1", "qrcode": "^1.5.4", "sass": "^1.81.1", "sweetalert2": "11.22.4", "tesseract.js": "^6.0.1", "toastify-js": "^1.12.0", "vite-plugin-singlefile": "^2.1.0", "vue": "^3.5.12", "vue-cal": "^5.0.1-rc.20", "vue-chartjs": "^5.3.2", "vue-i18n": "^9.14.5", "vue-popperjs": "^2.3.0", "vue-qrcode-reader": "^5.7.3", "vue-router": "^4.5.0", "vue-toast-notification": "^3.1.3", "vue3-apexcharts": "^1.11.1", "vue3-cookies": "^1.0.6", "vuex": "^4.1.0", "xlsx": "^0.18.5", "xterm": "^5.3.0" }, "devDependencies": { "@creativebulma/bulma-divider": "^1.1.0", "@event-calendar/core": "^4.1.0", "@playwright/test": "^1.58.2", "@types/event-calendar__core": "^3.7.0", "@vitejs/plugin-vue": "^6.0.5", "@vitejs/plugin-vue-jsx": "^5.1.5", "@vue/test-utils": "^2.4.6", "husky": "^9.1.7", "jsdom": "^29.0.0", "otpauth": "^9.5.0", "prettier": "2.8.8", "sass-embedded": "^1.81.0", "vite": "7.1.11", "vite-plugin-pwa": "^1.0.2", "vite-plugin-vue-devtools": "^7.5.4", "vitest": "^2.1.9" } }