@featurevisor/react 0.39.1 → 0.40.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 +11 -0
- package/README.md +21 -14
- package/coverage/clover.xml +21 -14
- package/coverage/coverage-final.json +4 -3
- package/coverage/lcov-report/FeaturevisorContext.ts.html +3 -3
- package/coverage/lcov-report/FeaturevisorProvider.tsx.html +5 -5
- package/coverage/lcov-report/activateFeature.ts.html +1 -1
- package/coverage/lcov-report/index.html +24 -9
- package/coverage/lcov-report/useFlag.ts.html +112 -0
- package/coverage/lcov-report/useSdk.ts.html +6 -6
- package/coverage/lcov-report/useStatus.ts.html +1 -1
- package/coverage/lcov-report/useVariable.ts.html +1 -1
- package/coverage/lcov-report/useVariation.ts.html +1 -1
- package/coverage/lcov.info +29 -13
- package/dist/index.js +1 -1
- package/dist/index.js.gz +0 -0
- package/dist/index.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/useFlag.d.ts +2 -0
- package/lib/useFlag.js +7 -0
- package/lib/useFlag.js.map +1 -0
- package/lib/useFlag.spec.d.ts +1 -0
- package/package.json +4 -4
- package/src/index.ts +1 -0
- package/src/useFlag.spec.tsx +72 -0
- package/src/useFlag.ts +9 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
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
|
+
# [0.40.0](https://github.com/fahad19/featurevisor/compare/v0.39.2...v0.40.0) (2023-07-16)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Hooks for checking if feature is enabled in React and Vue.js ([#108](https://github.com/fahad19/featurevisor/issues/108)) ([4e2a269](https://github.com/fahad19/featurevisor/commit/4e2a269da923a94055d232ec479e6562dc297120))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [0.39.1](https://github.com/fahad19/featurevisor/compare/v0.39.0...v0.39.1) (2023-07-16)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @featurevisor/react
|
package/README.md
CHANGED
|
@@ -7,11 +7,12 @@ Visit [https://featurevisor.com](https://featurevisor.com) for more information.
|
|
|
7
7
|
- [Installation](#installation)
|
|
8
8
|
- [API](#api)
|
|
9
9
|
- [`FeaturevisorProvider`](#featurevisorprovider)
|
|
10
|
-
- [`activateFeature`](#activatefeature)
|
|
11
|
-
- [`useSdk`](#usesdk)
|
|
12
10
|
- [`useStatus`](#usestatus)
|
|
11
|
+
- [`useFlag`](#useflag)
|
|
13
12
|
- [`useVariation`](#usevariation)
|
|
14
13
|
- [`useVariable`](#usevariable)
|
|
14
|
+
- [`activateFeature`](#activatefeature)
|
|
15
|
+
- [`useSdk`](#usesdk)
|
|
15
16
|
|
|
16
17
|
## Installation
|
|
17
18
|
|
|
@@ -43,18 +44,6 @@ function Root() {
|
|
|
43
44
|
}
|
|
44
45
|
```
|
|
45
46
|
|
|
46
|
-
### `activateFeature`
|
|
47
|
-
|
|
48
|
-
> activateFeature(featureKey, context = {}): VariationValue | undefined
|
|
49
|
-
|
|
50
|
-
Hook for activate feature.
|
|
51
|
-
|
|
52
|
-
### `useSdk`
|
|
53
|
-
|
|
54
|
-
> useSdk(): FeaturevisorInstance
|
|
55
|
-
|
|
56
|
-
Hook for getting Featurevisor SDK instance.
|
|
57
|
-
|
|
58
47
|
### `useStatus`
|
|
59
48
|
|
|
60
49
|
> useStatus(): { isReady: boolean }
|
|
@@ -76,6 +65,12 @@ function App() {
|
|
|
76
65
|
}
|
|
77
66
|
```
|
|
78
67
|
|
|
68
|
+
### `useFlag`
|
|
69
|
+
|
|
70
|
+
> useFlag(featureKey, context = {}): boolean
|
|
71
|
+
|
|
72
|
+
Hook for checking if feature is enabled.
|
|
73
|
+
|
|
79
74
|
### `useVariation`
|
|
80
75
|
|
|
81
76
|
> useVariation(featureKey, context = {}): VariationValue | undefined
|
|
@@ -88,6 +83,18 @@ Hook for getting variation value.
|
|
|
88
83
|
|
|
89
84
|
Hook for getting variable value.
|
|
90
85
|
|
|
86
|
+
### `activateFeature`
|
|
87
|
+
|
|
88
|
+
> activateFeature(featureKey, context = {}): VariationValue | undefined
|
|
89
|
+
|
|
90
|
+
Hook for activating feature.
|
|
91
|
+
|
|
92
|
+
### `useSdk`
|
|
93
|
+
|
|
94
|
+
> useSdk(): FeaturevisorInstance
|
|
95
|
+
|
|
96
|
+
Hook for getting Featurevisor SDK instance.
|
|
97
|
+
|
|
91
98
|
## License <!-- omit in toc -->
|
|
92
99
|
|
|
93
100
|
MIT © [Fahad Heylaal](https://fahad19.com)
|
package/coverage/clover.xml
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<coverage generated="
|
|
3
|
-
<project timestamp="
|
|
4
|
-
<metrics statements="
|
|
2
|
+
<coverage generated="1689541069111" clover="3.2.0">
|
|
3
|
+
<project timestamp="1689541069111" name="All files">
|
|
4
|
+
<metrics statements="44" coveredstatements="38" conditionals="5" coveredconditionals="1" methods="10" coveredmethods="7" elements="59" coveredelements="46" complexity="0" loc="44" ncloc="44" packages="1" files="8" classes="8"/>
|
|
5
5
|
<file name="FeaturevisorContext.ts" path="/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorContext.ts">
|
|
6
6
|
<metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
|
|
7
|
-
<line num="1" count="
|
|
8
|
-
<line num="4" count="
|
|
7
|
+
<line num="1" count="6" type="stmt"/>
|
|
8
|
+
<line num="4" count="6" type="stmt"/>
|
|
9
9
|
</file>
|
|
10
10
|
<file name="FeaturevisorProvider.tsx" path="/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorProvider.tsx">
|
|
11
11
|
<metrics statements="4" coveredstatements="4" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
|
|
12
|
-
<line num="1" count="
|
|
13
|
-
<line num="4" count="
|
|
14
|
-
<line num="11" count="
|
|
15
|
-
<line num="12" count="
|
|
12
|
+
<line num="1" count="6" type="stmt"/>
|
|
13
|
+
<line num="4" count="6" type="stmt"/>
|
|
14
|
+
<line num="11" count="6" type="stmt"/>
|
|
15
|
+
<line num="12" count="7" type="stmt"/>
|
|
16
16
|
</file>
|
|
17
17
|
<file name="activateFeature.ts" path="/home/runner/work/featurevisor/featurevisor/packages/react/src/activateFeature.ts">
|
|
18
18
|
<metrics statements="5" coveredstatements="5" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="1"/>
|
|
@@ -22,13 +22,20 @@
|
|
|
22
22
|
<line num="9" count="1" type="stmt"/>
|
|
23
23
|
<line num="11" count="1" type="stmt"/>
|
|
24
24
|
</file>
|
|
25
|
+
<file name="useFlag.ts" path="/home/runner/work/featurevisor/featurevisor/packages/react/src/useFlag.ts">
|
|
26
|
+
<metrics statements="4" coveredstatements="4" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="1"/>
|
|
27
|
+
<line num="3" count="1" type="stmt"/>
|
|
28
|
+
<line num="5" count="2" type="cond" truecount="0" falsecount="1"/>
|
|
29
|
+
<line num="6" count="2" type="stmt"/>
|
|
30
|
+
<line num="8" count="2" type="stmt"/>
|
|
31
|
+
</file>
|
|
25
32
|
<file name="useSdk.ts" path="/home/runner/work/featurevisor/featurevisor/packages/react/src/useSdk.ts">
|
|
26
33
|
<metrics statements="5" coveredstatements="5" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
|
|
27
|
-
<line num="1" count="
|
|
28
|
-
<line num="4" count="
|
|
29
|
-
<line num="6" count="
|
|
30
|
-
<line num="7" count="
|
|
31
|
-
<line num="9" count="
|
|
34
|
+
<line num="1" count="6" type="stmt"/>
|
|
35
|
+
<line num="4" count="6" type="stmt"/>
|
|
36
|
+
<line num="6" count="6" type="stmt"/>
|
|
37
|
+
<line num="7" count="7" type="stmt"/>
|
|
38
|
+
<line num="9" count="7" type="stmt"/>
|
|
32
39
|
</file>
|
|
33
40
|
<file name="useStatus.ts" path="/home/runner/work/featurevisor/featurevisor/packages/react/src/useStatus.ts">
|
|
34
41
|
<metrics statements="14" coveredstatements="8" conditionals="1" coveredconditionals="1" methods="4" coveredmethods="1"/>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
{"/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorContext.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorContext.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":100}}},"fnMap":{},"branchMap":{},"s":{"0":
|
|
2
|
-
,"/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorProvider.tsx": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorProvider.tsx","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":60}},"2":{"start":{"line":12,"column":2},"end":{"line":14,"column":4}},"3":{"start":{"line":11,"column":0},"end":{"line":11,"column":16}}},"fnMap":{"0":{"name":"FeaturevisorProvider","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":36}},"loc":{"start":{"line":11,"column":69},"end":{"line":15,"column":1}}}},"branchMap":{},"s":{"0":
|
|
1
|
+
{"/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorContext.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorContext.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":100}}},"fnMap":{},"branchMap":{},"s":{"0":6,"1":6},"f":{},"b":{}}
|
|
2
|
+
,"/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorProvider.tsx": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/FeaturevisorProvider.tsx","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":60}},"2":{"start":{"line":12,"column":2},"end":{"line":14,"column":4}},"3":{"start":{"line":11,"column":0},"end":{"line":11,"column":16}}},"fnMap":{"0":{"name":"FeaturevisorProvider","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":36}},"loc":{"start":{"line":11,"column":69},"end":{"line":15,"column":1}}}},"branchMap":{},"s":{"0":6,"1":6,"2":7,"3":6},"f":{"0":7},"b":{}}
|
|
3
3
|
,"/home/runner/work/featurevisor/featurevisor/packages/react/src/activateFeature.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/activateFeature.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"1":{"start":{"line":7,"column":2},"end":{"line":7,"column":null}},"2":{"start":{"line":9,"column":14},"end":{"line":9,"column":22}},"3":{"start":{"line":11,"column":2},"end":{"line":11,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":16}}},"fnMap":{"0":{"name":"activateFeature","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":31}},"loc":{"start":{"line":7,"column":23},"end":{"line":12,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":2},"end":{"line":7,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":2},"end":{"line":7,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[0]}}
|
|
4
|
-
,"/home/runner/work/featurevisor/featurevisor/packages/react/src/
|
|
4
|
+
,"/home/runner/work/featurevisor/featurevisor/packages/react/src/useFlag.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/useFlag.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"1":{"start":{"line":5,"column":48},"end":{"line":5,"column":null}},"2":{"start":{"line":6,"column":14},"end":{"line":6,"column":22}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":16}}},"fnMap":{"0":{"name":"useFlag","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":23}},"loc":{"start":{"line":5,"column":69},"end":{"line":9,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":48},"end":{"line":5,"column":null}},"type":"if","locations":[{"start":{"line":5,"column":48},"end":{"line":5,"column":null}}]}},"s":{"0":1,"1":2,"2":2,"3":2,"4":1},"f":{"0":2},"b":{"0":[0]}}
|
|
5
|
+
,"/home/runner/work/featurevisor/featurevisor/packages/react/src/useSdk.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/useSdk.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":60}},"2":{"start":{"line":7,"column":14},"end":{"line":7,"column":51}},"3":{"start":{"line":9,"column":2},"end":{"line":9,"column":37}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":16}}},"fnMap":{"0":{"name":"useSdk","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":22},"end":{"line":10,"column":1}}}},"branchMap":{},"s":{"0":6,"1":6,"2":7,"3":7,"4":6},"f":{"0":7},"b":{}}
|
|
5
6
|
,"/home/runner/work/featurevisor/featurevisor/packages/react/src/useStatus.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/useStatus.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"2":{"start":{"line":10,"column":14},"end":{"line":10,"column":22}},"3":{"start":{"line":11,"column":24},"end":{"line":11,"column":37}},"4":{"start":{"line":13,"column":32},"end":{"line":13,"column":61}},"5":{"start":{"line":13,"column":16},"end":{"line":13,"column":18}},"6":{"start":{"line":13,"column":28},"end":{"line":13,"column":32}},"7":{"start":{"line":15,"column":2},"end":{"line":17,"column":null}},"8":{"start":{"line":16,"column":4},"end":{"line":16,"column":23}},"9":{"start":{"line":19,"column":2},"end":{"line":29,"column":9}},"10":{"start":{"line":21,"column":6},"end":{"line":21,"column":23}},"11":{"start":{"line":24,"column":4},"end":{"line":24,"column":33}},"12":{"start":{"line":26,"column":4},"end":{"line":28,"column":6}},"13":{"start":{"line":27,"column":6},"end":{"line":27,"column":36}},"14":{"start":{"line":31,"column":2},"end":{"line":31,"column":21}},"15":{"start":{"line":9,"column":0},"end":{"line":9,"column":16}}},"fnMap":{"0":{"name":"useStatus","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":25}},"loc":{"start":{"line":9,"column":25},"end":{"line":32,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":19,"column":18},"end":{"line":19,"column":null}},"loc":{"start":{"line":19,"column":18},"end":{"line":29,"column":3}}},"2":{"name":"handleReady","decl":{"start":{"line":20,"column":13},"end":{"line":20,"column":24}},"loc":{"start":{"line":20,"column":24},"end":{"line":22,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":26,"column":11},"end":{"line":26,"column":null}},"loc":{"start":{"line":26,"column":11},"end":{"line":28,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":2},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":2},"end":{"line":17,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":1},"f":{"0":1,"1":0,"2":0,"3":0},"b":{"0":[1]}}
|
|
6
7
|
,"/home/runner/work/featurevisor/featurevisor/packages/react/src/useVariable.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/useVariable.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"1":{"start":{"line":8,"column":2},"end":{"line":8,"column":null}},"2":{"start":{"line":10,"column":14},"end":{"line":10,"column":22}},"3":{"start":{"line":12,"column":2},"end":{"line":12,"column":59}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":16}}},"fnMap":{"0":{"name":"useVariable","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":27}},"loc":{"start":{"line":8,"column":23},"end":{"line":13,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":8,"column":null}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":8,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[0]}}
|
|
7
8
|
,"/home/runner/work/featurevisor/featurevisor/packages/react/src/useVariation.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/react/src/useVariation.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"1":{"start":{"line":7,"column":2},"end":{"line":7,"column":null}},"2":{"start":{"line":9,"column":14},"end":{"line":9,"column":22}},"3":{"start":{"line":11,"column":2},"end":{"line":11,"column":47}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":16}}},"fnMap":{"0":{"name":"useVariation","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":28}},"loc":{"start":{"line":7,"column":23},"end":{"line":12,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":2},"end":{"line":7,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":2},"end":{"line":7,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[0]}}
|
|
@@ -67,10 +67,10 @@
|
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
68
|
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
69
|
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">6x</span>
|
|
71
71
|
<span class="cline-any cline-neutral"> </span>
|
|
72
72
|
<span class="cline-any cline-neutral"> </span>
|
|
73
|
-
<span class="cline-any cline-yes">
|
|
73
|
+
<span class="cline-any cline-yes">6x</span>
|
|
74
74
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import * as React from "react";
|
|
75
75
|
import { FeaturevisorInstance } from "@featurevisor/sdk";
|
|
76
76
|
|
|
@@ -82,7 +82,7 @@ export const FeaturevisorContext = React.createContext<FeaturevisorInstance |
|
|
|
82
82
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
83
83
|
Code coverage generated by
|
|
84
84
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
85
|
-
at 2023-07-16T20:
|
|
85
|
+
at 2023-07-16T20:57:49.090Z
|
|
86
86
|
</div>
|
|
87
87
|
<script src="prettify.js"></script>
|
|
88
88
|
<script>
|
|
@@ -78,18 +78,18 @@
|
|
|
78
78
|
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
79
|
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
80
|
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">6x</span>
|
|
82
82
|
<span class="cline-any cline-neutral"> </span>
|
|
83
83
|
<span class="cline-any cline-neutral"> </span>
|
|
84
|
-
<span class="cline-any cline-yes">
|
|
84
|
+
<span class="cline-any cline-yes">6x</span>
|
|
85
85
|
<span class="cline-any cline-neutral"> </span>
|
|
86
86
|
<span class="cline-any cline-neutral"> </span>
|
|
87
87
|
<span class="cline-any cline-neutral"> </span>
|
|
88
88
|
<span class="cline-any cline-neutral"> </span>
|
|
89
89
|
<span class="cline-any cline-neutral"> </span>
|
|
90
90
|
<span class="cline-any cline-neutral"> </span>
|
|
91
|
-
<span class="cline-any cline-yes">
|
|
92
|
-
<span class="cline-any cline-yes">
|
|
91
|
+
<span class="cline-any cline-yes">6x</span>
|
|
92
|
+
<span class="cline-any cline-yes">7x</span>
|
|
93
93
|
<span class="cline-any cline-neutral"> </span>
|
|
94
94
|
<span class="cline-any cline-neutral"> </span>
|
|
95
95
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -115,7 +115,7 @@ export function FeaturevisorProvider(props: FeaturevisorProviderProps) {
|
|
|
115
115
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
116
116
|
Code coverage generated by
|
|
117
117
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
118
|
-
at 2023-07-16T20:
|
|
118
|
+
at 2023-07-16T20:57:49.090Z
|
|
119
119
|
</div>
|
|
120
120
|
<script src="prettify.js"></script>
|
|
121
121
|
<script>
|
|
@@ -106,7 +106,7 @@ export function activateFeature(
|
|
|
106
106
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
107
107
|
Code coverage generated by
|
|
108
108
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
109
|
-
at 2023-07-16T20:
|
|
109
|
+
at 2023-07-16T20:57:49.090Z
|
|
110
110
|
</div>
|
|
111
111
|
<script src="prettify.js"></script>
|
|
112
112
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">87.23% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>41/47</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">20% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>1/
|
|
35
|
+
<span class='fraction'>1/5</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">70% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>7/10</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">86.36% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>38/44</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -123,6 +123,21 @@
|
|
|
123
123
|
<td data-value="5" class="abs high">5/5</td>
|
|
124
124
|
</tr>
|
|
125
125
|
|
|
126
|
+
<tr>
|
|
127
|
+
<td class="file high" data-value="useFlag.ts"><a href="useFlag.ts.html">useFlag.ts</a></td>
|
|
128
|
+
<td data-value="100" class="pic high">
|
|
129
|
+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
130
|
+
</td>
|
|
131
|
+
<td data-value="100" class="pct high">100%</td>
|
|
132
|
+
<td data-value="5" class="abs high">5/5</td>
|
|
133
|
+
<td data-value="0" class="pct low">0%</td>
|
|
134
|
+
<td data-value="1" class="abs low">0/1</td>
|
|
135
|
+
<td data-value="100" class="pct high">100%</td>
|
|
136
|
+
<td data-value="1" class="abs high">1/1</td>
|
|
137
|
+
<td data-value="100" class="pct high">100%</td>
|
|
138
|
+
<td data-value="4" class="abs high">4/4</td>
|
|
139
|
+
</tr>
|
|
140
|
+
|
|
126
141
|
<tr>
|
|
127
142
|
<td class="file high" data-value="useSdk.ts"><a href="useSdk.ts.html">useSdk.ts</a></td>
|
|
128
143
|
<td data-value="100" class="pic high">
|
|
@@ -191,7 +206,7 @@
|
|
|
191
206
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
192
207
|
Code coverage generated by
|
|
193
208
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
194
|
-
at 2023-07-16T20:
|
|
209
|
+
at 2023-07-16T20:57:49.090Z
|
|
195
210
|
</div>
|
|
196
211
|
<script src="prettify.js"></script>
|
|
197
212
|
<script>
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for useFlag.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="index.html">All files</a> useFlag.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>5/5</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>0/1</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>1/1</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>4/4</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
76
|
+
<span class="cline-any cline-neutral"> </span>
|
|
77
|
+
<span class="cline-any cline-yes">1x</span>
|
|
78
|
+
<span class="cline-any cline-neutral"> </span>
|
|
79
|
+
<span class="cline-any cline-yes">2x</span>
|
|
80
|
+
<span class="cline-any cline-yes">2x</span>
|
|
81
|
+
<span class="cline-any cline-neutral"> </span>
|
|
82
|
+
<span class="cline-any cline-yes">2x</span>
|
|
83
|
+
<span class="cline-any cline-neutral"> </span>
|
|
84
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Context, FeatureKey } from "@featurevisor/types";
|
|
85
|
+
|
|
86
|
+
import { useSdk } from "./useSdk";
|
|
87
|
+
|
|
88
|
+
export function useFlag(featureKey: FeatureKey, <span class="missing-if-branch" title="if path not taken" >I</span>context: Context = {}): boolean {
|
|
89
|
+
const sdk = useSdk();
|
|
90
|
+
|
|
91
|
+
return sdk.isEnabled(featureKey, context);
|
|
92
|
+
}
|
|
93
|
+
</pre></td></tr></table></pre>
|
|
94
|
+
|
|
95
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
96
|
+
</div><!-- /wrapper -->
|
|
97
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
98
|
+
Code coverage generated by
|
|
99
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
100
|
+
at 2023-07-16T20:57:49.090Z
|
|
101
|
+
</div>
|
|
102
|
+
<script src="prettify.js"></script>
|
|
103
|
+
<script>
|
|
104
|
+
window.onload = function () {
|
|
105
|
+
prettyPrint();
|
|
106
|
+
};
|
|
107
|
+
</script>
|
|
108
|
+
<script src="sorter.js"></script>
|
|
109
|
+
<script src="block-navigation.js"></script>
|
|
110
|
+
</body>
|
|
111
|
+
</html>
|
|
112
|
+
|
|
@@ -73,15 +73,15 @@
|
|
|
73
73
|
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
74
|
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
75
|
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">6x</span>
|
|
77
77
|
<span class="cline-any cline-neutral"> </span>
|
|
78
78
|
<span class="cline-any cline-neutral"> </span>
|
|
79
|
-
<span class="cline-any cline-yes">
|
|
79
|
+
<span class="cline-any cline-yes">6x</span>
|
|
80
80
|
<span class="cline-any cline-neutral"> </span>
|
|
81
|
-
<span class="cline-any cline-yes">
|
|
82
|
-
<span class="cline-any cline-yes">
|
|
81
|
+
<span class="cline-any cline-yes">6x</span>
|
|
82
|
+
<span class="cline-any cline-yes">7x</span>
|
|
83
83
|
<span class="cline-any cline-neutral"> </span>
|
|
84
|
-
<span class="cline-any cline-yes">
|
|
84
|
+
<span class="cline-any cline-yes">7x</span>
|
|
85
85
|
<span class="cline-any cline-neutral"> </span>
|
|
86
86
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import * as React from "react";
|
|
87
87
|
import { FeaturevisorInstance } from "@featurevisor/sdk";
|
|
@@ -100,7 +100,7 @@ export function useSdk(): FeaturevisorInstance {
|
|
|
100
100
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
101
101
|
Code coverage generated by
|
|
102
102
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
103
|
-
at 2023-07-16T20:
|
|
103
|
+
at 2023-07-16T20:57:49.090Z
|
|
104
104
|
</div>
|
|
105
105
|
<script src="prettify.js"></script>
|
|
106
106
|
<script>
|
|
@@ -166,7 +166,7 @@ export function useStatus(): Status {
|
|
|
166
166
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
167
167
|
Code coverage generated by
|
|
168
168
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
169
|
-
at 2023-07-16T20:
|
|
169
|
+
at 2023-07-16T20:57:49.090Z
|
|
170
170
|
</div>
|
|
171
171
|
<script src="prettify.js"></script>
|
|
172
172
|
<script>
|
|
@@ -109,7 +109,7 @@ export function useVariable(
|
|
|
109
109
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
110
110
|
Code coverage generated by
|
|
111
111
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
112
|
-
at 2023-07-16T20:
|
|
112
|
+
at 2023-07-16T20:57:49.090Z
|
|
113
113
|
</div>
|
|
114
114
|
<script src="prettify.js"></script>
|
|
115
115
|
<script>
|
|
@@ -106,7 +106,7 @@ export function useVariation(
|
|
|
106
106
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
107
107
|
Code coverage generated by
|
|
108
108
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
109
|
-
at 2023-07-16T20:
|
|
109
|
+
at 2023-07-16T20:57:49.090Z
|
|
110
110
|
</div>
|
|
111
111
|
<script src="prettify.js"></script>
|
|
112
112
|
<script>
|
package/coverage/lcov.info
CHANGED
|
@@ -2,8 +2,8 @@ TN:
|
|
|
2
2
|
SF:src/FeaturevisorContext.ts
|
|
3
3
|
FNF:0
|
|
4
4
|
FNH:0
|
|
5
|
-
DA:1,
|
|
6
|
-
DA:4,
|
|
5
|
+
DA:1,6
|
|
6
|
+
DA:4,6
|
|
7
7
|
LF:2
|
|
8
8
|
LH:2
|
|
9
9
|
BRF:0
|
|
@@ -14,11 +14,11 @@ SF:src/FeaturevisorProvider.tsx
|
|
|
14
14
|
FN:11,FeaturevisorProvider
|
|
15
15
|
FNF:1
|
|
16
16
|
FNH:1
|
|
17
|
-
FNDA:
|
|
18
|
-
DA:1,
|
|
19
|
-
DA:4,
|
|
20
|
-
DA:11,
|
|
21
|
-
DA:12,
|
|
17
|
+
FNDA:7,FeaturevisorProvider
|
|
18
|
+
DA:1,6
|
|
19
|
+
DA:4,6
|
|
20
|
+
DA:11,6
|
|
21
|
+
DA:12,7
|
|
22
22
|
LF:4
|
|
23
23
|
LH:4
|
|
24
24
|
BRF:0
|
|
@@ -42,16 +42,32 @@ BRF:1
|
|
|
42
42
|
BRH:0
|
|
43
43
|
end_of_record
|
|
44
44
|
TN:
|
|
45
|
+
SF:src/useFlag.ts
|
|
46
|
+
FN:5,useFlag
|
|
47
|
+
FNF:1
|
|
48
|
+
FNH:1
|
|
49
|
+
FNDA:2,useFlag
|
|
50
|
+
DA:3,1
|
|
51
|
+
DA:5,2
|
|
52
|
+
DA:6,2
|
|
53
|
+
DA:8,2
|
|
54
|
+
LF:4
|
|
55
|
+
LH:4
|
|
56
|
+
BRDA:5,0,0,0
|
|
57
|
+
BRF:1
|
|
58
|
+
BRH:0
|
|
59
|
+
end_of_record
|
|
60
|
+
TN:
|
|
45
61
|
SF:src/useSdk.ts
|
|
46
62
|
FN:6,useSdk
|
|
47
63
|
FNF:1
|
|
48
64
|
FNH:1
|
|
49
|
-
FNDA:
|
|
50
|
-
DA:1,
|
|
51
|
-
DA:4,
|
|
52
|
-
DA:6,
|
|
53
|
-
DA:7,
|
|
54
|
-
DA:9,
|
|
65
|
+
FNDA:7,useSdk
|
|
66
|
+
DA:1,6
|
|
67
|
+
DA:4,6
|
|
68
|
+
DA:6,6
|
|
69
|
+
DA:7,7
|
|
70
|
+
DA:9,7
|
|
55
71
|
LF:5
|
|
56
72
|
LH:5
|
|
57
73
|
BRF:0
|
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={67:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FeaturevisorContext=void 0;var o=r(359);t.FeaturevisorContext=o.createContext(void 0)},673:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FeaturevisorProvider=void 0;var o=r(359),i=r(67);t.FeaturevisorProvider=function(e){return o.createElement(i.FeaturevisorContext.Provider,{value:e.sdk},e.children)}},289:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.activateFeature=void 0;var o=r(901);t.activateFeature=function(e,t){return void 0===t&&(t={}),(0,o.useSdk)().activate(e,t)}},97:function(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(67),t),i(r(673),t),i(r(289),t),i(r(901),t),i(r(9),t),i(r(26),t),i(r(613),t)},901:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useSdk=void 0;var o=r(359),i=r(67);t.useSdk=function(){return o.useContext(i.FeaturevisorContext)}},9:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useStatus=void 0;var o=r(359),i=r(901);t.useStatus=function(){var e=(0,i.useSdk)(),t=e.isReady(),r=o.useState(t),u=r[0],a=r[1];return u||o.useEffect((function(){function t(){a(!0)}return e.on("ready",t),function(){e.off("ready",t)}}),[]),{isReady:u}}},26:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useVariable=void 0;var o=r(901);t.useVariable=function(e,t,r){return void 0===r&&(r={}),(0,o.useSdk)().getVariable(e,t,r)}},613:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useVariation=void 0;var o=r(901);t.useVariation=function(e,t){return void 0===t&&(t={}),(0,o.useSdk)().getVariation(e,t)}},359:t=>{t.exports=e}},r={};return function e(o){var i=r[o];if(void 0!==i)return i.exports;var u=r[o]={exports:{}};return t[o].call(u.exports,u,u.exports,e),u.exports}(97)})()));
|
|
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={67:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FeaturevisorContext=void 0;var o=r(359);t.FeaturevisorContext=o.createContext(void 0)},673:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FeaturevisorProvider=void 0;var o=r(359),i=r(67);t.FeaturevisorProvider=function(e){return o.createElement(i.FeaturevisorContext.Provider,{value:e.sdk},e.children)}},289:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.activateFeature=void 0;var o=r(901);t.activateFeature=function(e,t){return void 0===t&&(t={}),(0,o.useSdk)().activate(e,t)}},97:function(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(67),t),i(r(673),t),i(r(289),t),i(r(901),t),i(r(9),t),i(r(26),t),i(r(613),t),i(r(129),t)},129:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useFlag=void 0;var o=r(901);t.useFlag=function(e,t){return void 0===t&&(t={}),(0,o.useSdk)().isEnabled(e,t)}},901:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useSdk=void 0;var o=r(359),i=r(67);t.useSdk=function(){return o.useContext(i.FeaturevisorContext)}},9:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useStatus=void 0;var o=r(359),i=r(901);t.useStatus=function(){var e=(0,i.useSdk)(),t=e.isReady(),r=o.useState(t),u=r[0],a=r[1];return u||o.useEffect((function(){function t(){a(!0)}return e.on("ready",t),function(){e.off("ready",t)}}),[]),{isReady:u}}},26:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useVariable=void 0;var o=r(901);t.useVariable=function(e,t,r){return void 0===r&&(r={}),(0,o.useSdk)().getVariable(e,t,r)}},613:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useVariation=void 0;var o=r(901);t.useVariation=function(e,t){return void 0===t&&(t={}),(0,o.useSdk)().getVariation(e,t)}},359:t=>{t.exports=e}},r={};return function e(o){var i=r[o];if(void 0!==i)return i.exports;var u=r[o]={exports:{}};return t[o].call(u.exports,u,u.exports,e),u.exports}(97)})()));
|
|
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,qHCTV,aAGa,EAAAC,oBAAsBC,EAAMC,mBAAgDC,E,+FCHzF,aAGA,QAOA,gCAAqCC,GACnC,OACE,gBAAC,EAAAJ,oBAAoBK,SAAQ,CAACC,MAAOF,EAAMG,KAAMH,EAAMI,SAE3D,C,0FCZA,aAEA,2BACEC,EACAC,GAIA,YAJA,IAAAA,IAAAA,EAAA,KAEY,IAAAC,UAEDC,SAASH,EAAYC,EAClC,C,0fCVA,WAGA,YAGA,YACA,YACA,UACA,WACA,W,
|
|
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,qHCTV,aAGa,EAAAC,oBAAsBC,EAAMC,mBAAgDC,E,+FCHzF,aAGA,QAOA,gCAAqCC,GACnC,OACE,gBAAC,EAAAJ,oBAAoBK,SAAQ,CAACC,MAAOF,EAAMG,KAAMH,EAAMI,SAE3D,C,0FCZA,aAEA,2BACEC,EACAC,GAIA,YAJA,IAAAA,IAAAA,EAAA,KAEY,IAAAC,UAEDC,SAASH,EAAYC,EAClC,C,0fCVA,WAGA,YAGA,YACA,YACA,UACA,WACA,YACA,W,kFCVA,aAEA,mBAAwBD,EAAwBC,GAG9C,YAH8C,IAAAA,IAAAA,EAAA,KAClC,IAAAC,UAEDE,UAAUJ,EAAYC,EACnC,C,iFCRA,aAGA,QAEA,oBAGE,OAFYT,EAAMa,WAAW,EAAAd,oBAG/B,C,kFCTA,aAEA,SAMA,uBACE,IAAMO,GAAM,IAAAI,UACNI,EAAgBR,EAAIS,UAEpB,EAAwBf,EAAMgB,SAASF,GAAtCC,EAAO,KAAEE,EAAU,KAE1B,OAAIF,GAIJf,EAAMkB,WAAU,WACd,SAASC,IACPF,GAAW,EACb,CAIA,OAFAX,EAAIc,GAAG,QAASD,GAET,WACLb,EAAIe,IAAI,QAASF,EACnB,CACF,GAAG,IAbM,CAAEJ,QAAO,EAgBpB,C,qFC7BA,aAEA,uBACEP,EACAc,EACAb,GAIA,YAJA,IAAAA,IAAAA,EAAA,KAEY,IAAAC,UAEDa,YAAYf,EAAYc,EAAab,EAClD,C,uFCVA,aAEA,wBACED,EACAC,GAIA,YAJA,IAAAA,IAAAA,EAAA,KAEY,IAAAC,UAEDc,aAAahB,EAAYC,EACtC,C,UCXAhB,EAAOD,QAAUM,C,GCCb2B,EAA2B,CAAC,E,OAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBzB,IAAjB0B,EACH,OAAOA,EAAapC,QAGrB,IAAIC,EAASgC,EAAyBE,GAAY,CAGjDnC,QAAS,CAAC,GAOX,OAHAqC,EAAoBF,GAAUG,KAAKrC,EAAOD,QAASC,EAAQA,EAAOD,QAASkC,GAGpEjC,EAAOD,OACf,CCnB0BkC,CAAoB,G","sources":["webpack://FeaturevisorReact/webpack/universalModuleDefinition","webpack://FeaturevisorReact/./src/FeaturevisorContext.ts","webpack://FeaturevisorReact/./src/FeaturevisorProvider.tsx","webpack://FeaturevisorReact/./src/activateFeature.ts","webpack://FeaturevisorReact/./src/index.ts","webpack://FeaturevisorReact/./src/useFlag.ts","webpack://FeaturevisorReact/./src/useSdk.ts","webpack://FeaturevisorReact/./src/useStatus.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__359__) => {\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 sdk: FeaturevisorInstance;\n children: React.ReactNode;\n}\n\nexport function FeaturevisorProvider(props: FeaturevisorProviderProps) {\n return (\n <FeaturevisorContext.Provider value={props.sdk}>{props.children}</FeaturevisorContext.Provider>\n );\n}\n","import { Context, FeatureKey, VariationValue } from \"@featurevisor/types\";\n\nimport { useSdk } from \"./useSdk\";\n\nexport function activateFeature(\n featureKey: FeatureKey,\n context: Context = {},\n): VariationValue | undefined {\n const sdk = useSdk();\n\n return sdk.activate(featureKey, context);\n}\n","// contexts\nexport * from \"./FeaturevisorContext\";\n\n// components\nexport * from \"./FeaturevisorProvider\";\n\n// hooks\nexport * from \"./activateFeature\";\nexport * from \"./useSdk\";\nexport * from \"./useStatus\";\nexport * from \"./useVariable\";\nexport * from \"./useVariation\";\nexport * from \"./useFlag\";\n","import { Context, FeatureKey } from \"@featurevisor/types\";\n\nimport { useSdk } from \"./useSdk\";\n\nexport function useFlag(featureKey: FeatureKey, context: Context = {}): boolean {\n const sdk = useSdk();\n\n return sdk.isEnabled(featureKey, context);\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","import * as React from \"react\";\n\nimport { useSdk } from \"./useSdk\";\n\nexport interface Status {\n isReady: boolean;\n}\n\nexport function useStatus(): Status {\n const sdk = useSdk();\n const initialStatus = sdk.isReady();\n\n const [isReady, setIsReady] = React.useState(initialStatus);\n\n if (isReady) {\n return { isReady };\n }\n\n React.useEffect(function () {\n function handleReady() {\n setIsReady(true);\n }\n\n sdk.on(\"ready\", handleReady);\n\n return function () {\n sdk.off(\"ready\", handleReady);\n };\n }, []);\n\n return { isReady };\n}\n","import { Context, FeatureKey, VariableKey, VariableValue } from \"@featurevisor/types\";\n\nimport { useSdk } from \"./useSdk\";\n\nexport function useVariable(\n featureKey: FeatureKey,\n variableKey: VariableKey,\n context: Context = {},\n): VariableValue | undefined {\n const sdk = useSdk();\n\n return sdk.getVariable(featureKey, variableKey, context);\n}\n","import { Context, FeatureKey, VariationValue } from \"@featurevisor/types\";\n\nimport { useSdk } from \"./useSdk\";\n\nexport function useVariation(\n featureKey: FeatureKey,\n context: Context = {},\n): VariationValue | undefined {\n const sdk = useSdk();\n\n return sdk.getVariation(featureKey, context);\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__359__;","// 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__(97);\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__359__","FeaturevisorContext","React","createContext","undefined","props","Provider","value","sdk","children","featureKey","context","useSdk","activate","isEnabled","useContext","initialStatus","isReady","useState","setIsReady","useEffect","handleReady","on","off","variableKey","getVariable","getVariation","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call"],"sourceRoot":""}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,cAAc,uBAAuB,CAAC;AAEtC,aAAa;AACb,cAAc,wBAAwB,CAAC;AAEvC,QAAQ;AACR,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,cAAc,uBAAuB,CAAC;AAEtC,aAAa;AACb,cAAc,wBAAwB,CAAC;AAEvC,QAAQ;AACR,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
|
package/lib/useFlag.d.ts
ADDED
package/lib/useFlag.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFlag.js","sourceRoot":"","sources":["../src/useFlag.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,UAAU,OAAO,CAAC,UAAsB,EAAE,OAAqB;IAArB,wBAAA,EAAA,YAAqB;IACnE,IAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,OAAO,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "@testing-library/jest-dom";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@featurevisor/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.40.0",
|
|
4
4
|
"description": "React package for Featurevisor",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"url": "https://github.com/fahad19/featurevisor/issues"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@featurevisor/sdk": "^0.
|
|
46
|
-
"@featurevisor/types": "^0.
|
|
45
|
+
"@featurevisor/sdk": "^0.40.0",
|
|
46
|
+
"@featurevisor/types": "^0.40.0"
|
|
47
47
|
},
|
|
48
48
|
"license": "MIT",
|
|
49
49
|
"devDependencies": {
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"@testing-library/react": "^14.0.0",
|
|
52
52
|
"jest-environment-jsdom": "^29.5.0"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "7915a3f4f1429e5da4ef0da076da02d4d3c24776"
|
|
55
55
|
}
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { render, screen } from "@testing-library/react";
|
|
3
|
+
import "@testing-library/jest-dom";
|
|
4
|
+
|
|
5
|
+
import { FeaturevisorProvider } from "./FeaturevisorProvider";
|
|
6
|
+
import { useFlag } from "./useFlag";
|
|
7
|
+
import { createInstance } from "@featurevisor/sdk";
|
|
8
|
+
|
|
9
|
+
function getNewInstance(enabled = true) {
|
|
10
|
+
const sdk = createInstance({
|
|
11
|
+
datafile: {
|
|
12
|
+
schemaVersion: "1",
|
|
13
|
+
revision: "1.0",
|
|
14
|
+
features: [
|
|
15
|
+
{
|
|
16
|
+
key: "test",
|
|
17
|
+
bucketBy: "userId",
|
|
18
|
+
traffic: [
|
|
19
|
+
{
|
|
20
|
+
key: "1",
|
|
21
|
+
segments: "*",
|
|
22
|
+
percentage: enabled ? 100000 : 0,
|
|
23
|
+
allocation: [],
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
attributes: [],
|
|
29
|
+
segments: [],
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
return sdk;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
describe("react: useFlag", function () {
|
|
37
|
+
test("should be a function", function () {
|
|
38
|
+
expect(useFlag).toBeInstanceOf(Function);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("should check if feature is enabled", function () {
|
|
42
|
+
function TestComponent() {
|
|
43
|
+
const isEnabled = useFlag("test", { userId: "1" });
|
|
44
|
+
|
|
45
|
+
return isEnabled ? <p>True</p> : <p>False</p>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
render(
|
|
49
|
+
<FeaturevisorProvider sdk={getNewInstance()}>
|
|
50
|
+
<TestComponent />
|
|
51
|
+
</FeaturevisorProvider>,
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
expect(screen.getByText("True")).toBeInTheDocument();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test("should check if feature is disabled", function () {
|
|
58
|
+
function TestComponent() {
|
|
59
|
+
const isEnabled = useFlag("test", { userId: "1" });
|
|
60
|
+
|
|
61
|
+
return isEnabled ? <p>True</p> : <p>False</p>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
render(
|
|
65
|
+
<FeaturevisorProvider sdk={getNewInstance(false)}>
|
|
66
|
+
<TestComponent />
|
|
67
|
+
</FeaturevisorProvider>,
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
expect(screen.getByText("False")).toBeInTheDocument();
|
|
71
|
+
});
|
|
72
|
+
});
|
package/src/useFlag.ts
ADDED