Skip to content

Commit e3ec627

Browse files
authored
feat(core): Add registerFramework util
2 parents f0f9414 + fe5f978 commit e3ec627

File tree

4 files changed

+85
-0
lines changed

4 files changed

+85
-0
lines changed

packages/core/src/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,17 @@
1414
* limitations under the License.
1515
*/
1616

17+
import { registerFramework } from "./register-framework";
18+
import pkgJson from '../package.json';
19+
20+
registerFramework("core", pkgJson.version);
21+
1722
export * from "./auth";
1823
export * from "./behaviors";
1924
export * from "./config";
2025
export * from "./errors";
2126
export * from "./schemas";
2227
export * from "./country-data";
2328
export * from "./translations";
29+
export * from "./register-framework";
30+
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { describe, it, expect, vi, beforeEach } from "vitest";
2+
import { registerFramework } from "./register-framework";
3+
4+
vi.mock("firebase/app", () => ({
5+
registerVersion: vi.fn(),
6+
}));
7+
8+
import { registerVersion } from "firebase/app";
9+
10+
describe("registerFramework", () => {
11+
beforeEach(() => {
12+
vi.clearAllMocks();
13+
});
14+
15+
it("should call registerVersion with correct parameters", () => {
16+
const framework = "react";
17+
const version = "1.0.0";
18+
19+
registerFramework(framework, version);
20+
21+
expect(registerVersion).toHaveBeenCalledWith("firebase-ui-web", version, framework);
22+
expect(registerVersion).toHaveBeenCalledTimes(1);
23+
});
24+
25+
it("should handle different framework types", () => {
26+
const frameworks = ["react", "angular"];
27+
const version = "2.0.0";
28+
29+
frameworks.forEach((framework) => {
30+
registerFramework(framework, version);
31+
});
32+
33+
expect(registerVersion).toHaveBeenCalledTimes(frameworks.length);
34+
frameworks.forEach((framework) => {
35+
expect(registerVersion).toHaveBeenCalledWith("firebase-ui-web", version, framework);
36+
});
37+
});
38+
39+
it("should handle different version formats", () => {
40+
const framework = "react";
41+
const versions = ["1.0.0", "2.1.3", "0.0.1", "10.20.30"];
42+
43+
versions.forEach((version) => {
44+
registerFramework(framework, version);
45+
});
46+
47+
expect(registerVersion).toHaveBeenCalledTimes(versions.length);
48+
versions.forEach((version) => {
49+
expect(registerVersion).toHaveBeenCalledWith("firebase-ui-web", version, framework);
50+
});
51+
});
52+
53+
it("should handle special characters in parameters", () => {
54+
const framework = "react";
55+
const version = "1.0.0-beta.1";
56+
57+
registerFramework(framework, version);
58+
59+
expect(registerVersion).toHaveBeenCalledWith("firebase-ui-web", version, framework);
60+
expect(registerVersion).toHaveBeenCalledTimes(1);
61+
});
62+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { registerVersion } from "firebase/app";
2+
3+
/**
4+
* Register a framework with the FirebaseUI configuration.
5+
* @internal
6+
* @param framework The type of framework being registered.
7+
* @param version The version of the framework being registered.
8+
*/
9+
export function registerFramework(framework: string, version: string) {
10+
registerVersion("firebase-ui-web", version, framework);
11+
}

packages/react/src/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@
1414
* limitations under the License.
1515
*/
1616

17+
import { registerFramework } from "@firebase-ui/core";
18+
import pkgJson from '../package.json';
19+
1720
export * from "./auth";
1821
export * from "./hooks";
1922
export * from "./components";
2023
export { FirebaseUIProvider, type FirebaseUIProviderProps } from "./context";
24+
25+
registerFramework("react", pkgJson.version);

0 commit comments

Comments
 (0)