From 040d6ede62da8eef07b0c4081b457afb35b88f17 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 27 Feb 2025 12:03:50 +0100 Subject: [PATCH 1/6] feat: improve event listeners, expose more types --- packages/browser-sdk/src/client.ts | 1 + packages/browser-sdk/src/hooksManager.ts | 2 +- packages/browser-sdk/src/index.ts | 1 + packages/react-sdk/src/index.tsx | 13 ++++++++++--- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/browser-sdk/src/client.ts b/packages/browser-sdk/src/client.ts index 789b80d4..ce74c582 100644 --- a/packages/browser-sdk/src/client.ts +++ b/packages/browser-sdk/src/client.ts @@ -482,6 +482,7 @@ export class BucketClient { handler: (args0: HookArgs[THookType]) => void, ) { this.hooks.addHook(type, handler); + return () => this.hooks.removeHook(type, handler); } /** diff --git a/packages/browser-sdk/src/hooksManager.ts b/packages/browser-sdk/src/hooksManager.ts index 9c0ea402..f01e75ff 100644 --- a/packages/browser-sdk/src/hooksManager.ts +++ b/packages/browser-sdk/src/hooksManager.ts @@ -13,7 +13,7 @@ export interface HookArgs { track: TrackEvent; } -type TrackEvent = { +export type TrackEvent = { user: UserContext; company?: CompanyContext; eventName: string; diff --git a/packages/browser-sdk/src/index.ts b/packages/browser-sdk/src/index.ts index a1044228..1de46df5 100644 --- a/packages/browser-sdk/src/index.ts +++ b/packages/browser-sdk/src/index.ts @@ -1,6 +1,7 @@ export type { Feature, InitOptions, ToolbarOptions } from "./client"; export { BucketClient } from "./client"; export type { BucketContext, CompanyContext, UserContext } from "./context"; +export type { TrackEvent } from "./hooksManager"; export type { CheckEvent, FallbackFeatureOverride, diff --git a/packages/react-sdk/src/index.tsx b/packages/react-sdk/src/index.tsx index dab0ff9e..d889dc77 100644 --- a/packages/react-sdk/src/index.tsx +++ b/packages/react-sdk/src/index.tsx @@ -17,8 +17,13 @@ import { RawFeatures, RequestFeedbackData, UnassignedFeedback, + TrackEvent, + UserContext, + CompanyContext, + CheckEvent, } from "@bucketco/browser-sdk"; +export { TrackEvent, UserContext, CompanyContext, CheckEvent, RawFeatures }; import { version } from "../package.json"; // eslint-disable-next-line @typescript-eslint/no-empty-object-type @@ -349,9 +354,11 @@ export function useUpdateOtherContext() { * * ```ts * const client = useClient(); - * client.on("configCheck", () => { - * console.log("configCheck hook called"); - * }); + * useEffect(() => { + * return client?.on("enabledCheck", () => { + * console.log("enabledCheck hook called"); + * }); + * }, [client]); * ``` */ export function useClient() { From bc665e2482162c01bde28bb7af7ee74464e130b8 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 27 Feb 2025 12:10:57 +0100 Subject: [PATCH 2/6] fix dependency :rolleyes: --- packages/react-sdk/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-sdk/package.json b/packages/react-sdk/package.json index ebd29259..551e5049 100644 --- a/packages/react-sdk/package.json +++ b/packages/react-sdk/package.json @@ -34,7 +34,7 @@ } }, "dependencies": { - "@bucketco/browser-sdk": "3.0.0-alpha.6", + "@bucketco/browser-sdk": "3.0.0", "canonical-json": "^0.0.4", "rollup": "^4.2.0" }, From 711f2189675b810ee968cd96144141e77e2c4cb8 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 27 Feb 2025 12:11:42 +0100 Subject: [PATCH 3/6] add yarn.lock --- yarn.lock | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/yarn.lock b/yarn.lock index 89f96887..7bcffdf5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -448,18 +448,6 @@ __metadata: languageName: unknown linkType: soft -"@bucketco/browser-sdk@npm:3.0.0-alpha.6": - version: 3.0.0-alpha.6 - resolution: "@bucketco/browser-sdk@npm:3.0.0-alpha.6" - dependencies: - "@floating-ui/dom": "npm:^1.6.8" - canonical-json: "npm:^0.0.4" - js-cookie: "npm:^3.0.5" - preact: "npm:^10.22.1" - checksum: 10c0/3fe141d1674401d7bbfebec76a59cabbc0e76ed3006198aa91704d237cc0ee5c0731aae9bef5d1c101eef47a49460b06ecb30879f7a5d3cd29d2f35bddb26306 - languageName: node - linkType: hard - "@bucketco/eslint-config@npm:0.0.2, @bucketco/eslint-config@npm:~0.0.2, @bucketco/eslint-config@workspace:^, @bucketco/eslint-config@workspace:packages/eslint-config": version: 0.0.0-use.local resolution: "@bucketco/eslint-config@workspace:packages/eslint-config" @@ -567,7 +555,7 @@ __metadata: version: 0.0.0-use.local resolution: "@bucketco/react-sdk@workspace:packages/react-sdk" dependencies: - "@bucketco/browser-sdk": "npm:3.0.0-alpha.6" + "@bucketco/browser-sdk": "npm:3.0.0" "@bucketco/eslint-config": "workspace:^" "@bucketco/tsconfig": "workspace:^" "@testing-library/react": "npm:^15.0.7" From 233062e027cf7f498447d7fd699a4d244ea2a10d Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 27 Feb 2025 12:36:21 +0100 Subject: [PATCH 4/6] fix exports --- packages/react-sdk/src/index.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/react-sdk/src/index.tsx b/packages/react-sdk/src/index.tsx index d889dc77..7d13862b 100644 --- a/packages/react-sdk/src/index.tsx +++ b/packages/react-sdk/src/index.tsx @@ -17,13 +17,19 @@ import { RawFeatures, RequestFeedbackData, UnassignedFeedback, - TrackEvent, UserContext, CompanyContext, CheckEvent, + TrackEvent, } from "@bucketco/browser-sdk"; -export { TrackEvent, UserContext, CompanyContext, CheckEvent, RawFeatures }; +export type { + TrackEvent, + UserContext, + CompanyContext, + CheckEvent, + RawFeatures, +}; import { version } from "../package.json"; // eslint-disable-next-line @typescript-eslint/no-empty-object-type From fed87a40ab5967430da2d7ea3bd033a3f68ff041 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 27 Feb 2025 12:53:46 +0100 Subject: [PATCH 5/6] add jsdoc --- packages/browser-sdk/src/client.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/browser-sdk/src/client.ts b/packages/browser-sdk/src/client.ts index ce74c582..d4d73217 100644 --- a/packages/browser-sdk/src/client.ts +++ b/packages/browser-sdk/src/client.ts @@ -476,6 +476,7 @@ export class BucketClient { * Add a hook to the client. * * @param hook Hook to add. + * @returns A function to remove the hook. */ on( type: THookType, From 7884ee21818a3b8edd2686a0c503dd8e1db97826 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 27 Feb 2025 13:12:30 +0100 Subject: [PATCH 6/6] lint fixes --- packages/browser-sdk/src/index.ts | 2 +- packages/react-sdk/src/index.tsx | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/browser-sdk/src/index.ts b/packages/browser-sdk/src/index.ts index 1de46df5..2584de8e 100644 --- a/packages/browser-sdk/src/index.ts +++ b/packages/browser-sdk/src/index.ts @@ -1,7 +1,6 @@ export type { Feature, InitOptions, ToolbarOptions } from "./client"; export { BucketClient } from "./client"; export type { BucketContext, CompanyContext, UserContext } from "./context"; -export type { TrackEvent } from "./hooksManager"; export type { CheckEvent, FallbackFeatureOverride, @@ -29,5 +28,6 @@ export type { OnScoreSubmitResult, OpenFeedbackFormOptions, } from "./feedback/ui/types"; +export type { TrackEvent } from "./hooksManager"; export type { Logger } from "./logger"; export { feedbackContainerId, propagatedEvents } from "./ui/constants"; diff --git a/packages/react-sdk/src/index.tsx b/packages/react-sdk/src/index.tsx index 7d13862b..4b7906c5 100644 --- a/packages/react-sdk/src/index.tsx +++ b/packages/react-sdk/src/index.tsx @@ -13,24 +13,25 @@ import canonicalJSON from "canonical-json"; import { BucketClient, BucketContext, + CheckEvent, + CompanyContext, InitOptions, RawFeatures, RequestFeedbackData, + TrackEvent, UnassignedFeedback, UserContext, - CompanyContext, - CheckEvent, - TrackEvent, } from "@bucketco/browser-sdk"; +import { version } from "../package.json"; + export type { - TrackEvent, - UserContext, - CompanyContext, CheckEvent, + CompanyContext, RawFeatures, + TrackEvent, + UserContext, }; -import { version } from "../package.json"; // eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface Features {}