{ $schema: "https://docs.renovatebot.com/renovate-schema.json", extends: ["github>bitwarden/renovate-config"], // Extends our default configuration for pinned dependencies enabledManagers: ["cargo", "github-actions", "npm"], packageRules: [ { // Group all Github Action minor updates together to reduce PR noise. groupName: "Minor github-actions updates", matchManagers: ["github-actions"], matchUpdateTypes: ["minor"], addLabels: ["hold"], }, { // Enable support for Rust toolchain updates. matchManagers: ["custom.regex"], matchDepNames: ["rust"], commitMessageTopic: "Rust", }, { // By default, we send patch updates to the Dependency Dashboard and do not generate a PR. // We want to generate PRs for a select number of dependencies to ensure we stay up to date on these. matchPackageNames: ["browserslist", "electron", "rxjs", "typescript", "webpack", "zone.js"], matchUpdateTypes: ["patch"], dependencyDashboardApproval: false, }, { // Disable major and minor updates for TypeScript and Zone.js because they are managed by Angular. matchPackageNames: ["typescript", "zone.js"], matchUpdateTypes: ["major", "minor"], description: "Determined by Angular", enabled: false, }, { // Disable major updates for core Angular dependencies because they are managed through ng update // when we decide to upgrade. matchSourceUrls: [ "https://github.com/angular-eslint/angular-eslint", "https://github.com/angular/angular-cli", "https://github.com/angular/angular", "https://github.com/angular/components", "https://github.com/ng-select/ng-select", ], matchUpdateTypes: ["major"], description: "Manually updated using ng update", enabled: false, }, { matchPackageNames: ["buffer", "bufferutil", "core-js", "process", "url", "util"], description: "Admin Console owned dependencies", commitMessagePrefix: "[deps] AC:", reviewers: ["team:team-admin-console-dev"], }, { matchPackageNames: ["qrious"], description: "Auth owned dependencies", commitMessagePrefix: "[deps] Auth:", reviewers: ["team:team-auth-dev"], }, { matchPackageNames: [ "@angular-eslint/schematics", "@eslint/compat", "@typescript-eslint/rule-tester", "@typescript-eslint/utils", "angular-eslint", "eslint-config-prettier", "eslint-import-resolver-typescript", "eslint-plugin-import", "eslint-plugin-rxjs-angular", "eslint-plugin-rxjs", "eslint-plugin-storybook", "eslint-plugin-tailwindcss", "eslint", "husky", "lint-staged", "typescript-eslint", ], description: "Architecture owned dependencies", commitMessagePrefix: "[deps] Architecture:", reviewers: ["team:dept-architecture"], }, { matchPackageNames: [ "@angular-eslint/schematics", "@eslint/compat", "@typescript-eslint/rule-tester", "@typescript-eslint/utils", "angular-eslint", "eslint-config-prettier", "eslint-import-resolver-typescript", "eslint-plugin-import", "eslint-plugin-rxjs-angular", "eslint-plugin-rxjs", "eslint-plugin-storybook", "eslint-plugin-tailwindcss", "eslint", "husky", "lint-staged", "typescript-eslint", ], groupName: "Minor and patch linting updates", matchUpdateTypes: ["minor", "patch"], }, { matchPackageNames: [ "@emotion/css", "@webcomponents/custom-elements", "bitwarden-russh", "bytes", "concurrently", "cross-env", "del", "ed25519", "lit", "@lit-labs/signals", "patch-package", "pkcs8", "prettier", "prettier-plugin-tailwindcss", "rimraf", "ssh-encoding", "ssh-key", "@storybook/web-components-webpack5", "tabbable", "tldts", "wait-on", ], description: "Autofill owned dependencies", commitMessagePrefix: "[deps] Autofill:", reviewers: ["team:team-autofill-dev"], }, { matchPackageNames: ["braintree-web-drop-in"], description: "Billing owned dependencies", commitMessagePrefix: "[deps] Billing:", reviewers: ["team:team-billing-dev"], }, { matchPackageNames: [ "@babel/core", "@babel/preset-env", "@bitwarden/sdk-internal", "@electron/fuses", "@electron/notarize", "@electron/rebuild", "@ngtools/webpack", "@nx/devkit", "@nx/eslint", "@nx/jest", "@nx/js", "@types/chrome", "@types/firefox-webext-browser", "@types/glob", "@types/lowdb", "@types/node", "@types/node-forge", "@types/node-ipc", "@yao-pkg/pkg", "anyhow", "arboard", "babel-loader", "base64-loader", "base64", "bindgen", "browserslist", "byteorder", "bytes", "core-foundation", "copy-webpack-plugin", "css-loader", "dirs", "electron", "electron-builder", "electron-log", "electron-reload", "electron-store", "electron-updater", "embed_plist", "futures", "hex", "homedir", "html-loader", "html-webpack-injector", "html-webpack-plugin", "interprocess", "json5", "keytar", "libc", "log", "lowdb", "mini-css-extract-plugin", "napi", "napi-build", "napi-derive", "node-forge", "node-ipc", "nx", "oo7", "oslog", "pin-project", "pkg", "postcss", "postcss-loader", "rand", "rxjs", "sass", "sass-loader", "scopeguard", "security-framework", "security-framework-sys", "semver", "serde", "serde_json", "simplelog", "style-loader", "sysinfo", "ts-node", "ts-loader", "tsconfig-paths-webpack-plugin", "type-fest", "typenum", "typescript", "typescript-strict-plugin", "uniffi", "webpack", "webpack-cli", "webpack-dev-server", "webpack-node-externals", "widestring", "windows", "windows-future", "windows-registry", "zbus", "zbus_polkit", ], description: "Platform owned dependencies", commitMessagePrefix: "[deps] Platform:", reviewers: ["team:team-platform-dev"], }, { // We need to group all napi-related packages together to avoid build errors caused by version incompatibilities. groupName: "napi", matchPackageNames: ["napi", "napi-build", "napi-derive"], }, { // We need to group all macOS/iOS binding-related packages together to avoid build errors caused by version incompatibilities. groupName: "macOS/iOS bindings", matchPackageNames: ["core-foundation", "security-framework", "security-framework-sys"], }, { // We need to group all zbus-related packages together to avoid build errors caused by version incompatibilities. groupName: "zbus", matchPackageNames: ["zbus", "zbus_polkit"], }, { // We group all webpack build-related minor and patch updates together to reduce PR noise. // We include patch updates here because we want PRs for webpack patch updates and it's in this group. matchPackageNames: [ "@babel/core", "@babel/preset-env", "babel-loader", "base64-loader", "browserslist", "copy-webpack-plugin", "css-loader", "html-loader", "html-webpack-injector", "html-webpack-plugin", "mini-css-extract-plugin", "postcss-loader", "postcss", "sass-loader", "sass", "style-loader", "ts-loader", "tsconfig-paths-webpack-plugin", "webpack-cli", "webpack-dev-server", "webpack-node-externals", "webpack", ], description: "webpack-related build dependencies", groupName: "Minor and patch webpack updates", matchUpdateTypes: ["minor", "patch"], }, { matchPackageNames: [ "@angular-devkit/build-angular", "@angular/animations", "@angular/cdk", "@angular/cli", "@angular/common", "@angular/compiler-cli", "@angular/compiler", "@angular/core", "@angular/forms", "@angular/platform-browser-dynamic", "@angular/platform-browser", "@angular/platform", "@angular/router", "axe-playwright", "@compodoc/compodoc", "@ng-select/ng-select", "@storybook/addon-a11y", "@storybook/addon-actions", "@storybook/addon-designs", "@storybook/addon-essentials", "@storybook/addon-interactions", "@storybook/addon-links", "@storybook/test-runner", "@storybook/addon-themes", "@storybook/angular", "@storybook/manager-api", "@storybook/theming", "@types/react", "autoprefixer", "bootstrap", "chromatic", "ngx-toastr", "react", "react-dom", "remark-gfm", "storybook", "tailwindcss", "zone.js", ], description: "UI Foundation owned dependencies", commitMessagePrefix: "[deps] UI Foundation:", reviewers: ["team:team-ui-foundation"], }, { matchPackageNames: [ "@types/jest", "jest-junit", "jest-mock-extended", "jest-preset-angular", "jest-diff", "ts-jest", ], description: "Secrets Manager owned dependencies", commitMessagePrefix: "[deps] SM:", reviewers: ["team:team-secrets-manager-dev"], }, { // We need to update several Jest-related packages together, for version compatibility. groupName: "jest", matchPackageNames: ["@types/jest", "jest", "ts-jest", "jest-preset-angular"], }, { matchPackageNames: [ "@microsoft/signalr-protocol-msgpack", "@microsoft/signalr", "@types/jsdom", "@types/papaparse", "@types/zxcvbn", "jsdom", "jszip", "oidc-client-ts", "papaparse", "utf-8-validate", "zxcvbn", ], description: "Tools owned dependencies", commitMessagePrefix: "[deps] Tools:", reviewers: ["team:team-tools-dev"], }, { matchPackageNames: [ "@koa/multer", "@koa/router", "@types/inquirer", "@types/koa", "@types/koa__multer", "@types/koa__router", "@types/koa-bodyparser", "@types/koa-json", "@types/lunr", "@types/node-fetch", "@types/proper-lockfile", "@types/retry", "chalk", "commander", "form-data", "https-proxy-agent", "inquirer", "koa", "koa-bodyparser", "koa-json", "lunr", "multer", "node-fetch", "open", "proper-lockfile", "qrcode-parser", ], description: "Vault owned dependencies", commitMessagePrefix: "[deps] Vault:", reviewers: ["team:team-vault-dev"], }, { matchPackageNames: [ "@types/argon2-browser", "aes", "argon2", "argon2-browser", "big-integer", "cbc", "rsa", "russh-cryptovec", "sha2", ], description: "Key Management owned dependencies", commitMessagePrefix: "[deps] KM:", reviewers: ["team:team-key-management-dev"], }, { // Any versions of lowdb above 1.0.0 are not compatible with CommonJS. matchPackageNames: ["lowdb"], allowedVersions: "1.0.0", description: "Higher versions of lowdb are not compatible with CommonJS", }, { // Pin types as well since we are not upgrading past v1 (and also v2+ does not need separate types). matchPackageNames: ["@types/lowdb"], allowedVersions: "< 2.0.0", description: "Higher versions of lowdb do not need separate types", }, ], ignoreDeps: ["@types/koa-bodyparser", "bootstrap", "node-ipc", "@bitwarden/sdk-internal"], }