From 45ce5b224afc141d9732081aed01543fdaf459e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=A8=20Audrey=20=E2=9C=A8?= Date: Fri, 27 Dec 2024 12:06:59 -0500 Subject: [PATCH] further cleanup --- libs/common/src/tools/dependencies.ts | 5 --- libs/common/src/tools/extension/data.ts | 10 ++++++ .../extension/default-extension-registry.ts | 10 ++---- .../extension-registry.abstraction.ts | 9 ++--- .../src/tools/extension/extension-site.ts | 2 +- libs/common/src/tools/extension/factory.ts | 17 +++++----- .../{metadata/extension.ts => metadata.ts} | 4 +++ .../src/tools/extension/metadata/data.ts | 34 ------------------- .../tools/extension/{metadata => }/type.ts | 16 ++------- .../extension/{data => vendor}/addy-io.ts | 11 +++--- .../{data/vendor-info.ts => vendor/data.ts} | 25 ++++++++++++-- .../{data => vendor}/duck-duck-go.ts | 11 +++--- .../extension/{data => vendor}/fastmail.ts | 11 +++--- .../{data => vendor}/forward-email.ts | 11 +++--- .../extension/{data => vendor}/mozilla.ts | 8 +++-- .../{data => vendor}/simple-login.ts | 9 +++-- .../common/src/tools/extension/vendor/type.ts | 15 ++++++++ 17 files changed, 108 insertions(+), 100 deletions(-) create mode 100644 libs/common/src/tools/extension/data.ts rename libs/common/src/tools/extension/{metadata/extension.ts => metadata.ts} (68%) delete mode 100644 libs/common/src/tools/extension/metadata/data.ts rename libs/common/src/tools/extension/{metadata => }/type.ts (85%) rename libs/common/src/tools/extension/{data => vendor}/addy-io.ts (61%) rename libs/common/src/tools/extension/{data/vendor-info.ts => vendor/data.ts} (51%) rename libs/common/src/tools/extension/{data => vendor}/duck-duck-go.ts (60%) rename libs/common/src/tools/extension/{data => vendor}/fastmail.ts (59%) rename libs/common/src/tools/extension/{data => vendor}/forward-email.ts (61%) rename libs/common/src/tools/extension/{data => vendor}/mozilla.ts (72%) rename libs/common/src/tools/extension/{data => vendor}/simple-login.ts (69%) create mode 100644 libs/common/src/tools/extension/vendor/type.ts diff --git a/libs/common/src/tools/dependencies.ts b/libs/common/src/tools/dependencies.ts index a1a3633721e..cdae45bc94a 100644 --- a/libs/common/src/tools/dependencies.ts +++ b/libs/common/src/tools/dependencies.ts @@ -5,7 +5,6 @@ import { OrganizationId, UserId } from "@bitwarden/common/types/guid"; import { OrganizationEncryptor } from "./cryptography/organization-encryptor.abstraction"; import { UserEncryptor } from "./cryptography/user-encryptor.abstraction"; -import { VendorId } from "./extension/metadata/type"; /** error emitted when the `SingleUserDependency` changes Ids */ export type UserChangedError = { @@ -152,10 +151,6 @@ export type SingleUserDependency = { singleUserId$: Observable; }; -export type SingleVendorDependency = { - singleVendorId$: Observable; -}; - /** A pattern for types that emit values exclusively when the dependency * emits a message. * diff --git a/libs/common/src/tools/extension/data.ts b/libs/common/src/tools/extension/data.ts new file mode 100644 index 00000000000..a37b25aa24c --- /dev/null +++ b/libs/common/src/tools/extension/data.ts @@ -0,0 +1,10 @@ +export const Site = Object.freeze({ + forwarder: "forwarder", +} as const); + +export const Field = Object.freeze({ + token: "token", + baseUrl: "baseUrl", + domain: "domain", + prefix: "prefix", +} as const); diff --git a/libs/common/src/tools/extension/default-extension-registry.ts b/libs/common/src/tools/extension/default-extension-registry.ts index 43e989b2ec9..b59106b0915 100644 --- a/libs/common/src/tools/extension/default-extension-registry.ts +++ b/libs/common/src/tools/extension/default-extension-registry.ts @@ -1,13 +1,7 @@ import { ExtensionPermission, ExtensionRegistry } from "./extension-registry.abstraction"; import { ExtensionSite } from "./extension-site"; -import { - SiteMetadata, - SiteId, - ExtensionMetadata, - ExtensionSet, - VendorId, - VendorMetadata, -} from "./metadata/type"; +import { SiteMetadata, SiteId, ExtensionMetadata, ExtensionSet } from "./type"; +import { VendorId, VendorMetadata } from "./vendor/type"; /** Tracks extension sites and the vendors that extend them. */ export class DefaultExtensionRegistry implements ExtensionRegistry { diff --git a/libs/common/src/tools/extension/extension-registry.abstraction.ts b/libs/common/src/tools/extension/extension-registry.abstraction.ts index 9ea317f1585..ea8a26a4305 100644 --- a/libs/common/src/tools/extension/extension-registry.abstraction.ts +++ b/libs/common/src/tools/extension/extension-registry.abstraction.ts @@ -1,11 +1,6 @@ import { ExtensionSite } from "./extension-site"; -import { - SiteMetadata, - ExtensionMetadata, - ExtensionSet, - VendorMetadata, - SiteId, -} from "./metadata/type"; +import { SiteMetadata, ExtensionMetadata, ExtensionSet, SiteId } from "./type"; +import { VendorMetadata } from "./vendor/type"; /** Permission levels for metadata. * * default - unless a rule denies access, allow it. This is the diff --git a/libs/common/src/tools/extension/extension-site.ts b/libs/common/src/tools/extension/extension-site.ts index 988f6cdcb33..e8aba008493 100644 --- a/libs/common/src/tools/extension/extension-site.ts +++ b/libs/common/src/tools/extension/extension-site.ts @@ -1,6 +1,6 @@ import { deepFreeze } from "../util"; -import { ExtensionMetadata, SiteMetadata, VendorId } from "./metadata/type"; +import { ExtensionMetadata, SiteMetadata, VendorId } from "./type"; /** Describes the capabilities of an extension site. * This type is immutable. diff --git a/libs/common/src/tools/extension/factory.ts b/libs/common/src/tools/extension/factory.ts index 87c7a012056..03b344ad060 100644 --- a/libs/common/src/tools/extension/factory.ts +++ b/libs/common/src/tools/extension/factory.ts @@ -1,12 +1,13 @@ -import { AddyIo, AddyIoExtensions } from "./data/addy-io"; -import { DuckDuckGo, DuckDuckGoExtensions } from "./data/duck-duck-go"; -import { Fastmail, FastmailExtensions } from "./data/fastmail"; -import { ForwardEmail, ForwardEmailExtensions } from "./data/forward-email"; -import { Mozilla, MozillaExtensions } from "./data/mozilla"; -import { SimpleLogin, SimpleLoginExtensions } from "./data/simple-login"; import { DefaultExtensionRegistry } from "./default-extension-registry"; -import { Extension } from "./metadata/extension"; -import { ExtensionMetadata, VendorMetadata } from "./metadata/type"; +import { Extension } from "./metadata"; +import { ExtensionMetadata } from "./type"; +import { AddyIo, AddyIoExtensions } from "./vendor/addy-io"; +import { DuckDuckGo, DuckDuckGoExtensions } from "./vendor/duck-duck-go"; +import { Fastmail, FastmailExtensions } from "./vendor/fastmail"; +import { ForwardEmail, ForwardEmailExtensions } from "./vendor/forward-email"; +import { Mozilla, MozillaExtensions } from "./vendor/mozilla"; +import { SimpleLogin, SimpleLoginExtensions } from "./vendor/simple-login"; +import { VendorMetadata } from "./vendor/type"; // FIXME: find a better way to build the registry than a hard-coded factory function diff --git a/libs/common/src/tools/extension/metadata/extension.ts b/libs/common/src/tools/extension/metadata.ts similarity index 68% rename from libs/common/src/tools/extension/metadata/extension.ts rename to libs/common/src/tools/extension/metadata.ts index b2d95d59304..f65fe17e604 100644 --- a/libs/common/src/tools/extension/metadata/extension.ts +++ b/libs/common/src/tools/extension/metadata.ts @@ -7,3 +7,7 @@ export const Extension: Record = { availableFields: [Field.baseUrl, Field.domain, Field.prefix, Field.token], }, }; + +export const FieldsBySite = { + [Site.forwarder]: [Field.token, Field.baseUrl, Field.domain, Field.prefix], +} as const; diff --git a/libs/common/src/tools/extension/metadata/data.ts b/libs/common/src/tools/extension/metadata/data.ts deleted file mode 100644 index ef8abf8a641..00000000000 --- a/libs/common/src/tools/extension/metadata/data.ts +++ /dev/null @@ -1,34 +0,0 @@ -export const Site = Object.freeze({ - forwarder: "forwarder", -} as const); - -export const Field = Object.freeze({ - token: "token", - baseUrl: "baseUrl", - domain: "domain", - prefix: "prefix", -} as const); - -export const FieldsBySite = { - [Site.forwarder]: [Field.token, Field.baseUrl, Field.domain, Field.prefix], -} as const; - -export const Vendor = Object.freeze({ - anonaddy: "anonaddy", - duckduckgo: "duckduckgo", - fastmail: "fastmail", - mozilla: "mozilla", - forwardemail: "forwardemail", - simplelogin: "simplelogin", -} as const); - -export const VendorsByExtension = { - [Site.forwarder]: [ - Vendor.anonaddy, - Vendor.duckduckgo, - Vendor.fastmail, - Vendor.mozilla, - Vendor.forwardemail, - Vendor.simplelogin, - ] as const, -} as const; diff --git a/libs/common/src/tools/extension/metadata/type.ts b/libs/common/src/tools/extension/type.ts similarity index 85% rename from libs/common/src/tools/extension/metadata/type.ts rename to libs/common/src/tools/extension/type.ts index d319d6e2aed..4dc2ffc98ee 100644 --- a/libs/common/src/tools/extension/metadata/type.ts +++ b/libs/common/src/tools/extension/type.ts @@ -1,4 +1,6 @@ -import { FieldsBySite, Site, VendorsByExtension } from "./data"; +import { Site } from "./data"; +import { FieldsBySite } from "./metadata"; +import { VendorId, VendorMetadata } from "./vendor/type"; /** well-known name for a feature extensible through an extension. */ export type SiteId = keyof typeof Site; @@ -6,9 +8,6 @@ export type SiteId = keyof typeof Site; /** well-known name for a field surfaced from an extension site to a vendor. */ export type DisclosedField = (typeof FieldsBySite)[SiteId][number]; -/** Identifies a vendor extending bitwarden */ -export type VendorId = (typeof VendorsByExtension)[SiteId][number]; - /** The capabilities and descriptive content for an extension */ export type SiteMetadata = { /** Uniquely identifies the extension site. */ @@ -46,15 +45,6 @@ export type ApiHost = TokenHeader & | { selfHost: "always" } ); -/** The capabilities and descriptive content for an extension */ -export type VendorMetadata = { - /** Uniquely identifies the vendor. */ - id: VendorId; - - /** Brand name of the service providing the extension. */ - name: string; -}; - /** Describes an extension provided by a vendor */ export type ExtensionMetadata = { /** The part of Bitwarden extended by the vendor's services */ diff --git a/libs/common/src/tools/extension/data/addy-io.ts b/libs/common/src/tools/extension/vendor/addy-io.ts similarity index 61% rename from libs/common/src/tools/extension/data/addy-io.ts rename to libs/common/src/tools/extension/vendor/addy-io.ts index d1b7d21af8d..14ea0545c0c 100644 --- a/libs/common/src/tools/extension/data/addy-io.ts +++ b/libs/common/src/tools/extension/vendor/addy-io.ts @@ -1,8 +1,11 @@ -import { Field, Vendor } from "../metadata/data"; -import { Extension } from "../metadata/extension"; -import { ExtensionMetadata } from "../metadata/type"; +import { Field } from "../data"; +import { Extension } from "../metadata"; +import { ExtensionMetadata } from "../type"; -export const AddyIo = { +import { Vendor } from "./data"; +import { VendorMetadata } from "./type"; + +export const AddyIo: VendorMetadata = { id: Vendor.anonaddy, name: "Addy.io", }; diff --git a/libs/common/src/tools/extension/data/vendor-info.ts b/libs/common/src/tools/extension/vendor/data.ts similarity index 51% rename from libs/common/src/tools/extension/data/vendor-info.ts rename to libs/common/src/tools/extension/vendor/data.ts index 0d1d722fc76..845a0a0b1e7 100644 --- a/libs/common/src/tools/extension/data/vendor-info.ts +++ b/libs/common/src/tools/extension/vendor/data.ts @@ -1,5 +1,15 @@ -import { Vendor } from "../metadata/data"; -import { VendorMetadata } from "../metadata/type"; +import { Site } from "../data"; + +import { VendorMetadata } from "./type"; + +export const Vendor = Object.freeze({ + anonaddy: "anonaddy", + duckduckgo: "duckduckgo", + fastmail: "fastmail", + mozilla: "mozilla", + forwardemail: "forwardemail", + simplelogin: "simplelogin", +} as const); export const VendorInfo: Record = { [Vendor.anonaddy]: { @@ -27,3 +37,14 @@ export const VendorInfo: Record = { name: "SimpleLogin", }, }; + +export const VendorsByExtension = { + [Site.forwarder]: [ + Vendor.anonaddy, + Vendor.duckduckgo, + Vendor.fastmail, + Vendor.mozilla, + Vendor.forwardemail, + Vendor.simplelogin, + ] as const, +} as const; diff --git a/libs/common/src/tools/extension/data/duck-duck-go.ts b/libs/common/src/tools/extension/vendor/duck-duck-go.ts similarity index 60% rename from libs/common/src/tools/extension/data/duck-duck-go.ts rename to libs/common/src/tools/extension/vendor/duck-duck-go.ts index ce3d5ffa545..7865e131416 100644 --- a/libs/common/src/tools/extension/data/duck-duck-go.ts +++ b/libs/common/src/tools/extension/vendor/duck-duck-go.ts @@ -1,8 +1,11 @@ -import { Field, Vendor } from "../metadata/data"; -import { Extension } from "../metadata/extension"; -import { ExtensionMetadata } from "../metadata/type"; +import { Field } from "../data"; +import { Extension } from "../metadata"; +import { ExtensionMetadata } from "../type"; -export const DuckDuckGo = { +import { Vendor } from "./data"; +import { VendorMetadata } from "./type"; + +export const DuckDuckGo: VendorMetadata = { id: Vendor.duckduckgo, name: "DuckDuckGo", }; diff --git a/libs/common/src/tools/extension/data/fastmail.ts b/libs/common/src/tools/extension/vendor/fastmail.ts similarity index 59% rename from libs/common/src/tools/extension/data/fastmail.ts rename to libs/common/src/tools/extension/vendor/fastmail.ts index c7a0cf22c3a..c434f60dbf0 100644 --- a/libs/common/src/tools/extension/data/fastmail.ts +++ b/libs/common/src/tools/extension/vendor/fastmail.ts @@ -1,8 +1,11 @@ -import { Field, Vendor } from "../metadata/data"; -import { Extension } from "../metadata/extension"; -import { ExtensionMetadata } from "../metadata/type"; +import { Field } from "../data"; +import { Extension } from "../metadata"; +import { ExtensionMetadata } from "../type"; -export const Fastmail = { +import { Vendor } from "./data"; +import { VendorMetadata } from "./type"; + +export const Fastmail: VendorMetadata = { id: Vendor.fastmail, name: "Fastmail", }; diff --git a/libs/common/src/tools/extension/data/forward-email.ts b/libs/common/src/tools/extension/vendor/forward-email.ts similarity index 61% rename from libs/common/src/tools/extension/data/forward-email.ts rename to libs/common/src/tools/extension/vendor/forward-email.ts index 35b827ca1a5..545b95ee0e0 100644 --- a/libs/common/src/tools/extension/data/forward-email.ts +++ b/libs/common/src/tools/extension/vendor/forward-email.ts @@ -1,8 +1,11 @@ -import { Field, Vendor } from "../metadata/data"; -import { Extension } from "../metadata/extension"; -import { ExtensionMetadata } from "../metadata/type"; +import { Field } from "../data"; +import { Extension } from "../metadata"; +import { ExtensionMetadata } from "../type"; -export const ForwardEmail = { +import { Vendor } from "./data"; +import { VendorMetadata } from "./type"; + +export const ForwardEmail: VendorMetadata = { id: Vendor.forwardemail, name: "Forward Email", }; diff --git a/libs/common/src/tools/extension/data/mozilla.ts b/libs/common/src/tools/extension/vendor/mozilla.ts similarity index 72% rename from libs/common/src/tools/extension/data/mozilla.ts rename to libs/common/src/tools/extension/vendor/mozilla.ts index 682c3ab19d4..9d7182eccc5 100644 --- a/libs/common/src/tools/extension/data/mozilla.ts +++ b/libs/common/src/tools/extension/vendor/mozilla.ts @@ -1,6 +1,8 @@ -import { Field, Vendor } from "../metadata/data"; -import { Extension } from "../metadata/extension"; -import { ExtensionMetadata } from "../metadata/type"; +import { Field } from "../data"; +import { Extension } from "../metadata"; +import { ExtensionMetadata } from "../type"; + +import { Vendor } from "./data"; export const Mozilla = { id: Vendor.mozilla, diff --git a/libs/common/src/tools/extension/data/simple-login.ts b/libs/common/src/tools/extension/vendor/simple-login.ts similarity index 69% rename from libs/common/src/tools/extension/data/simple-login.ts rename to libs/common/src/tools/extension/vendor/simple-login.ts index 174c9668bd0..7e60f54a0ce 100644 --- a/libs/common/src/tools/extension/data/simple-login.ts +++ b/libs/common/src/tools/extension/vendor/simple-login.ts @@ -1,6 +1,9 @@ -import { Field, Vendor } from "../metadata/data"; -import { Extension } from "../metadata/extension"; -import { ExtensionMetadata, VendorMetadata } from "../metadata/type"; +import { Field } from "../data"; +import { Extension } from "../metadata"; +import { ExtensionMetadata } from "../type"; + +import { Vendor } from "./data"; +import { VendorMetadata } from "./type"; export const SimpleLogin: VendorMetadata = { id: Vendor.simplelogin, diff --git a/libs/common/src/tools/extension/vendor/type.ts b/libs/common/src/tools/extension/vendor/type.ts new file mode 100644 index 00000000000..34c2da172f2 --- /dev/null +++ b/libs/common/src/tools/extension/vendor/type.ts @@ -0,0 +1,15 @@ +import { SiteId } from "../type"; + +import { VendorsByExtension } from "./data"; + +/** Identifies a vendor extending bitwarden */ +export type VendorId = (typeof VendorsByExtension)[SiteId][number]; + +/** The capabilities and descriptive content for an extension */ +export type VendorMetadata = { + /** Uniquely identifies the vendor. */ + id: VendorId; + + /** Brand name of the service providing the extension. */ + name: string; +};