{ "name": "@bitwarden/directory-connector", "productName": "Bitwarden Directory Connector", "description": "Sync your user directory to your Bitwarden organization.", "version": "2025.11.0", "keywords": [ "bitwarden", "password", "vault", "password manager" ], "author": "Bitwarden Inc. (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 ./utils/openldap/mkcert.sh && docker compose up -d", "test:types": "npx tsc --noEmit" }, "devDependencies": { "@angular-devkit/build-angular": "20.3.3", "@angular-eslint/eslint-plugin-template": "20.6.0", "@angular-eslint/template-parser": "20.6.0", "@angular/compiler-cli": "20.3.15", "@electron/notarize": "2.5.0", "@electron/rebuild": "4.0.1", "@fluffy-spoon/substitute": "1.208.0", "@microsoft/microsoft-graph-types": "2.43.1", "@ngtools/webpack": "20.3.3", "@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.46.0", "@typescript-eslint/parser": "8.46.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": "39.2.1", "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", "glob": "11.1.0", "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.2.6", "mini-css-extract-plugin": "2.9.2", "minimatch": "5.1.2", "node-forge": "1.3.2", "node-loader": "2.1.0", "prettier": "3.6.2", "rimraf": "6.1.0", "rxjs": "7.8.2", "sass": "1.93.2", "sass-loader": "16.0.5", "ts-jest": "29.4.1", "ts-loader": "9.5.2", "tsconfig-paths-webpack-plugin": "4.2.0", "type-fest": "5.0.1", "typescript": "5.8.3", "webpack": "5.102.1", "webpack-cli": "6.0.1", "webpack-merge": "6.0.1", "webpack-node-externals": "3.0.0", "zone.js": "0.15.1" }, "dependencies": { "@angular/animations": "20.3.15", "@angular/cdk": "20.2.14", "@angular/cli": "20.3.3", "@angular/common": "20.3.15", "@angular/compiler": "20.3.15", "@angular/core": "20.3.15", "@angular/forms": "20.3.15", "@angular/platform-browser": "20.3.15", "@angular/platform-browser-dynamic": "20.3.15", "@angular/router": "20.3.15", "@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", "form-data": "4.0.4", "googleapis": "149.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.1.0", "node-fetch": "3.3.2", "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" } }