mirror of
https://github.com/bitwarden/clients.git
synced 2026-06-13 21:01:11 +08:00
* Add Collection Encryption Service and integrate into collection handling - Introduced `CollectionEncryptionService` and its default implementation `DefaultCollectionEncryptionService` for handling collection encryption and decryption. - Updated `DefaultCollectionService` to utilize the new encryption service based on feature flags. - Refactored collection-related classes to support SDK-based encryption operations. - Added necessary imports and updated service providers in Angular module for dependency injection. - Enhanced collection models to support SDK format conversions for encryption tasks. * Implement encryption functionality in CollectionEncryptionService - Added `encrypt` method to `CollectionEncryptionService` for encrypting collection views. - Updated `DefaultCollectionEncryptionService` to include the new `encrypt` method, ensuring proper handling of SDK encryption. - Modified `DefaultCollectionService` to utilize the encryption service based on feature flags. - Enhanced collection and collection view models to support SDK format conversions for encryption tasks. * refactor(collections): Update collection decryption methods and handle encryption support - Modified `fromSdkCollectionView` to include `sourceCollection` for preserving `defaultUserCollectionEmail`. - Updated decryption methods in `DefaultCollectionEncryptionService` to pass the original collection. - Marked `encrypt` method as unsupported in the SDK, directing users to the legacy key-service path. - Removed SDK feature flag checks from `DefaultCollectionService`'s `encrypt` method. * refactor(collections): Update feature flag for collection decryption to PM35153 - Changed references from PM34918CollectionEncryptionService to PM35153CollectionSdkDecryption in both service and test files. - Adjusted the feature flag checks to align with the new decryption implementation. * Implement collection encryption using SDK in DefaultCollectionEncryptionService * Refactor collection decryption in DefaultCollectionEncryptionService to handle errors individually and improve logging * Add polyfills for Symbol.dispose and Symbol.asyncDispose in test setup; add unit tests for DefaultCollectionEncryptionService and collection SDK mapping * Refactor error handling in DefaultCollectionEncryptionService to throw errors instead of returning EMPTY, improving error propagation and logging consistency. * Refactor collection decryption and enhance type mapping - Updated the `decrypt` method in `default-collection-encryption.service.ts` to utilize `decryptMany` for improved error handling. - Added exhaustive bidirectional mapping for `CollectionType` and `SdkCollectionType` in `collection.ts`. - Enhanced tests in `collection-sdk-mapping.spec.ts` to verify roundtrip conversions for `CollectionTypes`. - Adjusted `Collection` and `CollectionView` classes to use the new type mappings for SDK interactions. * Refactor DefaultCollectionEncryptionService to use a more concise method for encrypting collections. Update collection-sdk-mapping tests to utilize SdkEncString for better type safety. Simplify NewItemNudgeComponent's logic for showing nudge spotlight based on cipher type, ensuring null checks are handled appropriately. * Refactor NewItemNudgeComponent to use strict null checks for cipher type comparison, enhancing code clarity and consistency.
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { webcrypto } from "crypto";
|
|
|
|
import { addCustomMatchers } from "@bitwarden/common/spec";
|
|
import "@bitwarden/ui-common/setup-jest";
|
|
|
|
// jsdom does not expose Symbol.dispose / Symbol.asyncDispose, but TypeScript's compiled
|
|
// output for `using` declarations requires them. Polyfill here so specs that test code
|
|
// using explicit resource management (`using ref = sdk.take()`) work correctly.
|
|
if (!Symbol.dispose) {
|
|
Object.defineProperty(Symbol, "dispose", { value: Symbol("Symbol.dispose") });
|
|
}
|
|
if (!Symbol.asyncDispose) {
|
|
Object.defineProperty(Symbol, "asyncDispose", { value: Symbol("Symbol.asyncDispose") });
|
|
}
|
|
|
|
addCustomMatchers();
|
|
|
|
Object.defineProperty(window, "CSS", { value: null });
|
|
Object.defineProperty(window, "getComputedStyle", {
|
|
value: () => {
|
|
return {
|
|
display: "none",
|
|
appearance: ["-webkit-appearance"],
|
|
};
|
|
},
|
|
});
|
|
|
|
Object.defineProperty(document, "doctype", {
|
|
value: "<!DOCTYPE html>",
|
|
});
|
|
Object.defineProperty(document.body.style, "transform", {
|
|
value: () => {
|
|
return {
|
|
enumerable: true,
|
|
configurable: true,
|
|
};
|
|
},
|
|
});
|
|
|
|
Object.defineProperty(window, "crypto", {
|
|
value: webcrypto,
|
|
});
|