{
  "name": "twofactor_totp",
  "description": "Nextcloud TwoFactor TOTP",
  "version": "15.0.0-dev.0",
  "author": "Christoph Wurst <christoph@winzerhof-wurst.at>",
  "license": "AGPL-3.0-only",
  "private": true,
  "scripts": {
    "build": "webpack --node-env production --progress",
    "postbuild": "build-js/npm-post-build.sh",
    "dev": "webpack --node-env development --progress",
    "watch": "webpack --node-env development --progress --watch",
    "lint": "eslint --ext .js,.vue src",
    "lint:fix": "eslint --ext .js,.vue src --fix",
    "stylelint": "stylelint css/*.css css/*.scss src/**/*.scss src/**/*.vue",
    "stylelint:fix": "stylelint css/*.css css/*.scss src/**/*.scss src/**/*.vue --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:e2e": "playwright test",
    "test:e2e:ui": "playwright test --ui"
  },
  "dependencies": {
    "@chenfengyuan/vue-qrcode": "^1.0.2",
    "@nextcloud/auth": "^2.5.3",
    "@nextcloud/axios": "^2.5.2",
    "@nextcloud/initial-state": "^3.0.0",
    "@nextcloud/logger": "^3.0.3",
    "@nextcloud/password-confirmation": "^6",
    "@nextcloud/router": "^3.1.0",
    "vue": "^2.7.16",
    "vuex": "^3.6.2"
  },
  "browserslist": [
    "extends @nextcloud/browserslist-config"
  ],
  "engines": {
    "node": "^24.0.0",
    "npm": "^11.3.0"
  },
  "jshintConfig": {
    "esversion": 6
  },
  "devDependencies": {
    "@nextcloud/babel-config": "^1.3.0",
    "@nextcloud/browserslist-config": "^3.1.2",
    "@nextcloud/eslint-config": "^8.4.2",
    "@nextcloud/stylelint-config": "^2.4.0",
    "@nextcloud/webpack-vue-config": "^7.0.2",
    "@playwright/test": "^1.57.0",
    "@vue/test-utils": "^1.3.6",
    "@vue/vue2-jest": "^29.2.6",
    "babel-core": "^7.0.0-bridge.0",
    "babel-jest": "^29.7.0",
    "chai": "^4.5.0",
    "eslint-plugin-chai-friendly": "^1.1.0",
    "jest": "^29.7.0",
    "jest-environment-jsdom": "^29.7.0",
    "jest-transform-stub": "^2.0.0",
    "totp-generator": "^2.0.0",
    "vue-loader": "^15.11.1"
  },
  "prettier": {
    "singleQuote": true,
    "semi": false,
    "useTabs": true,
    "tabWidth": 4,
    "trailingComma": "es5"
  },
  "jest": {
    "verbose": true,
    "moduleFileExtensions": [
      "js",
      "vue"
    ],
    "moduleNameMapper": {
      "^@nextcloud/password-confirmation$": "<rootDir>/node_modules/@nextcloud/password-confirmation/dist/index.mjs",
      "^@nextcloud/vue/components/NcDialog$": "<rootDir>/node_modules/@nextcloud/vue/dist/components/NcDialog/index.mjs",
      "^@nextcloud/vue/components/NcPasswordField$": "<rootDir>/node_modules/@nextcloud/vue/dist/components/NcPasswordField/index.mjs",
      "^@nextcloud/vue/functions/dialog$": "<rootDir>/node_modules/@nextcloud/vue/dist/functions/dialog/index.mjs"
    },
    "setupFilesAfterEnv": [
      "./src/tests/jest.setup.js"
    ],
    "testEnvironment": "jest-environment-jsdom",
    "transform": {
      ".*\\.(m?js)$": "babel-jest",
      ".*\\.(vue)$": "@vue/vue2-jest",
      ".*\\.(css|styl|less|sass|scss|jpg|jpeg|png|svg|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|avif)$": "jest-transform-stub"
    },
    "transformIgnorePatterns": [
      "/node_modules/(?!(?:@nextcloud/vue|@nextcloud/auth|@nextcloud/browser-storage|@nextcloud/initial-state|@nextcloud/password-confirmation|@vueuse/core|@vueuse/shared|debounce)/)"
    ]
  }
}
