reactor-feature-toggle 6.0.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
7
7
 
8
8
  ## [Unreleased][]
9
9
 
10
+ ## [6.1.0][] - 2025-12-04
11
+
12
+ ### Added
13
+
14
+ - Adding `useFeatureToggle()` context
15
+
16
+ ## [6.0.1][] - 2025-12-04
17
+
18
+ ### Fixed
19
+
20
+ - Fixed exported library types
21
+
10
22
  ## [6.0.0][] - 2025-12-04
11
23
 
12
24
  ### Updated
@@ -169,6 +181,8 @@ And pass `featureName` prop with `!` prefix to keep the same behavior on WebApp
169
181
  [4.0.5]: https://github.com/willmendesneto/reactor-feature-toggle/tree/v4.0.5
170
182
 
171
183
 
172
- [Unreleased]: https://github.com/willmendesneto/reactor-feature-toggle/compare/v6.0.0...HEAD
184
+ [Unreleased]: https://github.com/willmendesneto/reactor-feature-toggle/compare/v6.1.0...HEAD
185
+ [6.1.0]: https://github.com/willmendesneto/reactor-feature-toggle/compare/v6.0.1...v6.1.0
186
+ [6.0.1]: https://github.com/willmendesneto/reactor-feature-toggle/compare/v6.0.0...v6.0.1
173
187
  [6.0.0]: https://github.com/willmendesneto/reactor-feature-toggle/compare/v5.0.0...v6.0.0
174
188
  [5.0.0]: https://github.com/willmendesneto/reactor-feature-toggle/tree/v5.0.0
@@ -1,7 +1,13 @@
1
- import { ReactNode, FC } from 'react';
1
+ import { ReactNode } from 'react';
2
2
  import { FeatureToggleServiceConfig } from 'feature-toggle-service';
3
3
  export interface ReactorFeatureToggleProviderProps {
4
4
  children: ReactNode;
5
5
  featureToggleService: FeatureToggleServiceConfig;
6
6
  }
7
- export declare const FeatureToggleProvider: FC<ReactorFeatureToggleProviderProps>;
7
+ interface FeatureToggleContextType {
8
+ isOn: (featureName: string) => boolean;
9
+ toggles: FeatureToggleServiceConfig | null;
10
+ }
11
+ export declare const FeatureToggleProvider: ({ children, featureToggleService, }: ReactorFeatureToggleProviderProps) => JSX.Element;
12
+ export declare function useFeatureToggle(): FeatureToggleContextType;
13
+ export {};
@@ -1,8 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FeatureToggleProvider = void 0;
3
+ exports.useFeatureToggle = exports.FeatureToggleProvider = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
4
6
  var feature_toggle_service_1 = require("feature-toggle-service");
