{
  "name": "@bitwarden/directory-connector",
  "productName": "Bitwarden Directory Connector",
  "description": "Sync your user directory to your Bitwarden organization.",
  "version": "2025.9.0",
  "keywords": [
    "bitwarden",
    "password",
    "vault",
    "password manager"
  ],
  "author": "Bitwarden Inc. <hello@bitwarden.com> (https://bitwarden.com)",
  "homepage": "https://bitwarden.com",
  "repository": {
    "type": "git",
    "url": "https://github.com/bitwarden/directory-connector"
  },
  "license": "GPL-3.0",
  "main": "main.js",
  "scripts": {
    "sub:init": "git submodule update --init --recursive",
    "sub:update": "git submodule update --remote",
    "sub:pull": "git submodule foreach git pull origin master",
    "sub:commit": "npm run sub:pull && git commit -am \"update submodule\"",
    "preinstall": "npm run sub:init",
    "symlink:win": "rm -rf ./jslib && cmd /c mklink /J .\\jslib ..\\jslib",
    "symlink:mac": "npm run symlink:lin",
    "symlink:lin": "rm -rf ./jslib && ln -s ../jslib ./jslib",
    "rebuild": "electron-rebuild",
    "reset": "rimraf --glob ./node_modules/keytar/* && npm install",
    "lint": "eslint . && prettier --check .",
    "lint:fix": "eslint . --fix",
    "build": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main\" \"npm run build:renderer\"",
    "build:main": "webpack --config webpack.main.js",
    "build:renderer": "webpack --config webpack.renderer.js",
    "build:renderer:watch": "webpack --config webpack.renderer.js --watch",
    "build:dist": "npm run reset && npm run rebuild && npm run build",
    "build:cli": "webpack --config webpack.cli.js",
    "build:cli:watch": "webpack --config webpack.cli.js --watch",
    "build:cli:prod": "cross-env NODE_ENV=production webpack --config webpack.cli.js",
    "build:cli:prod:watch": "cross-env NODE_ENV=production webpack --config webpack.cli.js --watch",
    "electron": "npm run build:main && concurrently -k -n Main,Rend -c yellow,cyan \"electron --inspect=5858 ./build --watch\" \"npm run build:renderer:watch\"",
    "electron:ignore": "npm run build:main && concurrently -k -n Main,Rend -c yellow,cyan \"electron --inspect=5858 --ignore-certificate-errors ./build --watch\" \"npm run build:renderer:watch\"",
    "clean:dist": "rimraf --glob ./dist/*",
    "clean:dist:cli": "rimraf --glob ./dist-cli/*",
    "pack:lin": "npm run clean:dist && electron-builder --linux --x64 -p never",
    "pack:mac": "npm run clean:dist && electron-builder --mac -p never",
    "pack:win": "npm run clean:dist && electron-builder --win --x64 --ia32 -p never -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
    "pack:win:ci": "npm run clean:dist && electron-builder --win --x64 --ia32 -p never",
    "pack:cli": "npm run pack:cli:win | npm run pack:cli:mac | npm run pack:cli:lin",
    "pack:cli:win": "pkg ./src-cli --targets win-x64 --output ./dist-cli/windows/bwdc.exe",
    "pack:cli:mac": "pkg ./src-cli --targets macos-x64 --output ./dist-cli/macos/bwdc",
    "pack:cli:lin": "pkg ./src-cli --targets linux-x64 --output ./dist-cli/linux/bwdc",
    "dist:lin": "npm run build:dist && npm run pack:lin",
    "dist:mac": "npm run build:dist && npm run pack:mac",
    "dist:win": "npm run build:dist && npm run pack:win",
    "dist:win:ci": "npm run build && npm run pack:win:ci",
    "dist:cli": "npm run build:cli:prod && npm run clean:dist:cli && npm run pack:cli",
    "dist:cli:win": "npm run build:cli:prod && npm run clean:dist:cli && npm run pack:cli:win",
    "dist:cli:mac": "npm run build:cli:prod && npm run clean:dist:cli && npm run pack:cli:mac",
    "dist:cli:lin": "npm run build:cli:prod && npm run clean:dist:cli && npm run pack:cli:lin",
    "publish:lin": "npm run build:dist && npm run clean:dist && electron-builder --linux --x64 -p always",
    "publish:mac": "npm run build:dist && npm run clean:dist && electron-builder --mac -p always",
    "publish:win": "npm run build:dist && npm run clean:dist && electron-builder --win --x64 --ia32 -p always -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
    "prettier": "prettier --write .",
    "prepare": "husky install",
    "test": "jest --testPathIgnorePatterns=.integration.spec.ts",
    "test:watch": "jest --watch --testPathIgnorePatterns=.integration.spec.ts",
    "test:watch:all": "jest --watchAll --testPathIgnorePatterns=.integration.spec.ts",
    "test:integration": "jest .integration.spec.ts",
    "test:integration:watch": "jest .integration.spec.ts --watch",
    "test:integration:setup": "sh ./openldap/mkcert.sh && docker compose up -d",
    "test:types": "npx tsc --noEmit"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "19.2.15",
    "@angular-eslint/eslint-plugin-template": "19.8.0",
    "@angular-eslint/template-parser": "19.8.0",
    "@angular/compiler-cli": "19.2.14",
    "@electron/notarize": "2.5.0",
    "@electron/rebuild": "4.0.1",
    "@fluffy-spoon/substitute": "1.208.0",
    "@microsoft/microsoft-graph-types": "2.40.0",
    "@ngtools/webpack": "19.2.14",
    "@types/inquirer": "8.2.10",
    "@types/jest": "29.5.14",
    "@types/lowdb": "1.0.15",
    "@types/node": "22.18.1",
    "@types/node-fetch": "2.6.12",
    "@types/node-forge": "1.3.11",
    "@types/proper-lockfile": "4.1.4",
    "@types/tldjs": "2.3.4",
    "@typescript-eslint/eslint-plugin": "8.43.0",
    "@typescript-eslint/parser": "8.43.0",
    "@yao-pkg/pkg": "5.16.1",
    "clean-webpack-plugin": "4.0.0",
    "concurrently": "9.2.0",
    "copy-webpack-plugin": "13.0.0",
    "cross-env": "7.0.3",
    "css-loader": "7.1.2",
    "dotenv": "17.2.0",
    "electron": "38.1.0",
    "electron-builder": "24.13.3",
    "electron-log": "5.4.1",
    "electron-reload": "2.0.0-alpha.1",
    "electron-store": "8.2.0",
    "electron-updater": "6.6.2",
    "eslint": "8.57.1",
    "eslint-config-prettier": "10.1.5",
    "eslint-import-resolver-typescript": "4.4.4",
    "eslint-plugin-import": "2.32.0",
    "eslint-plugin-rxjs": "5.0.3",
    "eslint-plugin-rxjs-angular": "2.0.1",
    "form-data": "4.0.4",
    "html-loader": "5.1.0",
    "html-webpack-plugin": "5.6.3",
    "husky": "9.1.7",
    "jest": "29.7.0",
    "jest-junit": "16.0.0",
    "jest-mock-extended": "3.0.7",
    "jest-preset-angular": "14.6.0",
    "lint-staged": "16.1.2",
    "mini-css-extract-plugin": "2.9.2",
    "node-abi": "3.77.0",
    "node-forge": "1.3.1",
    "node-loader": "2.1.0",
    "prettier": "3.6.2",
    "rimraf": "6.0.1",
    "rxjs": "7.8.2",
    "sass": "1.92.1",
    "sass-loader": "16.0.5",
    "ts-jest": "29.4.1",
    "ts-loader": "9.5.2",
    "tsconfig-paths-webpack-plugin": "4.2.0",
    "type-fest": "4.41.0",
    "typescript": "5.8.3",
    "webpack": "5.101.0",
    "webpack-cli": "6.0.1",
    "webpack-merge": "6.0.1",
    "webpack-node-externals": "3.0.0",
    "zone.js": "0.15.1"
  },
  "dependencies": {
    "@angular/animations": "19.2.14",
    "@angular/cdk": "19.2.14",
    "@angular/cli": "19.2.14",
    "@angular/common": "19.2.14",
    "@angular/compiler": "19.2.14",
    "@angular/core": "19.2.14",
    "@angular/forms": "19.2.14",
    "@angular/platform-browser": "19.2.14",
    "@angular/platform-browser-dynamic": "19.2.14",
    "@angular/router": "19.2.14",
    "@microsoft/microsoft-graph-client": "3.0.7",
    "big-integer": "1.6.52",
    "bootstrap": "5.3.7",
    "browser-hrtime": "1.1.8",
    "chalk": "4.1.2",
    "commander": "14.0.0",
    "core-js": "3.44.0",
    "form-data": "4.0.4",
    "google-auth-library": "10.3.0",
    "googleapis": "153.0.0",
    "googleapis-common": "8.0.0",
    "https-proxy-agent": "7.0.6",
    "inquirer": "8.2.6",
    "keytar": "7.9.0",
    "ldapts": "8.0.1",
    "lowdb": "1.0.0",
    "ngx-toastr": "19.0.0",
    "node-fetch": "2.7.0",
    "parse5": "8.0.0",
    "proper-lockfile": "4.1.2",
    "rxjs": "7.8.2",
    "tldjs": "2.3.1",
    "uuid": "11.1.0",
    "zone.js": "0.15.1"
  },
  "engines": {
    "node": "~20",
    "npm": "~10"
  },
  "lint-staged": {
    "./!(jslib)**": "prettier --ignore-unknown --write",
    "*.ts": "eslint --fix"
  }
}
