@featurevisor/react 2.4.0 → 2.6.7
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 +56 -0
- package/LICENSE +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.gz +0 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,62 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.6.7](https://github.com/featurevisor/featurevisor/compare/v2.6.6...v2.6.7) (2026-02-05)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @featurevisor/react
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [2.6.6](https://github.com/featurevisor/featurevisor/compare/v2.6.5...v2.6.6) (2026-02-05)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @featurevisor/react
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [2.6.5](https://github.com/featurevisor/featurevisor/compare/v2.6.4...v2.6.5) (2026-02-05)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @featurevisor/react
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [2.6.4](https://github.com/featurevisor/featurevisor/compare/v2.6.3...v2.6.4) (2026-02-05)
|
|
31
|
+
|
|
32
|
+
**Note:** Version bump only for package @featurevisor/react
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## [2.6.3](https://github.com/featurevisor/featurevisor/compare/v2.6.2...v2.6.3) (2026-02-05)
|
|
39
|
+
|
|
40
|
+
**Note:** Version bump only for package @featurevisor/react
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## [2.6.2](https://github.com/featurevisor/featurevisor/compare/v2.6.1...v2.6.2) (2026-02-05)
|
|
47
|
+
|
|
48
|
+
**Note:** Version bump only for package @featurevisor/react
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# [2.6.0](https://github.com/featurevisor/featurevisor/compare/v2.5.0...v2.6.0) (2026-01-25)
|
|
55
|
+
|
|
56
|
+
**Note:** Version bump only for package @featurevisor/react
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
6
62
|
# [2.4.0](https://github.com/featurevisor/featurevisor/compare/v2.3.3...v2.4.0) (2025-12-28)
|
|
7
63
|
|
|
8
64
|
|
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2026 Fahad Heylaal (https://fahad19.com)
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.FeaturevisorReact=t(require("react")):e.FeaturevisorReact=t(e.React)}(this,(e=>(()=>{"use strict";var t={253
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.FeaturevisorReact=t(require("react")):e.FeaturevisorReact=t(e.React)}(this,(e=>(()=>{"use strict";var t={253(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.FeaturevisorContext=void 0;var n=r(12);t.FeaturevisorContext=n.createContext(void 0)},567(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.FeaturevisorProvider=function(e){return n.createElement(o.FeaturevisorContext.Provider,{value:e.instance},e.children)};var n=r(12),o=r(253)},869(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(253),t),o(r(567),t),o(r(316),t),o(r(926),t),o(r(929),t),o(r(940),t),o(r(576),t)},576(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.onFeatureChange=function(e,t,r){var n=e.on("datafile_set",(function(e){var n=e.features;Array.isArray(n)&&n.indexOf(t)>-1&&r()})),o=e.on("context_set",(function(){r()})),u=e.on("sticky_set",(function(e){var n=e.features;Array.isArray(n)&&n.indexOf(t)>-1&&r()}));return function(){n(),o(),u()}}},940(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.useFlag=function(e,t){void 0===t&&(t={});var r=(0,o.useSdk)(),a=r.isEnabled(e,t),i=(0,n.useState)(a),c=i[0],s=i[1];return(0,n.useEffect)((function(){var n=(0,u.onFeatureChange)(r,e,(function(){var n=r.isEnabled(e,t);n!==c&&s(n)}));return function(){n()}}),[e,t]),c};var n=r(12),o=r(316),u=r(576)},316(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.useSdk=u,t.useFeaturevisor=function(){return u()};var n=r(12),o=r(253);function u(){return n.useContext(o.FeaturevisorContext)}},926(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.useVariable=function(e,t,r){void 0===r&&(r={});var a=(0,o.useSdk)(),i=a.getVariable(e,t,r),c=(0,n.useState)(i),s=c[0],f=c[1];return(0,n.useEffect)((function(){var n=(0,u.onFeatureChange)(a,e,(function(){var n=a.getVariable(e,t,r);n!==s&&f(n)}));return function(){n()}}),[e,t,r]),s};var n=r(12),o=r(316),u=r(576)},929(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.useVariation=function(e,t){void 0===t&&(t={});var r=(0,o.useSdk)(),a=r.getVariation(e,t),i=(0,n.useState)(a),c=i[0],s=i[1];return(0,n.useEffect)((function(){var n=(0,u.onFeatureChange)(r,e,(function(){var n=r.getVariation(e,t);n!==c&&s(n)}));return function(){n()}}),[e,t]),c};var n=r(12),o=r(316),u=r(576)},12(t){t.exports=e}},r={};return function e(n){var o=r[n];if(void 0!==o)return o.exports;var u=r[n]={exports:{}};return t[n].call(u.exports,u,u.exports,e),u.exports}(869)})()));
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.gz
CHANGED
|
Binary file
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,EAAQG,QAAQ,UACR,mBAAXC,QAAyBA,OAAOC,IAC9CD,OAAO,CAAC,SAAUJ,GACQ,iBAAZC,QACdA,QAA2B,kBAAID,EAAQG,QAAQ,UAE/CJ,EAAwB,kBAAIC,EAAQD,EAAY,MACjD,CATD,CASGO,MAAOC,G,
|
|
1
|
+
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://FeaturevisorReact/webpack/universalModuleDefinition","webpack://FeaturevisorReact/./src/FeaturevisorContext.ts","webpack://FeaturevisorReact/./src/FeaturevisorProvider.tsx","webpack://FeaturevisorReact/./src/index.ts","webpack://FeaturevisorReact/./src/onFeatureChange.ts","webpack://FeaturevisorReact/./src/useFlag.ts","webpack://FeaturevisorReact/./src/useSdk.ts","webpack://FeaturevisorReact/./src/useVariable.ts","webpack://FeaturevisorReact/./src/useVariation.ts","webpack://FeaturevisorReact/external umd {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack://FeaturevisorReact/webpack/bootstrap","webpack://FeaturevisorReact/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"FeaturevisorReact\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"FeaturevisorReact\"] = factory(root[\"React\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__12__) => {\nreturn ","import * as React from \"react\";\nimport { FeaturevisorInstance } from \"@featurevisor/sdk\";\n\nexport const FeaturevisorContext = React.createContext<FeaturevisorInstance | undefined>(undefined);\n","import * as React from \"react\";\nimport { FeaturevisorInstance } from \"@featurevisor/sdk\";\n\nimport { FeaturevisorContext } from \"./FeaturevisorContext\";\n\nexport interface FeaturevisorProviderProps {\n instance: FeaturevisorInstance;\n children: React.ReactNode;\n}\n\nexport function FeaturevisorProvider(props: FeaturevisorProviderProps) {\n return (\n <FeaturevisorContext.Provider value={props.instance}>\n {props.children}\n </FeaturevisorContext.Provider>\n );\n}\n","// contexts\nexport * from \"./FeaturevisorContext\";\n\n// components\nexport * from \"./FeaturevisorProvider\";\n\n// hooks\nexport * from \"./useSdk\";\nexport * from \"./useVariable\";\nexport * from \"./useVariation\";\nexport * from \"./useFlag\";\n\n// utils\nexport * from \"./onFeatureChange\";\n","import { FeaturevisorInstance } from \"@featurevisor/sdk\";\nimport type { FeatureKey } from \"@featurevisor/types\";\n\nexport function onFeatureChange(sdk: FeaturevisorInstance, featureKey: FeatureKey, fn) {\n // datafile_set\n const unsubscribeDatafileSet = sdk.on(\"datafile_set\", ({ features }) => {\n if (Array.isArray(features) && features.indexOf(featureKey) > -1) {\n fn();\n }\n });\n\n // context_set\n const unsubscribeContextSet = sdk.on(\"context_set\", () => {\n fn();\n });\n\n // sticky_set\n const unsubscribeStickySet = sdk.on(\"sticky_set\", ({ features }) => {\n if (Array.isArray(features) && features.indexOf(featureKey) > -1) {\n fn();\n }\n });\n\n return function () {\n unsubscribeDatafileSet();\n unsubscribeContextSet();\n unsubscribeStickySet();\n };\n}\n","import { useEffect, useState } from \"react\";\n\nimport type { Context, FeatureKey } from \"@featurevisor/types\";\n\nimport { useSdk } from \"./useSdk\";\nimport { onFeatureChange } from \"./onFeatureChange\";\n\nexport function useFlag(featureKey: FeatureKey, context: Context = {}): boolean {\n const sdk = useSdk();\n const initialValue = sdk.isEnabled(featureKey, context);\n const [isEnabled, setIsEnabled] = useState(initialValue);\n\n useEffect(() => {\n const unsubscribe = onFeatureChange(sdk, featureKey, () => {\n const newValue = sdk.isEnabled(featureKey, context);\n\n if (newValue !== isEnabled) {\n setIsEnabled(newValue);\n }\n });\n\n return () => {\n unsubscribe();\n };\n }, [featureKey, context]);\n\n return isEnabled;\n}\n","import * as React from \"react\";\nimport { FeaturevisorInstance } from \"@featurevisor/sdk\";\n\nimport { FeaturevisorContext } from \"./FeaturevisorContext\";\n\nexport function useSdk(): FeaturevisorInstance {\n const sdk = React.useContext(FeaturevisorContext);\n\n return sdk as FeaturevisorInstance;\n}\n\nexport function useFeaturevisor(): FeaturevisorInstance {\n return useSdk();\n}\n","import { useEffect, useState } from \"react\";\n\nimport type { Context, FeatureKey, VariableKey, VariableValue } from \"@featurevisor/types\";\n\nimport { useSdk } from \"./useSdk\";\nimport { onFeatureChange } from \"./onFeatureChange\";\n\nexport function useVariable(\n featureKey: FeatureKey,\n variableKey: VariableKey,\n context: Context = {},\n): VariableValue | null {\n const sdk = useSdk();\n const initialValue = sdk.getVariable(featureKey, variableKey, context);\n const [variableValue, setVariableValue] = useState<VariableValue | null>(initialValue);\n\n useEffect(() => {\n const unsubscribe = onFeatureChange(sdk, featureKey, () => {\n const newValue = sdk.getVariable(featureKey, variableKey, context);\n\n if (newValue !== variableValue) {\n setVariableValue(newValue);\n }\n });\n\n return () => {\n unsubscribe();\n };\n }, [featureKey, variableKey, context]);\n\n return variableValue;\n}\n","import { useEffect, useState } from \"react\";\n\nimport { Context, FeatureKey, VariationValue } from \"@featurevisor/types\";\n\nimport { useSdk } from \"./useSdk\";\nimport { onFeatureChange } from \"./onFeatureChange\";\n\nexport function useVariation(featureKey: FeatureKey, context: Context = {}): VariationValue | null {\n const sdk = useSdk();\n const initialValue = sdk.getVariation(featureKey, context);\n const [variationValue, setVariationValue] = useState<VariationValue | null>(initialValue);\n\n useEffect(() => {\n const unsubscribe = onFeatureChange(sdk, featureKey, () => {\n const newValue = sdk.getVariation(featureKey, context);\n\n if (newValue !== variationValue) {\n setVariationValue(newValue);\n }\n });\n\n return () => {\n unsubscribe();\n };\n }, [featureKey, context]);\n\n return variationValue;\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__12__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(869);\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__12__","FeaturevisorContext","React","createContext","undefined","props","Provider","value","instance","children","sdk","featureKey","fn","unsubscribeDatafileSet","on","features","Array","isArray","indexOf","unsubscribeContextSet","unsubscribeStickySet","context","useSdk","initialValue","isEnabled","useState","setIsEnabled","useEffect","unsubscribe","onFeatureChange","newValue","useContext","variableKey","getVariable","variableValue","setVariableValue","getVariation","variationValue","setVariationValue","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@featurevisor/react",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.7",
|
|
4
4
|
"description": "React package for Featurevisor",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"url": "https://github.com/featurevisor/featurevisor/issues"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@featurevisor/sdk": "2.
|
|
45
|
-
"@featurevisor/types": "2.
|
|
44
|
+
"@featurevisor/sdk": "2.6.7",
|
|
45
|
+
"@featurevisor/types": "2.6.7"
|
|
46
46
|
},
|
|
47
47
|
"license": "MIT",
|
|
48
48
|
"devDependencies": {
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"@testing-library/react": "^14.0.0",
|
|
51
51
|
"jest-environment-jsdom": "^29.5.0"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "369725e89e88f886a88bf52c22d55961bf04e9f6"
|
|
54
54
|
}
|