{ "private": true, "scripts": { "generate-graphql-api": "bundle exec rails generate zammad:graphql_introspection > app/graphql/graphql_introspection.json && npx graphql-codegen -c .graphql_code_generator.js", "generate-setting-types": "bundle exec rails generate zammad:setting_types", "dev": "RAILS_ENV=development forego start -f Procfile.dev", "dev:https": "VITE_RUBY_HOST=0.0.0.0 VITE_RUBY_HTTPS=true RAILS_ENV=development forego start -f Procfile.dev-https", "i18n": "rails generate zammad:translation_catalog", "lint": "vue-tsc --noEmit && eslint --cache --cache-location ./tmp/eslintcache.js --cache-strategy content -c .eslintrc.js --ext .js,.ts,.vue app/frontend/ .eslint-plugin-zammad/", "lint:fix": "yarn lint -- --fix", "lint:css": "stylelint **/*.{css,vue,scss}", "lint:css:fix": "stylelint **/*.{css,vue,scss} --fix", "test": "VTL_SKIP_AUTO_CLEANUP=true TZ=utc vitest", "test:ct": "CY_OPEN=true yarn --cwd ./.cypress cypress open --component --project ../ --config-file .cypress/cypress.config.mjs", "test:ci:ct": "CI=true yarn --cwd ./.cypress cypress run --component --project ../ --config-file .cypress/cypress.config.mjs --browser electron", "cypress:snapshots": "sh .cypress/visual-regression/snapshots.sh", "cypress:install": "yarn --cwd ./.cypress install" }, "engines": { "node": ">=18.12.0" }, "packageManager": "yarn@1.22.22", "devDependencies": { "@faker-js/faker": "^8.4.1", "@graphql-codegen/cli": "^5.0.2", "@graphql-codegen/introspection": "^4.0.3", "@graphql-codegen/near-operation-file-preset": "^3.0.0", "@graphql-codegen/typescript": "^4.0.6", "@graphql-codegen/typescript-operations": "^4.2.0", "@graphql-codegen/typescript-vue-apollo": "^4.1.1", "@pinia/testing": "^0.1.3", "@testing-library/jest-dom": "^6.4.2", "@testing-library/user-event": "^14.5.2", "@testing-library/vue": "^8.0.3", "@types/lodash-es": "^4.17.12", "@types/rails__actioncable": "^6.1.10", "@types/sinonjs__fake-timers": "^8.1.5", "@types/ua-parser-js": "^0.7.39", "@types/uuid": "^9.0.8", "@typescript-eslint/eslint-plugin": "^7.3.1", "@typescript-eslint/parser": "^7.3.1", "@vitejs/plugin-vue": "^5.0.4", "@vue/eslint-config-prettier": "^9.0.0", "@vue/eslint-config-typescript": "^13.0.0", "@vue/test-utils": "^2.4.5", "autoprefixer": "^10.4.18", "eslint": "^8.57.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-prettier-vue": "^5.0.0", "eslint-plugin-security": "^2.1.1", "eslint-plugin-sonarjs": "^0.24.0", "eslint-plugin-vue": "^9.23.0", "eslint-plugin-zammad": "file:.eslint-plugin-zammad", "jsdom": "^24.0.0", "minimatch": "^9.0.3", "mock-apollo-client": "^1.2.1", "postcss": "^8.4.36", "postcss-html": "^1.6.0", "prettier": "3.2.5", "prettier-plugin-tailwindcss": "^0.5.12", "regenerator-runtime": "^0.14.1", "sass": "^1.72.0", "stylelint": "^16.2.1", "stylelint-config-prettier": "^9.0.5", "stylelint-config-recommended-vue": "^1.5.0", "stylelint-config-standard": "^36.0.0", "stylelint-config-standard-scss": "^13.0.0", "stylelint-prettier": "^5.0.0", "stylelint-scss": "^6.2.1", "svg-baker": "^1.7.0", "svgo": "^3.2.0", "tailwindcss": "^3.4.1", "tailwindcss-unimportant": "^2.1.1", "timezone-mock": "^1.3.6", "type-fest": "^4.12.0", "typescript": "^5.4.2", "vite": "^5.2.6", "vite-plugin-pwa": "^0.19.7", "vite-plugin-ruby": "^5.0.0", "vitest": "^1.4.0", "vitest-axe": "^0.1.0", "vue-tsc": "^2.0.6" }, "dependencies": { "@apollo/client": "^3.9.9", "@formkit/core": "^1.6.0", "@formkit/dev": "^1.6.0", "@formkit/i18n": "^1.6.0", "@formkit/inputs": "^1.6.0", "@formkit/rules": "^1.6.0", "@formkit/tailwindcss": "^1.6.0", "@formkit/themes": "^1.6.0", "@formkit/utils": "^1.6.0", "@formkit/validation": "^1.6.0", "@formkit/vue": "^1.6.0", "@github/webauthn-json": "^2.1.1", "@rails/actioncable": "^7.0.8", "@sinonjs/fake-timers": "^11.2.2", "@tiptap/core": "^2.2.4", "@tiptap/extension-blockquote": "^2.2.4", "@tiptap/extension-character-count": "^2.2.4", "@tiptap/extension-hard-break": "^2.2.4", "@tiptap/extension-image": "^2.2.4", "@tiptap/extension-link": "^2.2.4", "@tiptap/extension-list-item": "^2.2.4", "@tiptap/extension-mention": "^2.2.4", "@tiptap/extension-ordered-list": "^2.2.4", "@tiptap/extension-paragraph": "^2.2.4", "@tiptap/extension-strike": "^2.2.4", "@tiptap/extension-underline": "^2.2.4", "@tiptap/pm": "^2.2.4", "@tiptap/starter-kit": "^2.2.4", "@tiptap/suggestion": "^2.2.4", "@tiptap/vue-3": "^2.2.4", "@vue/apollo-composable": "^4.0.2", "@vueuse/core": "^10.9.0", "@vueuse/router": "^10.9.0", "@vueuse/shared": "^10.9.0", "async-mutex": "^0.5.0", "daisyui": "^4.7.3", "flatpickr": "^4.6.13", "graphql": "^16.8.1", "graphql-ruby-client": "^1.13.3", "graphql-tag": "^2.12.6", "linkify-string": "^4.1.3", "linkifyjs": "^4.1.3", "lodash-es": "^4.17.21", "loglevel": "^1.9.1", "mitt": "^3.0.1", "pinia": "^2.1.7", "tippy.js": "^6.3.7", "tiptap-text-direction": "^0.3.1", "ua-parser-js": "^1.0.37", "uuid": "^9.0.1", "vue": "^3.4.21", "vue-advanced-cropper": "^2.8.8", "vue-easy-lightbox": "1.19.0", "vue-router": "^4.3.0", "vue3-draggable-resizable": "^1.6.5", "vuedraggable": "^4.1.0", "workbox-core": "^7.0.0", "workbox-precaching": "^7.0.0", "workbox-window": "^7.0.0" }, "resolutions": { "loader-utils": "^3.2.1", "postcss": "^8.4.36", "stylelint-config-recommended": "^14.0.0", "prosemirror-model": "1.19.4", "prosemirror-state": "1.4.3", "prosemirror-transform": "1.8.0", "prosemirror-view": "1.33.3" } }