Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 Jul 2023 07:21:46 GMT
From:      Hiroki Tagato <tagattie@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: d2062f378a53 - main - security/bitwarden-cli: add port: Bitwarden client command-line interface
Message-ID:  <202307310721.36V7LkP6045205@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d2062f378a53d324aa503c8a1f1b3150d519b4cd

commit d2062f378a53d324aa503c8a1f1b3150d519b4cd
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2023-07-31 07:11:13 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2023-07-31 07:21:29 +0000

    security/bitwarden-cli: add port: Bitwarden client command-line interface
    
    The Bitwarden CLI is a powerful, full-featured command-line interface
    (CLI) tool to access and manage a Bitwarden vault. The CLI is written
    with TypeScript and Node.js and can be run on Windows, macOS, and
    Linux distributions.
    
    WWW: https://bitwarden.com
    
    Requested by:   000.fbsd@quip.cz (via ports)
    Tested by:      000.fbsd@quip.cz
---
 security/Makefile                                  |     1 +
 security/bitwarden-cli/Makefile                    |   132 +
 security/bitwarden-cli/distinfo                    |     7 +
 .../files/packagejsons/apps/browser/package.json   |    25 +
 .../files/packagejsons/apps/cli/package.json       |    77 +
 .../apps/desktop/desktop_native/package.json       |    31 +
 .../files/packagejsons/apps/desktop/package.json   |    58 +
 .../files/packagejsons/apps/web/package.json       |    29 +
 .../files/packagejsons/libs/angular/package.json   |    20 +
 .../files/packagejsons/libs/common/package.json    |    20 +
 .../packagejsons/libs/components/package.json      |    18 +
 .../files/packagejsons/libs/exporter/package.json  |    23 +
 .../files/packagejsons/libs/importer/package.json  |    24 +
 .../files/packagejsons/libs/node/package.json      |    23 +
 .../files/packagejsons/package-lock.json           | 36091 +++++++++++++++++++
 .../bitwarden-cli/files/packagejsons/package.json  |   221 +
 ...platform_services_cli-platform-utils.service.ts |    20 +
 security/bitwarden-cli/pkg-descr                   |     4 +
 18 files changed, 36824 insertions(+)

diff --git a/security/Makefile b/security/Makefile
index dfc527001195..6dedaf06810f 100644
--- a/security/Makefile
+++ b/security/Makefile
@@ -53,6 +53,7 @@
     SUBDIR += belier
     SUBDIR += bfbtester
     SUBDIR += binwalk
+    SUBDIR += bitwarden-cli
     SUBDIR += boringssl
     SUBDIR += botan2
     SUBDIR += bruteblock
