From b434354e4c0c2c1d2ed6a1b26eb4a10bd8f2d3c3 Mon Sep 17 00:00:00 2001 From: Elliot Hesp Date: Wed, 1 Oct 2025 11:45:52 +0100 Subject: [PATCH 1/3] feat(core): Add registerFramework util --- packages/core/src/index.ts | 7 ++ packages/core/src/register-framework.test.ts | 72 ++++++++++++++++++++ packages/core/src/register-framework.ts | 11 +++ 3 files changed, 90 insertions(+) create mode 100644 packages/core/src/register-framework.test.ts create mode 100644 packages/core/src/register-framework.ts diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 77a0a7b5..b64502c2 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -14,6 +14,11 @@ * limitations under the License. */ +import { registerFramework } from "./register-framework"; +import pkgJson from '../package.json'; + +registerFramework("core", pkgJson.version); + export * from "./auth"; export * from "./behaviors"; export * from "./config"; @@ -21,3 +26,5 @@ export * from "./errors"; export * from "./schemas"; export * from "./country-data"; export * from "./translations"; +export * from "./register-framework"; + diff --git a/packages/core/src/register-framework.test.ts b/packages/core/src/register-framework.test.ts new file mode 100644 index 00000000..ae35c80b --- /dev/null +++ b/packages/core/src/register-framework.test.ts @@ -0,0 +1,72 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { registerFramework } from "./register-framework"; + +vi.mock("firebase/app", () => ({ + registerVersion: vi.fn(), +})); + +import { registerVersion } from "firebase/app"; + +describe("registerFramework", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("should call registerVersion with correct parameters", () => { + const framework = "react"; + const version = "1.0.0"; + + registerFramework(framework, version); + + expect(registerVersion).toHaveBeenCalledWith("firebase-ui", version, framework); + expect(registerVersion).toHaveBeenCalledTimes(1); + }); + + it("should handle different framework types", () => { + const frameworks = ["react", "angular"]; + const version = "2.0.0"; + + frameworks.forEach((framework) => { + registerFramework(framework, version); + }); + + expect(registerVersion).toHaveBeenCalledTimes(frameworks.length); + frameworks.forEach((framework) => { + expect(registerVersion).toHaveBeenCalledWith("firebase-ui", version, framework); + }); + }); + + it("should handle different version formats", () => { + const framework = "react"; + const versions = ["1.0.0", "2.1.3", "0.0.1", "10.20.30"]; + + versions.forEach((version) => { + registerFramework(framework, version); + }); + + expect(registerVersion).toHaveBeenCalledTimes(versions.length); + versions.forEach((version) => { + expect(registerVersion).toHaveBeenCalledWith("firebase-ui", version, framework); + }); + }); + + it("should handle empty string parameters", () => { + const framework = ""; + const version = ""; + + registerFramework(framework, version); + + expect(registerVersion).toHaveBeenCalledWith("firebase-ui", "", ""); + expect(registerVersion).toHaveBeenCalledTimes(1); + }); + + it("should handle special characters in parameters", () => { + const framework = "react"; + const version = "1.0.0-beta.1"; + + registerFramework(framework, version); + + expect(registerVersion).toHaveBeenCalledWith("firebase-ui", version, framework); + expect(registerVersion).toHaveBeenCalledTimes(1); + }); +}); diff --git a/packages/core/src/register-framework.ts b/packages/core/src/register-framework.ts new file mode 100644 index 00000000..93fbf2d7 --- /dev/null +++ b/packages/core/src/register-framework.ts @@ -0,0 +1,11 @@ +import { registerVersion } from "firebase/app"; + +/** + * Register a framework with the FirebaseUI configuration. + * @internal + * @param framework The type of framework being registered. + * @param version The version of the framework being registered. + */ +export function registerFramework(framework: string, version: string) { + registerVersion("firebase-ui", version, framework); +} \ No newline at end of file From e1eda8447c81a1fc8368e34be4735ecfbce01ed7 Mon Sep 17 00:00:00 2001 From: Elliot Hesp Date: Wed, 1 Oct 2025 11:46:53 +0100 Subject: [PATCH 2/3] feat(react): Register react framework --- packages/react/src/index.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index 05b265f9..b3313791 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -14,6 +14,11 @@ * limitations under the License. */ +import { registerFramework } from "@firebase-ui/core"; +import pkgJson from '../package.json'; + +registerFramework("react", pkgJson.version); + export * from "./auth"; export * from "./hooks"; export * from "./components"; From fe5f978615a1066feff968b07ff220ec22dcb28a Mon Sep 17 00:00:00 2001 From: Elliot Hesp Date: Thu, 2 Oct 2025 14:09:35 +0100 Subject: [PATCH 3/3] fix: Update framework base name --- packages/core/src/register-framework.test.ts | 18 ++++-------------- packages/core/src/register-framework.ts | 2 +- packages/react/src/index.ts | 4 ++-- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/packages/core/src/register-framework.test.ts b/packages/core/src/register-framework.test.ts index ae35c80b..30b0f16c 100644 --- a/packages/core/src/register-framework.test.ts +++ b/packages/core/src/register-framework.test.ts @@ -18,7 +18,7 @@ describe("registerFramework", () => { registerFramework(framework, version); - expect(registerVersion).toHaveBeenCalledWith("firebase-ui", version, framework); + expect(registerVersion).toHaveBeenCalledWith("firebase-ui-web", version, framework); expect(registerVersion).toHaveBeenCalledTimes(1); }); @@ -32,7 +32,7 @@ describe("registerFramework", () => { expect(registerVersion).toHaveBeenCalledTimes(frameworks.length); frameworks.forEach((framework) => { - expect(registerVersion).toHaveBeenCalledWith("firebase-ui", version, framework); + expect(registerVersion).toHaveBeenCalledWith("firebase-ui-web", version, framework); }); }); @@ -46,27 +46,17 @@ describe("registerFramework", () => { expect(registerVersion).toHaveBeenCalledTimes(versions.length); versions.forEach((version) => { - expect(registerVersion).toHaveBeenCalledWith("firebase-ui", version, framework); + expect(registerVersion).toHaveBeenCalledWith("firebase-ui-web", version, framework); }); }); - it("should handle empty string parameters", () => { - const framework = ""; - const version = ""; - - registerFramework(framework, version); - - expect(registerVersion).toHaveBeenCalledWith("firebase-ui", "", ""); - expect(registerVersion).toHaveBeenCalledTimes(1); - }); - it("should handle special characters in parameters", () => { const framework = "react"; const version = "1.0.0-beta.1"; registerFramework(framework, version); - expect(registerVersion).toHaveBeenCalledWith("firebase-ui", version, framework); + expect(registerVersion).toHaveBeenCalledWith("firebase-ui-web", version, framework); expect(registerVersion).toHaveBeenCalledTimes(1); }); }); diff --git a/packages/core/src/register-framework.ts b/packages/core/src/register-framework.ts index 93fbf2d7..00c6b2a6 100644 --- a/packages/core/src/register-framework.ts +++ b/packages/core/src/register-framework.ts @@ -7,5 +7,5 @@ import { registerVersion } from "firebase/app"; * @param version The version of the framework being registered. */ export function registerFramework(framework: string, version: string) { - registerVersion("firebase-ui", version, framework); + registerVersion("firebase-ui-web", version, framework); } \ No newline at end of file diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index b3313791..50451a1f 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -17,9 +17,9 @@ import { registerFramework } from "@firebase-ui/core"; import pkgJson from '../package.json'; -registerFramework("react", pkgJson.version); - export * from "./auth"; export * from "./hooks"; export * from "./components"; export { FirebaseUIProvider, type FirebaseUIProviderProps } from "./context"; + +registerFramework("react", pkgJson.version); \ No newline at end of file