5
- exports.FeatureToggleProvider = function (props) {
6
- feature_toggle_service_1.set(props.featureToggleService);
7
- return props.children;
7
+ var FeatureToggleContext = react_1.createContext({
8
+ isOn: feature_toggle_service_1.isOn,
9
+ toggles: null,
10
+ });
11
+ exports.FeatureToggleProvider = function (_a) {
12
+ var children = _a.children, featureToggleService = _a.featureToggleService;
13
+ feature_toggle_service_1.set(featureToggleService);
14
+ return (react_1.default.createElement(FeatureToggleContext.Provider, { value: { isOn: feature_toggle_service_1.isOn, toggles: featureToggleService } }, children));
8
15
  };
16
+ function useFeatureToggle() {
17
+ var context = react_1.useContext(FeatureToggleContext);
18
+ if (!context) {
19
+ throw new Error('useFeatureToggle must be used within FeatureToggleClientProvider');
20
+ }
21
+ return context;
22
+ }
23
+ exports.useFeatureToggle = useFeatureToggle;
@@ -1,7 +1,13 @@
1
- import { ReactNode, FC } from 'react';
1
+ import { ReactNode } from 'react';
2
2
  import { FeatureToggleServiceConfig } from 'feature-toggle-service';
3
3
  export interface ReactorFeatureToggleProviderProps {
4
4
  children: ReactNode;
5
5
  featureToggleService: FeatureToggleServiceConfig;
6
6
  }
7
- export declare const FeatureToggleProvider: FC<ReactorFeatureToggleProviderProps>;
7
+ interface FeatureToggleContextType {
8
+ isOn: (featureName: string) => boolean;
9
+ toggles: FeatureToggleServiceConfig | null;
10
+ }
11
+ export declare const FeatureToggleProvider: ({ children, featureToggleService, }: ReactorFeatureToggleProviderProps) => JSX.Element;
12
+ export declare function useFeatureToggle(): FeatureToggleContextType;
13
+ export {};
@@ -1,5 +1,17 @@
1
- import { set } from 'feature-toggle-service';
2
- export const FeatureToggleProvider = props => {
3
- set(props.featureToggleService);
4
- return props.children;
1
+ import React, { createContext, useContext } from 'react';
2
+ import { set, isOn } from 'feature-toggle-service';
3
+ const FeatureToggleContext = createContext({
4
+ isOn,
5
+ toggles: null,
6
+ });
7
+ export const FeatureToggleProvider = ({ children, featureToggleService, }) => {
8
+ set(featureToggleService);
9
+ return (React.createElement(FeatureToggleContext.Provider, { value: { isOn, toggles: featureToggleService } }, children));
5
10
  };
11
+ export function useFeatureToggle() {
12
+ const context = useContext(FeatureToggleContext);
13
+ if (!context) {
14
+ throw new Error('useFeatureToggle must be used within FeatureToggleClientProvider');
15
+ }
16
+ return context;
17
+ }
@@ -1,7 +1,13 @@
1
- import { ReactNode, FC } from 'react';
1
+ import { ReactNode } from 'react';
2
2
  import { FeatureToggleServiceConfig } from 'feature-toggle-service';
3
3
  export interface ReactorFeatureToggleProviderProps {
4
4
  children: ReactNode;
5
5
  featureToggleService: FeatureToggleServiceConfig;
6
6
  }
7
- export declare const FeatureToggleProvider: FC<ReactorFeatureToggleProviderProps>;
7
+ interface FeatureToggleContextType {
8
+ isOn: (featureName: string) => boolean;
9
+ toggles: FeatureToggleServiceConfig | null;
10
+ }
11
+ export declare const FeatureToggleProvider: ({ children, featureToggleService, }: ReactorFeatureToggleProviderProps) => JSX.Element;
12
+ export declare function useFeatureToggle(): FeatureToggleContextType;
13
+ export {};
@@ -1,5 +1,18 @@
1
- import { set } from 'feature-toggle-service';
2
- export var FeatureToggleProvider = function (props) {
3
- set(props.featureToggleService);
4
- return props.children;
1
+ import React, { createContext, useContext } from 'react';
2
+ import { set, isOn } from 'feature-toggle-service';
3
+ var FeatureToggleContext = createContext({
4
+ isOn: isOn,
5
+ toggles: null,
6
+ });
7
+ export var FeatureToggleProvider = function (_a) {
8
+ var children = _a.children, featureToggleService = _a.featureToggleService;
9
+ set(featureToggleService);
10
+ return (React.createElement(FeatureToggleContext.Provider, { value: { isOn: isOn, toggles: featureToggleService } }, children));
5
11
  };
12
+ export function useFeatureToggle() {
13
+ var context = useContext(FeatureToggleContext);
14
+ if (!context) {
15
+ throw new Error('useFeatureToggle must be used within FeatureToggleClientProvider');
16
+ }
17
+ return context;
18
+ }
@@ -1,8 +1,10 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('feature-toggle-service')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'feature-toggle-service'], factory) :
4
- (global = global || self, factory(global.ReactorFeatureToggle = {}, global.featureToggleService));
5
- }(this, (function (exports, featureToggleService) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('feature-toggle-service'), require('react')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'feature-toggle-service', 'react'], factory) :
4
+ (global = global || self, factory(global.ReactorFeatureToggle = {}, global.featureToggleService, global.React));
5
+ }(this, (function (exports, featureToggleService, React) { 'use strict';
6
+
7
+ var React__default = 'default' in React ? React['default'] : React;
6
8
 
7
9
  /**
8
10
  * Checks if feature toggle is turned on of turned off
@@ -35,13 +37,26 @@
35
37
  return showContent ? props.children : null;
36
38
  };
37
39
 
38
- var FeatureToggleProvider = function (props) {
39
- featureToggleService.set(props.featureToggleService);
40
- return props.children;
40
+ var FeatureToggleContext = React.createContext({
41
+ isOn: featureToggleService.isOn,
42
+ toggles: null,
43
+ });
44
+ var FeatureToggleProvider = function (_a) {
45
+ var children = _a.children, featureToggleService$1 = _a.featureToggleService;
46
+ featureToggleService.set(featureToggleService$1);
47
+ return (React__default.createElement(FeatureToggleContext.Provider, { value: { isOn: featureToggleService.isOn, toggles: featureToggleService$1 } }, children));
41
48
  };
49
+ function useFeatureToggle() {
50
+ var context = React.useContext(FeatureToggleContext);
51
+ if (!context) {
52
+ throw new Error('useFeatureToggle must be used within FeatureToggleClientProvider');
53
+ }
54
+ return context;
55
+ }
42
56
 
43
57
  exports.FeatureToggle = FeatureToggle;
44
58
  exports.FeatureToggleProvider = FeatureToggleProvider;
59
+ exports.useFeatureToggle = useFeatureToggle;
45
60
 
46
61
  Object.defineProperty(exports, '__esModule', { value: true });
47
62
 
@@ -1 +1 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("feature-toggle-service")):"function"==typeof define&&define.amd?define(["exports","feature-toggle-service"],r):r((e=e||self).ReactorFeatureToggle={},e.featureToggleService)}(this,function(e,t){"use strict";function r(e){function r(e){return"!"===e[0]?!t.isOn(e.replace("!","")):t.isOn(e)}return"string"==typeof e?r(e):!!Array.isArray(e)&&e.every(r)}e.FeatureToggle=function(e){return r(e.featureName)?e.children:null},e.FeatureToggleProvider=function(e){return t.set(e.featureToggleService),e.children},Object.defineProperty(e,"__esModule",{value:!0})});
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("feature-toggle-service"),require("react")):"function"==typeof define&&define.amd?define(["exports","feature-toggle-service","react"],r):r((e=e||self).ReactorFeatureToggle={},e.featureToggleService,e.React)}(this,function(e,n,r){"use strict";function t(e){function r(e){return"!"===e[0]?!n.isOn(e.replace("!","")):n.isOn(e)}return"string"==typeof e?r(e):!!Array.isArray(e)&&e.every(r)}var u="default"in r?r.default:r,i=r.createContext({isOn:n.isOn,toggles:null});e.FeatureToggle=function(e){return t(e.featureName)?e.children:null},e.FeatureToggleProvider=function(e){var r=e.children,t=e.featureToggleService;return n.set(t),u.createElement(i.Provider,{value:{isOn:n.isOn,toggles:t}},r)},e.useFeatureToggle=function(){var e=r.useContext(i);if(!e)throw new Error("useFeatureToggle must be used within FeatureToggleClientProvider");return e},Object.defineProperty(e,"__esModule",{value:!0})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reactor-feature-toggle",
3
- "version": "6.0.0",
3
+ "version": "6.1.0",
4
4
  "description": "Your module to handle with feature toggles in ReactJS applications easier",
5
5
  "author": "Will Mendes <willmendesneto@gmail.com> (http://github.com/willmendesneto)",
6
6
  "keywords": [
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "main": "dist/cjs/index.js",
28
28
  "module": "dist/esm/index.js",
29
- "types": "dist/umd/index.d.ts",
29
+ "types": "dist/cjs/index.d.ts",
30
30
  "sideEffects": false,
31
31
  "browser": "dist/umd/reactor-feature-toggle.js",
32
32
  "jsnext:main": "dist/esm/index.js",