diff --git a/security/bitwarden-cli/Makefile b/security/bitwarden-cli/Makefile
new file mode 100644
index 000000000000..37f08ddfd0ed
--- /dev/null
+++ b/security/bitwarden-cli/Makefile
@@ -0,0 +1,132 @@
+PORTNAME=	bitwarden-cli
+DISTVERSIONPREFIX=	cli-v
+DISTVERSION=	2023.7.0
+CATEGORIES=	security
+MASTER_SITES=	https://nodejs.org/dist/v${PKG_NODE_VER}/:node
+DISTFILES=	node-v${PKG_NODE_VER}${EXTRACT_SUFX}:node \
+		${PREFETCH_FILE}:prefetch
+
+MAINTAINER=	tagattie@FreeBSD.org
+COMMENT=	Bitwarden client command-line interface
+WWW=		https://bitwarden.com
+
+LICENSE=	BITWARDEN GPLv3
+LICENSE_COMB=	multi
+LICENSE_NAME_BITWARDEN=	BITWARDEN LICENSE AGREEMENT
+LICENSE_FILE_BITWARDEN=	${WRKSRC}/LICENSE_BITWARDEN.txt
+LICENSE_FILE_GPLv3=	${WRKSRC}/LICENSE_GPL.txt
+LICENSE_PERMS_BITWARDEN=none
+
+ONLY_FOR_ARCHS=	aarch64 amd64
+
+FETCH_DEPENDS=	npm:www/npm${NODEJS_SUFFIX}
+BUILD_DEPENDS=	npm:www/npm${NODEJS_SUFFIX}
+LIB_DEPENDS=	libbrotlidec.so:archivers/brotli \
+		libicui18n.so:devel/icu \
+		libuv.so:devel/libuv \
+		libcares.so:dns/c-ares \
+		libnghttp2.so:www/libnghttp2
+RUN_DEPENDS=	xdg-open:devel/xdg-utils \
+		ca_root_nss>0:security/ca_root_nss
+TEST_DEPENDS=	npm:www/npm${NODEJS_SUFFIX}
+
+USES=		gmake localbase:ldflags nodejs:18,build pkgconfig \
+		python:build ssl
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	bitwarden
+GH_PROJECT=	clients
+
+BUILD_WRKSRC=	${WRKSRC}/apps/cli
+
+PLIST_FILES=	bin/bw \
+		share/zsh/site-functions/_bw
+
+PORTDOCS=	CONTRIBUTING.md README.md SECURITY.md
+
+OPTIONS_DEFINE=	DOCS
+
+PREFETCH_FILE=	${PKGNAME}-node-modules${EXTRACT_SUFX}
+PREFETCH_TIMESTAMP=	1690268784
+PKG_NODE_VER=	18.15.0
+PKG_FETCH_VER=	3.5
+PKG_NODE_CONFIGURE_ARGS=--openssl-use-def-ca-store \
+			--shared-brotli \
+			--shared-cares \
+			--shared-libuv \
+			--shared-nghttp2 \
+			--shared-openssl \
+			--shared-zlib \
+			--with-intl=system-icu
+NODE_ARCH=	${ARCH:S/aarch64/arm64/:S/amd64/x64/:S/i386/ia32/}
+
+pre-fetch:
+	if [ ! -f ${DISTDIR}/${PREFETCH_FILE} ]; then \
+		${MKDIR} ${WRKDIR}/node-modules-cache; \
+		${CP} -R ${FILESDIR}/packagejsons/* ${WRKDIR}/node-modules-cache; \
+		cd ${WRKDIR}/node-modules-cache && \
+		${SETENV} HOME=${WRKDIR} npm ci --ignore-scripts --no-progress; \
+		${FIND} ${WRKDIR}/node-modules-cache -depth 1 -print | \
+			${GREP} -v node_modules | ${XARGS} ${RM} -r; \
+		${FIND} ${WRKDIR}/node-modules-cache -type d -exec ${CHMOD} 755 {} ';'; \
+		cd ${WRKDIR}/node-modules-cache && \
+		${MTREE_CMD} -cbnSp node_modules | ${MTREE_CMD} -C | ${SED} \
+			-e 's:time=[0-9.]*:time=${PREFETCH_TIMESTAMP}.000000000:' \
+			-e 's:\([gu]id\)=[0-9]*:\1=0:g' \
+			-e 's:flags=.*:flags=none:' \
+			-e 's:^\.:./node_modules:' > node-modules-cache.mtree; \
+		${TAR} -cz --options 'gzip:!timestamp' \
+			-f ${DISTDIR}/${PREFETCH_FILE} \
+			@node-modules-cache.mtree; \
+		${RM} -r ${WRKDIR}; \
+	fi
+
+post-extract:
+	${MV} ${WRKDIR}/node_modules ${WRKSRC}
+
+post-patch:
+	# apply FreeBSD patches for node
+	for p in ${.CURDIR:H:H}/www/node${NODEJS_VERSION}/files/patch-*; do \
+		${PATCH} -s -p0 -d ${WRKDIR}/node-v${PKG_NODE_VER} < $${p}; \
+	done
+	# apply node patch from pkg-fetch
+	${PATCH} -s -p1 -d ${WRKDIR}/node-v${PKG_NODE_VER} < \
+		${WRKSRC}/node_modules/pkg-fetch/patches/node.v${PKG_NODE_VER}.cpp.patch
+
+pre-build:
+	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npm run postinstall
+	# build patched node for pkg
+	cd ${WRKDIR}/node-v${PKG_NODE_VER} && \
+		${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} ./configure ${PKG_NODE_CONFIGURE_ARGS} && \
+		${SETENV} ${MAKE_ENV} ${MAKE_CMD} -j ${MAKE_JOBS_NUMBER}
+	${MKDIR} ${WRKDIR}/.pkg-cache/v${PKG_FETCH_VER}
+	${MV} ${WRKDIR}/node-v${PKG_NODE_VER}/out/Release/node \
+		${WRKDIR}/.pkg-cache/v${PKG_FETCH_VER}/built-v${PKG_NODE_VER}-freebsd-${NODE_ARCH}
+	${STRIP_CMD} ${WRKDIR}/.pkg-cache/v${PKG_FETCH_VER}/built-v${PKG_NODE_VER}-freebsd-${NODE_ARCH}
+	# rebuild node modules against patched node
+	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ELECTRON_SKIP_BINARY_DOWNLOAD=1 \
+		npm rebuild --nodedir=${WRKDIR}/node-v${PKG_NODE_VER} --verbose
+
+do-build:
+	cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} \
+		npm run build:prod
+	cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} \
+		npx pkg . --targets node${NODEJS_VERSION}-freebsd-${NODE_ARCH} --output ./dist/bw
+	cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} \
+		./dist/bw completion --shell zsh > _bw
+
+do-install:
+	# don't strip executable since it causes error
+	${INSTALL_KLD} ${BUILD_WRKSRC}/dist/bw ${STAGEDIR}${PREFIX}/bin
+	@${MKDIR} ${STAGEDIR}${PREFIX}/share/zsh/site-functions
+	${INSTALL_DATA} ${BUILD_WRKSRC}/_bw \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions/_bw
+
+do-install-DOCS-on:
+	${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+do-test:
+	cd ${BUILD_WRKSRC} && ${SETENV} ${TEST_ENV} npm run test
+
+.include <bsd.port.mk>
diff --git a/security/bitwarden-cli/distinfo b/security/bitwarden-cli/distinfo
new file mode 100644
index 000000000000..5c55f95045ca
--- /dev/null
+++ b/security/bitwarden-cli/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1690273877
+SHA256 (node-v18.15.0.tar.gz) = d65c4c3ef3c8815bccda9502081a29458c7c80797db0763f8752f270a824ac2b
+SIZE (node-v18.15.0.tar.gz) = 85359314
+SHA256 (bitwarden-cli-2023.7.0-node-modules.tar.gz) = 797598d351cc1c47f49334eb753d8ab5e81da902c4bc7bc2f917fe7794afe283
+SIZE (bitwarden-cli-2023.7.0-node-modules.tar.gz) = 226744723
+SHA256 (bitwarden-clients-cli-v2023.7.0_GH0.tar.gz) = 293484f386707bd5c1014402a3c2fbbe9ad14e1c17f2a6b53676bdf0ad110868
+SIZE (bitwarden-clients-cli-v2023.7.0_GH0.tar.gz) = 18982338
diff --git a/security/bitwarden-cli/files/packagejsons/apps/browser/package.json b/security/bitwarden-cli/files/packagejsons/apps/browser/package.json
new file mode 100644
index 000000000000..5e1ad9bfd8da
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/apps/browser/package.json
@@ -0,0 +1,25 @@
+{
+  "name": "@bitwarden/browser",
+  "version": "2023.7.1",
+  "scripts": {
+    "build": "webpack",
+    "build:mv3": "cross-env MANIFEST_VERSION=3 webpack",
+    "build:watch": "webpack --watch",
+    "build:watch:mv3": "cross-env MANIFEST_VERSION=3 webpack --watch",
+    "build:watch:autofill": "cross-env AUTOFILL_VERSION=2 webpack --watch",
+    "build:prod": "cross-env NODE_ENV=production webpack",
+    "build:prod:watch": "cross-env NODE_ENV=production webpack --watch",
+    "dist": "npm run build:prod && gulp dist",
+    "dist:mv3": "cross-env MANIFEST_VERSION=3 npm run build:prod && cross-env MANIFEST_VERSION=3 gulp dist",
+    "dist:chrome": "npm run build:prod && gulp dist:chrome",
+    "dist:firefox": "npm run build:prod && gulp dist:firefox",
+    "dist:opera": "npm run build:prod && gulp dist:opera",
+    "dist:safari": "npm run build:prod && gulp dist:safari",
+    "dist:safari:mas": "npm run build:prod && gulp dist:safari:mas",
+    "dist:safari:masdev": "npm run build:prod && gulp dist:safari:masdev",
+    "dist:safari:dmg": "npm run build:prod && gulp dist:safari:dmg",
+    "test": "jest",
+    "test:watch": "jest --watch",
+    "test:watch:all": "jest --watchAll"
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/apps/cli/package.json b/security/bitwarden-cli/files/packagejsons/apps/cli/package.json
new file mode 100644
index 000000000000..7c6e50e22a27
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/apps/cli/package.json
@@ -0,0 +1,77 @@
+{
+  "name": "@bitwarden/cli",
+  "description": "A secure and free password manager for all of your devices.",
+  "version": "2023.7.0",
+  "keywords": [
+    "bitwarden",
+    "password",
+    "vault",
+    "password manager",
+    "cli"
+  ],
+  "author": "Bitwarden Inc. <hello@bitwarden.com> (https://bitwarden.com)",
+  "homepage": "https://bitwarden.com",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/bitwarden/clients"
+  },
+  "license": "GPL-3.0-only",
+  "scripts": {
+    "clean": "rimraf dist",
+    "build": "webpack",
+    "build:debug": "npm run build && node --inspect ./build/bw.js",
+    "build:watch": "webpack --watch",
+    "build:prod": "cross-env NODE_ENV=production webpack",
+    "build:prod:watch": "cross-env NODE_ENV=production webpack --watch",
+    "package": "npm run package:win && npm run package:mac && npm run package:lin",
+    "package:win": "pkg . --targets win-x64 --output ./dist/windows/bw.exe",
+    "package:mac": "pkg . --targets macos-x64 --output ./dist/macos/bw",
+    "package:lin": "pkg . --targets linux-x64 --output ./dist/linux/bw",
+    "debug": "node --inspect ./build/bw.js",
+    "dist": "npm run build:prod && npm run clean && npm run package",
+    "dist:win": "npm run build:prod && npm run clean && npm run package:win",
+    "dist:mac": "npm run build:prod && npm run clean && npm run package:mac",
+    "dist:lin": "npm run build:prod && npm run clean && npm run package:lin",
+    "publish:npm": "npm run build:prod && npm publish --access public",
+    "test": "jest",
+    "test:watch": "jest --watch",
+    "test:watch:all": "jest --watchAll"
+  },
+  "bin": {
+    "bw": "build/bw.js"
+  },
+  "pkg": {
+    "assets": [
+      "./build/**/*",
+      "../../node_modules/argon2/**/*"
+    ]
+  },
+  "dependencies": {
+    "@koa/multer": "3.0.2",
+    "@koa/router": "12.0.0",
+    "argon2": "0.30.3",
+    "big-integer": "1.6.51",
+    "browser-hrtime": "1.1.8",
+    "chalk": "4.1.2",
+    "commander": "7.2.0",
+    "form-data": "4.0.0",
+    "https-proxy-agent": "5.0.1",
+    "inquirer": "8.2.5",
+    "jsdom": "22.1.0",
+    "jszip": "3.10.1",
+    "koa": "2.14.2",
+    "koa-bodyparser": "4.4.0",
+    "koa-json": "2.0.2",
+    "lowdb": "1.0.0",
+    "lunr": "2.3.9",
+    "multer": "1.4.5-lts.1",
+    "node-fetch": "2.6.11",
+    "node-forge": "1.3.1",
+    "open": "8.4.2",
+    "papaparse": "5.4.1",
+    "proper-lockfile": "4.1.2",
+    "rxjs": "7.8.1",
+    "tldts": "6.0.5",
+    "zxcvbn": "4.4.2"
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/apps/desktop/desktop_native/package.json b/security/bitwarden-cli/files/packagejsons/apps/desktop/desktop_native/package.json
new file mode 100644
index 000000000000..fe37602768e3
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/apps/desktop/desktop_native/package.json
@@ -0,0 +1,31 @@
+{
+  "name": "@bitwarden/desktop-native",
+  "version": "0.1.0",
+  "description": "",
+  "scripts": {
+    "build": "napi build --release --platform --js false",
+    "build:debug": "napi build --platform --js false",
+    "build:cross-platform": "node build.js",
+    "test": "cargo test"
+  },
+  "author": "",
+  "license": "GPL-3.0",
+  "devDependencies": {
+    "@napi-rs/cli": "2.16.1"
+  },
+  "napi": {
+    "name": "desktop_native",
+    "triples": {
+      "defaults": true,
+      "additional": [
+        "x86_64-unknown-linux-musl",
+        "aarch64-unknown-linux-gnu",
+        "i686-pc-windows-msvc",
+        "armv7-unknown-linux-gnueabihf",
+        "aarch64-apple-darwin",
+        "aarch64-unknown-linux-musl",
+        "aarch64-pc-windows-msvc"
+      ]
+    }
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/apps/desktop/package.json b/security/bitwarden-cli/files/packagejsons/apps/desktop/package.json
new file mode 100644
index 000000000000..fa2ba4c22daf
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/apps/desktop/package.json
@@ -0,0 +1,58 @@
+{
+  "name": "@bitwarden/desktop",
+  "description": "A secure and free password manager for all of your devices.",
+  "version": "2023.7.0",
+  "keywords": [
+    "bitwarden",
+    "password",
+    "vault",
+    "password manager"
+  ],
+  "author": "Bitwarden Inc. <hello@bitwarden.com> (https://bitwarden.com)",
+  "homepage": "https://bitwarden.com",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/bitwarden/clients.git"
+  },
+  "license": "GPL-3.0",
+  "scripts": {
+    "postinstall": "electron-rebuild",
+    "start": "cross-env ELECTRON_IS_DEV=0 ELECTRON_NO_UPDATER=1 electron ./build",
+    "build-native": "cargo build --manifest-path=./desktop_native/Cargo.toml",
+    "build": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main\" \"npm run build:renderer\"",
+    "build:dev": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main:dev\" \"npm run build:renderer:dev\"",
+    "build:main": "cross-env NODE_ENV=production webpack --config webpack.main.js",
+    "build:main:dev": "npm run build-native && cross-env NODE_ENV=development webpack --config webpack.main.js",
+    "build:main:watch": "npm run build-native && cross-env NODE_ENV=development webpack --config webpack.main.js --watch",
+    "build:renderer": "cross-env NODE_ENV=production webpack --config webpack.renderer.js",
+    "build:renderer:dev": "cross-env NODE_ENV=development webpack --config webpack.renderer.js",
+    "build:renderer:watch": "cross-env NODE_ENV=development webpack --config webpack.renderer.js --watch",
+    "electron": "node ./scripts/start.js",
+    "electron:ignore": "node ./scripts/start.js --ignore-certificate-errors",
+    "clean:dist": "rimraf ./dist",
+    "pack:dir": "npm run clean:dist && electron-builder --dir -p never",
+    "pack:lin": "npm run clean:dist && electron-builder --linux --x64 -p never",
+    "pack:mac": "npm run clean:dist && electron-builder --mac --universal -p never",
+    "pack:mac:arm64": "npm run clean:dist && electron-builder --mac --arm64 -p never",
+    "pack:mac:mas": "npm run clean:dist && electron-builder --mac mas --universal -p never",
+    "pack:mac:masdev": "npm run clean:dist && electron-builder --mac mas-dev --universal -p never",
+    "pack:win": "npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p never -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
+    "pack:win:ci": "npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p never",
+    "dist:dir": "npm run build && npm run pack:dir",
+    "dist:lin": "npm run build && npm run pack:lin",
+    "dist:mac": "npm run build && npm run pack:mac",
+    "dist:mac:mas": "npm run build && npm run pack:mac:mas",
+    "dist:mac:masdev": "npm run build && npm run pack:mac:masdev",
+    "dist:win": "npm run build && npm run pack:win",
+    "dist:win:ci": "npm run build && npm run pack:win:ci",
+    "publish:lin": "npm run build && npm run clean:dist && electron-builder --linux --x64 -p always",
+    "publish:mac": "npm run build && npm run clean:dist && electron-builder --mac -p always",
+    "publish:mac:mas": "npm run dist:mac:mas && npm run upload:mas",
+    "publish:win": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
+    "publish:win:dev": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always",
+    "upload:mas": "xcrun altool --upload-app --type osx --file \"$(find ./dist/mas-universal/Bitwarden*.pkg)\" --username $APPLE_ID_USERNAME --password $APPLE_ID_PASSWORD",
+    "test": "jest",
+    "test:watch": "jest --watch",
+    "test:watch:all": "jest --watchAll"
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/apps/web/package.json b/security/bitwarden-cli/files/packagejsons/apps/web/package.json
new file mode 100644
index 000000000000..e2ec49d7327a
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/apps/web/package.json
@@ -0,0 +1,29 @@
+{
+  "name": "@bitwarden/web-vault",
+  "version": "2023.7.0",
+  "scripts": {
+    "build:oss": "webpack",
+    "build:bit": "webpack -c ../../bitwarden_license/bit-web/webpack.config.js",
+    "build:oss:watch": "webpack serve",
+    "build:bit:watch": "webpack serve -c ../../bitwarden_license/bit-web/webpack.config.js",
+    "build:bit:dev": "cross-env ENV=development npm run build:bit",
+    "build:bit:dev:analyze": "cross-env LOGGING=false webpack -c ../../bitwarden_license/bit-web/webpack.config.js --profile --json > stats.json && npx webpack-bundle-analyzer stats.json build/",
+    "build:bit:dev:watch": "cross-env ENV=development npm run build:bit:watch",
+    "build:bit:qa": "cross-env NODE_ENV=production ENV=qa npm run build:bit",
+    "build:bit:euprd": "cross-env NODE_ENV=production ENV=euprd npm run build:bit",
+    "build:bit:euqa": "cross-env NODE_ENV=production ENV=euqa npm run build:bit",
+    "build:bit:cloud": "cross-env NODE_ENV=production ENV=cloud npm run build:bit",
+    "build:oss:selfhost:watch": "cross-env ENV=selfhosted npm run build:oss:watch",
+    "build:bit:selfhost:watch": "cross-env ENV=selfhosted npm run build:bit:watch",
+    "build:oss:selfhost:prod": "cross-env ENV=selfhosted NODE_ENV=production npm run build:oss",
+    "build:bit:selfhost:prod": "cross-env ENV=selfhosted NODE_ENV=production npm run build:bit",
+    "build:bit:ee": "cross-env NODE_ENV=production ENV=ee npm run build:bit",
+    "clean:l10n": "git push origin --delete l10n_master",
+    "dist:bit:cloud": "npm run build:bit:cloud",
+    "dist:oss:selfhost": "npm run build:oss:selfhost:prod",
+    "dist:bit:selfhost": "npm run build:bit:selfhost:prod",
+    "test": "jest",
+    "test:watch": "jest --watch",
+    "test:watch:all": "jest --watchAll"
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/libs/angular/package.json b/security/bitwarden-cli/files/packagejsons/libs/angular/package.json
new file mode 100644
index 000000000000..322c8c826a2f
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/libs/angular/package.json
@@ -0,0 +1,20 @@
+{
+  "name": "@bitwarden/angular",
+  "version": "0.0.0",
+  "description": "Common code used across Bitwarden JavaScript projects.",
+  "keywords": [
+    "bitwarden"
+  ],
+  "author": "Bitwarden Inc.",
+  "homepage": "https://bitwarden.com",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/bitwarden/jslib"
+  },
+  "license": "GPL-3.0",
+  "scripts": {
+    "clean": "rimraf dist",
+    "build": "npm run clean && tsc",
+    "build:watch": "npm run clean && tsc -watch"
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/libs/common/package.json b/security/bitwarden-cli/files/packagejsons/libs/common/package.json
new file mode 100644
index 000000000000..5e0f5ae20c6d
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/libs/common/package.json
@@ -0,0 +1,20 @@
+{
+  "name": "@bitwarden/common",
+  "version": "0.0.0",
+  "description": "Common code used across Bitwarden JavaScript projects.",
+  "keywords": [
+    "bitwarden"
+  ],
+  "author": "Bitwarden Inc.",
+  "homepage": "https://bitwarden.com",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/bitwarden/jslib"
+  },
+  "license": "GPL-3.0",
+  "scripts": {
+    "clean": "rimraf dist",
+    "build": "npm run clean && tsc",
+    "build:watch": "npm run clean && tsc -watch"
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/libs/components/package.json b/security/bitwarden-cli/files/packagejsons/libs/components/package.json
new file mode 100644
index 000000000000..168c727a3e5c
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/libs/components/package.json
@@ -0,0 +1,18 @@
+{
+  "name": "@bitwarden/components",
+  "version": "0.0.0",
+  "sideEffects": false,
+  "scripts": {
+    "ng": "ng",
+    "start": "ng serve",
+    "build": "ng build",
+    "watch": "ng build --watch --configuration development",
+    "test": "jest",
+    "test:watch": "jest --watch",
+    "docs:json": "compodoc -p ./tsconfig.json -e json -d .",
+    "storybook": "npm run docs:json && start-storybook -p 6006",
+    "build-storybook": "npm run docs:json && build-storybook",
+    "chromatic": "chromatic --exit-zero-on-changes"
+  },
+  "private": true
+}
diff --git a/security/bitwarden-cli/files/packagejsons/libs/exporter/package.json b/security/bitwarden-cli/files/packagejsons/libs/exporter/package.json
new file mode 100644
index 000000000000..e3c3427ca39b
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/libs/exporter/package.json
@@ -0,0 +1,23 @@
+{
+  "name": "@bitwarden/exporter",
+  "version": "0.0.0",
+  "description": "Home for all Bitwarden exporters.",
+  "keywords": [
+    "bitwarden"
+  ],
+  "author": "Bitwarden Inc.",
+  "homepage": "https://bitwarden.com",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/bitwarden/clients"
+  },
+  "license": "GPL-3.0",
+  "scripts": {
+    "clean": "rimraf dist",
+    "build": "npm run clean && tsc",
+    "build:watch": "npm run clean && tsc -watch"
+  },
+  "dependencies": {
+    "@bitwarden/common": "file:../common"
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/libs/importer/package.json b/security/bitwarden-cli/files/packagejsons/libs/importer/package.json
new file mode 100644
index 000000000000..d510f1589e88
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/libs/importer/package.json
@@ -0,0 +1,24 @@
+{
+  "name": "@bitwarden/importer",
+  "version": "0.0.0",
+  "description": "Home for all Bitwarden importers.",
+  "keywords": [
+    "bitwarden"
+  ],
+  "author": "Bitwarden Inc.",
+  "homepage": "https://bitwarden.com",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/bitwarden/clients"
+  },
+  "license": "GPL-3.0",
+  "scripts": {
+    "clean": "rimraf dist",
+    "build": "npm run clean && tsc",
+    "build:watch": "npm run clean && tsc -watch"
+  },
+  "dependencies": {
+    "@bitwarden/common": "file:../common",
+    "@bitwarden/exporter": "file:../exporter"
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/libs/node/package.json b/security/bitwarden-cli/files/packagejsons/libs/node/package.json
new file mode 100644
index 000000000000..cbc7ec2c0570
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/libs/node/package.json
@@ -0,0 +1,23 @@
+{
+  "name": "@bitwarden/node",
+  "version": "0.0.0",
+  "description": "Common code used across Bitwarden JavaScript projects.",
+  "keywords": [
+    "bitwarden"
+  ],
+  "author": "Bitwarden Inc.",
+  "homepage": "https://bitwarden.com",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/bitwarden/jslib"
+  },
+  "license": "GPL-3.0",
+  "scripts": {
+    "clean": "rimraf dist",
+    "build": "npm run clean && tsc",
+    "build:watch": "npm run clean && tsc -watch"
+  },
+  "dependencies": {
+    "@bitwarden/common": "file:../common"
+  }
+}
diff --git a/security/bitwarden-cli/files/packagejsons/package-lock.json b/security/bitwarden-cli/files/packagejsons/package-lock.json
new file mode 100644
index 000000000000..f73df896664f
--- /dev/null
+++ b/security/bitwarden-cli/files/packagejsons/package-lock.json
@@ -0,0 +1,36091 @@
+{
+  "name": "@bitwarden/clients",
+  "version": "0.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "@bitwarden/clients",
+      "version": "0.0.0",
+      "hasInstallScript": true,
+      "license": "GPL-3.0",
+      "workspaces": [
+        "apps/*",
+        "apps/desktop/desktop_native",
+        "libs/*"
+      ],
+      "dependencies": {
+        "@angular/animations": "15.2.9",
+        "@angular/cdk": "15.2.9",
+        "@angular/common": "15.2.9",
+        "@angular/compiler": "15.2.9",
+        "@angular/core": "15.2.9",
+        "@angular/forms": "15.2.9",
+        "@angular/platform-browser": "15.2.9",
+        "@angular/platform-browser-dynamic": "15.2.9",
+        "@angular/router": "15.2.9",
+        "@koa/multer": "3.0.2",
+        "@koa/router": "12.0.0",
+        "@microsoft/signalr": "6.0.16",
+        "@microsoft/signalr-protocol-msgpack": "6.0.16",
+        "@ng-select/ng-select": "10.0.4",
+        "argon2": "0.30.3",
+        "argon2-browser": "1.18.0",
+        "big-integer": "1.6.51",
+        "bootstrap": "4.6.0",
+        "braintree-web-drop-in": "1.38.0",
+        "bufferutil": "4.0.7",
+        "chalk": "4.1.2",
+        "commander": "7.2.0",
+        "core-js": "3.30.2",
+        "date-input-polyfill": "2.14.0",
+        "duo_web_sdk": "github:duosecurity/duo_web_sdk",
+        "form-data": "4.0.0",
+        "https-proxy-agent": "5.0.1",
+        "inquirer": "8.2.5",
+        "jquery": "3.7.0",
+        "jsdom": "22.1.0",
+        "jszip": "3.10.1",
+        "koa": "2.14.2",
+        "koa-bodyparser": "4.4.0",
+        "koa-json": "2.0.2",
+        "lowdb": "1.0.0",
+        "lunr": "2.3.9",
+        "multer": "1.4.5-lts.1",
+        "ngx-infinite-scroll": "15.0.0",
+        "ngx-toastr": "16.2.0",
+        "node-fetch": "2.6.11",
+        "node-forge": "1.3.1",
+        "nord": "0.2.1",
+        "open": "8.4.2",
+        "papaparse": "5.4.1",
+        "patch-package": "6.5.1",
+        "popper.js": "1.16.1",
+        "proper-lockfile": "4.1.2",
+        "qrious": "4.0.2",
+        "rxjs": "7.8.1",
+        "sweetalert2": "10.16.11",
+        "tldts": "6.0.5",
+        "utf-8-validate": "5.0.10",
+        "zone.js": "0.12.0",
+        "zxcvbn": "4.4.2"
+      },
+      "devDependencies": {
+        "@angular-devkit/build-angular": "15.2.8",
+        "@angular-eslint/eslint-plugin": "15.2.1",
+        "@angular-eslint/eslint-plugin-template": "15.2.1",
+        "@angular-eslint/template-parser": "15.2.1",
+        "@angular/cli": "15.2.8",
+        "@angular/compiler-cli": "15.2.9",
+        "@angular/elements": "15.2.9",
+        "@compodoc/compodoc": "1.1.21",
+        "@electron/notarize": "1.2.3",
+        "@electron/rebuild": "3.2.13",
+        "@fluffy-spoon/substitute": "1.208.0",
+        "@ngtools/webpack": "15.2.8",
+        "@storybook/addon-a11y": "7.0.18",
+        "@storybook/addon-actions": "7.0.18",
+        "@storybook/addon-essentials": "7.0.18",
+        "@storybook/addon-links": "7.0.18",
+        "@storybook/angular": "7.0.18",
+        "@types/argon2-browser": "1.18.1",
+        "@types/chrome": "0.0.237",
+        "@types/duo_web_sdk": "2.7.1",
+        "@types/firefox-webext-browser": "111.0.1",
+        "@types/inquirer": "8.2.6",
+        "@types/jest": "29.5.2",
+        "@types/jquery": "3.5.16",
+        "@types/jsdom": "21.1.1",
+        "@types/koa": "2.13.6",
+        "@types/koa__multer": "2.0.4",
+        "@types/koa__router": "12.0.0",
+        "@types/koa-bodyparser": "4.3.7",
+        "@types/koa-json": "2.0.20",
+        "@types/lowdb": "1.0.11",
+        "@types/lunr": "2.3.4",
+        "@types/node": "18.16.16",
+        "@types/node-fetch": "2.6.4",
+        "@types/node-forge": "1.3.2",
+        "@types/node-ipc": "9.2.0",
+        "@types/papaparse": "5.3.7",
+        "@types/proper-lockfile": "4.1.2",
+        "@types/react": "16.14.42",
+        "@types/retry": "0.12.2",
+        "@types/zxcvbn": "4.4.1",
+        "@typescript-eslint/eslint-plugin": "5.59.8",
+        "@typescript-eslint/parser": "5.59.8",
+        "autoprefixer": "10.4.14",
+        "base64-loader": "1.0.0",
+        "buffer": "6.0.3",
+        "chromatic": "6.18.0",
+        "clean-webpack-plugin": "4.0.0",
+        "concurrently": "8.1.0",
+        "copy-webpack-plugin": "11.0.0",
+        "cross-env": "7.0.3",
+        "css-loader": "6.8.1",
+        "del": "6.1.1",
+        "electron": "24.1.1",
+        "electron-builder": "^23.6.0",
+        "electron-log": "4.4.8",
+        "electron-reload": "2.0.0-alpha.1",
+        "electron-store": "8.1.0",
+        "electron-updater": "5.3.0",
+        "eslint": "8.42.0",
+        "eslint-config-prettier": "8.8.0",
+        "eslint-import-resolver-typescript": "3.5.5",
+        "eslint-plugin-import": "2.27.5",
+        "eslint-plugin-rxjs": "5.0.3",
+        "eslint-plugin-rxjs-angular": "2.0.1",
+        "eslint-plugin-tailwindcss": "3.12.1",
+        "gulp": "4.0.2",
+        "gulp-filter": "7.0.0",
+        "gulp-if": "3.0.0",
+        "gulp-json-editor": "2.5.6",
+        "gulp-replace": "1.1.4",
+        "gulp-zip": "5.1.0",
+        "html-loader": "4.2.0",
+        "html-webpack-injector": "1.1.4",
+        "html-webpack-plugin": "5.5.1",
+        "husky": "8.0.3",
+        "jest-junit": "16.0.0",
+        "jest-mock-extended": "3.0.4",
+        "jest-preset-angular": "13.1.1",
+        "lint-staged": "13.2.2",
+        "mini-css-extract-plugin": "2.7.6",
+        "node-ipc": "9.2.1",
+        "pkg": "vercel/pkg",
+        "postcss": "8.4.24",
+        "postcss-loader": "7.3.2",
+        "prettier": "2.8.8",
+        "prettier-plugin-tailwindcss": "0.3.0",
+        "process": "0.11.10",
+        "react": "18.2.0",
+        "react-dom": "18.2.0",
+        "regedit": "^3.0.3",
+        "remark-gfm": "3.0.1",
+        "rimraf": "5.0.1",
+        "sass": "1.62.1",
+        "sass-loader": "13.3.1",
+        "storybook": "7.0.18",
+        "style-loader": "3.3.3",
+        "tailwindcss": "3.3.2",
+        "ts-jest": "29.1.0",
+        "ts-loader": "9.4.3",
+        "tsconfig-paths-webpack-plugin": "4.0.1",
+        "type-fest": "2.19.0",
+        "typescript": "4.9.5",
+        "url": "0.11.0",
+        "util": "0.12.5",
+        "wait-on": "7.0.1",
+        "webpack": "5.85.0",
+        "webpack-cli": "5.1.3",
+        "webpack-dev-server": "4.15.0",
+        "webpack-node-externals": "3.0.0"
+      },
+      "engines": {
+        "node": "~18",
+        "npm": "~9"
+      }
+    },
+    "apps/browser": {
+      "name": "@bitwarden/browser",
+      "version": "2023.7.1"
+    },
+    "apps/cli": {
+      "name": "@bitwarden/cli",
+      "version": "2023.7.0",
+      "license": "GPL-3.0-only",
+      "dependencies": {
+        "@koa/multer": "3.0.2",
+        "@koa/router": "12.0.0",
+        "argon2": "0.30.3",
+        "big-integer": "1.6.51",
+        "browser-hrtime": "1.1.8",
+        "chalk": "4.1.2",
+        "commander": "7.2.0",
+        "form-data": "4.0.0",
+        "https-proxy-agent": "5.0.1",
+        "inquirer": "8.2.5",
+        "jsdom": "22.1.0",
+        "jszip": "3.10.1",
+        "koa": "2.14.2",
+        "koa-bodyparser": "4.4.0",
+        "koa-json": "2.0.2",
+        "lowdb": "1.0.0",
+        "lunr": "2.3.9",
+        "multer": "1.4.5-lts.1",
+        "node-fetch": "2.6.11",
+        "node-forge": "1.3.1",
+        "open": "8.4.2",
+        "papaparse": "5.4.1",
+        "proper-lockfile": "4.1.2",
+        "rxjs": "7.8.1",
+        "tldts": "6.0.5",
+        "zxcvbn": "4.4.2"
+      },
+      "bin": {
+        "bw": "build/bw.js"
+      }
+    },
+    "apps/desktop": {
+      "name": "@bitwarden/desktop",
+      "version": "2023.7.0",
+      "hasInstallScript": true,
+      "license": "GPL-3.0"
+    },
+    "apps/desktop/desktop_native": {
+      "name": "@bitwarden/desktop-native",
+      "version": "0.1.0",
+      "license": "GPL-3.0",
+      "devDependencies": {
+        "@napi-rs/cli": "2.16.1"
+      }
+    },
+    "apps/web": {
+      "name": "@bitwarden/web-vault",
+      "version": "2023.7.0"
+    },
+    "libs/angular": {
+      "name": "@bitwarden/angular",
+      "version": "0.0.0",
+      "license": "GPL-3.0"
+    },
+    "libs/common": {
+      "name": "@bitwarden/common",
+      "version": "0.0.0",
+      "license": "GPL-3.0"
+    },
+    "libs/components": {
+      "name": "@bitwarden/components",
+      "version": "0.0.0"
+    },
+    "libs/exporter": {
+      "name": "@bitwarden/exporter",
+      "version": "0.0.0",
+      "license": "GPL-3.0",
+      "dependencies": {
+        "@bitwarden/common": "file:../common"
+      }
+    },
+    "libs/importer": {
+      "name": "@bitwarden/importer",
+      "version": "0.0.0",
+      "license": "GPL-3.0",
+      "dependencies": {
+        "@bitwarden/common": "file:../common",
+        "@bitwarden/exporter": "file:../exporter"
+      }
+    },
+    "libs/node": {
+      "name": "@bitwarden/node",
+      "version": "0.0.0",
+      "license": "GPL-3.0",
+      "dependencies": {
+        "@bitwarden/common": "file:../common"
+      }
+    },
+    "node_modules/@aduh95/viz.js": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.4.0.tgz",
+      "integrity": "sha512-KI2nVf9JdwWCXqK6RVf+9/096G7VWN4Z84mnynlyZKao2xQENW8WNEjLmvdlxS5X8PNWXFC1zqwm7tveOXw/4A==",
+      "dev": true
+    },
+    "node_modules/@alloc/quick-lru": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+      "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@ampproject/remapping": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+      "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.1.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@angular-devkit/architect": {
+      "version": "0.1600.3",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1600.3.tgz",
+      "integrity": "sha512-XEncYhrQDwHjDBWqSv9oeufzsYQNHVP+ftD0LWtqL4TvOwsJ5ShWEqkjXIfG9FiaIUtmd6X2BBXutbib/yALxA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@angular-devkit/core": "16.0.3",
+        "rxjs": "7.8.1"
+      },
+      "engines": {
+        "node": "^16.14.0 || >=18.10.0",
+        "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+        "yarn": ">= 1.13.0"
+      }
+    },
+    "node_modules/@angular-devkit/build-angular": {
+      "version": "15.2.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-15.2.8.tgz",
+      "integrity": "sha512-TGDnXhhOG6h6TOrWWzfnkha7wYBOXi7iJc1o1w1VKCayE3T6TZZdF847aK66vL9KG7AKYVdGhWEGw2WBHUBUpg==",
+      "dev": true,
+      "dependencies": {
+        "@ampproject/remapping": "2.2.0",
+        "@angular-devkit/architect": "0.1502.8",
+        "@angular-devkit/build-webpack": "0.1502.8",
+        "@angular-devkit/core": "15.2.8",
+        "@babel/core": "7.20.12",
+        "@babel/generator": "7.20.14",
+        "@babel/helper-annotate-as-pure": "7.18.6",
+        "@babel/helper-split-export-declaration": "7.18.6",
+        "@babel/plugin-proposal-async-generator-functions": "7.20.7",
+        "@babel/plugin-transform-async-to-generator": "7.20.7",
+        "@babel/plugin-transform-runtime": "7.19.6",
+        "@babel/preset-env": "7.20.2",
+        "@babel/runtime": "7.20.13",
+        "@babel/template": "7.20.7",
+        "@discoveryjs/json-ext": "0.5.7",
+        "@ngtools/webpack": "15.2.8",
+        "ansi-colors": "4.1.3",
+        "autoprefixer": "10.4.13",
+        "babel-loader": "9.1.2",
+        "babel-plugin-istanbul": "6.1.1",
+        "browserslist": "4.21.5",
+        "cacache": "17.0.4",
+        "chokidar": "3.5.3",
+        "copy-webpack-plugin": "11.0.0",
*** 35992 LINES SKIPPED ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202307310721.36V7LkP6045205>