diff --git a/package-lock.json b/package-lock.json index 3ab3f66..2a2d812 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,14 @@ { "name": "flagsmith-react", - "version": "1.1.0", + "version": "1.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.1.0", + "version": "1.2.0", "license": "MIT", "dependencies": { + "@jcmagoo/react-event-emitter": "^1.0.3", "flagsmith": "^1.4.1", "prop-types": "^15.7.2" }, @@ -1365,6 +1366,17 @@ "node": ">=8" } }, + "node_modules/@jcmagoo/react-event-emitter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@jcmagoo/react-event-emitter/-/react-event-emitter-1.0.3.tgz", + "integrity": "sha512-ITK79p6iI6Np1c6ul342e5rd0b7+RY/P6R06Z4ihBOx8QKDeda6gTNnOHFmkLeYhmNO9C0YarBgnhCMyou28sw==", + "engines": { + "npm": ">7.0.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17" + } + }, "node_modules/@jest/console": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", @@ -8531,7 +8543,6 @@ "version": "16.14.0", "resolved": "https://gfsdeliver.jfrog.io/artifactory/api/npm/npm/react/-/react-16.14.0.tgz", "integrity": "sha1-lNd23dCqo32j7aj8W2sYpMmjEU0=", - "dev": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -11919,6 +11930,12 @@ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, + "@jcmagoo/react-event-emitter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@jcmagoo/react-event-emitter/-/react-event-emitter-1.0.3.tgz", + "integrity": "sha512-ITK79p6iI6Np1c6ul342e5rd0b7+RY/P6R06Z4ihBOx8QKDeda6gTNnOHFmkLeYhmNO9C0YarBgnhCMyou28sw==", + "requires": {} + }, "@jest/console": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", @@ -17709,7 +17726,6 @@ "version": "16.14.0", "resolved": "https://gfsdeliver.jfrog.io/artifactory/api/npm/npm/react/-/react-16.14.0.tgz", "integrity": "sha1-lNd23dCqo32j7aj8W2sYpMmjEU0=", - "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", diff --git a/package.json b/package.json index 6f03a38..9f66682 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "react-dom": "^16.11.0 || ^17" }, "dependencies": { + "@jcmagoo/react-event-emitter": "^1.0.3", "flagsmith": "^1.4.1", "prop-types": "^15.7.2" }, diff --git a/src/flagsmith-provider.js b/src/flagsmith-provider.js index 17f772a..263a792 100644 --- a/src/flagsmith-provider.js +++ b/src/flagsmith-provider.js @@ -5,7 +5,7 @@ import PropTypes from "prop-types"; import FlagsmithContext from "./flagsmith-context"; import { reducer } from "./reducer"; -import { useEventEmitter } from "./use-event-emitter"; +import { useEventEmitter } from "@jcmagoo/react-event-emitter"; import reactFlagsmith from "flagsmith"; diff --git a/src/use-event-emitter.js b/src/use-event-emitter.js deleted file mode 100644 index 82c60d1..0000000 --- a/src/use-event-emitter.js +++ /dev/null @@ -1,31 +0,0 @@ -import { useRef, useEffect } from "react"; - -export function useEventEmitter() { - const ref = useRef(); - if (!ref.current) { - ref.current = { - subscriptions: new Set(), - emit: (val) => { - for (const subscription of ref.current.subscriptions) { - subscription(val); - } - }, - useSubscription: (callback) => { - const callbackRef = useRef(); - callbackRef.current = callback; - useEffect(() => { - function subscription(val) { - if (callbackRef.current) { - callbackRef.current(val); - } - } - ref.current.subscriptions.add(subscription); - return () => { - ref.current.subscriptions.delete(subscription); - }; - }, []); - }, - }; - } - return ref.current; -}