Skip to content

Commit 2448642

Browse files
Merge branch 'main' of https://github.com/microsoft/FeatureManagement-JavaScript into zhiyuanliang/recurring-time-window
2 parents aa72297 + 0d14ad7 commit 2448642

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+934
-1189
lines changed

.github/workflows/ci.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222

2323
defaults:
2424
run:
25-
working-directory: sdk/feature-management
25+
working-directory: src/feature-management
2626

2727
steps:
2828
- uses: actions/checkout@v3
@@ -31,40 +31,40 @@ jobs:
3131
with:
3232
node-version: ${{ matrix.node-version }}
3333
cache: 'npm'
34-
cache-dependency-path: sdk/feature-management/package-lock.json
34+
cache-dependency-path: src/feature-management/package-lock.json
3535

3636
- name: Install dependencies
3737
run: npm ci
38-
working-directory: sdk/feature-management
38+
working-directory: src/feature-management
3939

4040
- name: Run lint check for feature-management
4141
run: npm run lint
42-
working-directory: sdk/feature-management
42+
working-directory: src/feature-management
4343

4444
- name: Build feature-management
4545
run: npm run build
46-
working-directory: sdk/feature-management
46+
working-directory: src/feature-management
4747

4848
- name: Run tests
4949
run: npm run test
50-
working-directory: sdk/feature-management
50+
working-directory: src/feature-management
5151

5252
- name: Run browser tests
5353
run: npm run test-browser
54-
working-directory: sdk/feature-management
54+
working-directory: src/feature-management
5555

5656
- name: Build feature-management-applicationinsights-browser
5757
run: npm run build
58-
working-directory: sdk/feature-management-applicationinsights-browser
58+
working-directory: src/feature-management-applicationinsights-browser
5959

6060
- name: Run lint check for feature-management-applicationinsights-browser
6161
run: npm run lint
62-
working-directory: sdk/feature-management-applicationinsights-browser
62+
working-directory: src/feature-management-applicationinsights-browser
6363

6464
- name: Build feature-management-applicationinsights-node
6565
run: npm run build
66-
working-directory: sdk/feature-management-applicationinsights-node
66+
working-directory: src/feature-management-applicationinsights-node
6767

6868
- name: Run lint check for feature-management-applicationinsights-node
6969
run: npm run lint
70-
working-directory: sdk/feature-management-applicationinsights-node
70+
working-directory: src/feature-management-applicationinsights-node

README.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,29 @@
22

33
[![feature-management](https://img.shields.io/npm/v/@microsoft/feature-management?label=@microsoft/feature-management)](https://www.npmjs.com/package/@microsoft/feature-management)
44

5-
Feature Management is a library for enabling/disabling features at runtime.
6-
Developers can use feature flags in simple use cases like conditional statement to more advanced scenarios like conditionally adding routes.
5+
Feature management provides a way to develop and expose application functionality based on features. Many applications have special requirements when a new feature is developed such as when the feature should be enabled and under what conditions. This library provides a way to define these relationships, and also integrates into common JavaScript code patterns to make exposing these features possible.
76

87
## Getting Started
98

10-
### Prerequisites
9+
[Azure App Configuration Quickstart](https://learn.microsoft.com/azure/azure-app-configuration/quickstart-feature-flag-javascript): A quickstart guide about how to integrate feature flags from Azure App Configuration into your JavaScript applications.
1110

12-
- Node.js LTS version
11+
[Feature Overview](https://learn.microsoft.com/azure/azure-app-configuration/feature-management-overview#feature-development-status): This document provides a feature status overview.
12+
13+
[Feature Reference](https://learn.microsoft.com/azure/azure-app-configuration/feature-management-javascript-reference): This document provides a full feature rundown.
1314

1415
### Usage
1516

16-
You can use feature flags from the Azure App Configuration service, local files or any other sources.
17+
You can use feature flags from the Azure App Configuration service, local files or any other sources. For more information, please go to [Feature flag configuration](https://learn.microsoft.com/azure/azure-app-configuration/feature-management-javascript-reference#feature-flag-configuration).
1718

1819
#### Use feature flags from Azure App Configuration
1920

2021
The App Configuration JavaScript provider provides feature flags in as a `Map` object.
2122
A builtin `ConfigurationMapFeatureFlagProvider` helps to load feature flags in this case.
2223

2324
```js
24-
const appConfig = await load(connectionString, {featureFlagOptions}); // load feature flags from Azure App Configuration service
25+
import { load } from "@azure/app-configuration-provider";
26+
import { FeatureManager, ConfigurationMapFeatureFlagProvider } from "@microsoft/feature-management";
27+
const appConfig = await load("<CONNECTION-STRING>", {featureFlagOptions}); // load feature flags from Azure App Configuration service
2528
const featureProvider = new ConfigurationMapFeatureFlagProvider(appConfig);
2629
const featureManager = new FeatureManager(featureProvider);
2730
const isAlphaEnabled = await featureManager.isEnabled("Alpha");
@@ -54,13 +57,18 @@ Content of `sample.json`:
5457

5558
Load feature flags from `sample.json` file.
5659
```js
60+
import { FeatureManager, ConfigurationObjectFeatureFlagProvider } from "@microsoft/feature-management";
5761
const config = JSON.parse(await fs.readFile("path/to/sample.json"));
5862
const featureProvider = new ConfigurationObjectFeatureFlagProvider(config);
5963
const featureManager = new FeatureManager(featureProvider);
6064
const isAlphaEnabled = await featureManager.isEnabled("Alpha");
6165
console.log("Feature Alpha is:", isAlphaEnabled);
6266
```
6367

68+
## Examples
69+
70+
See code snippets under [examples/](./examples/) folder.
71+
6472
## Contributing
6573

6674
This project welcomes contributions and suggestions. Most contributions require you to agree to a

scripts/build-and-pack.sh

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ set -e
55

66
SCRIPT_DIR=$(dirname $(readlink -f $0))
77
PROJECT_BASE_DIR=$(dirname $SCRIPT_DIR)
8-
SDK_DIR="$PROJECT_BASE_DIR/sdk"
8+
NPMRC_FILE="$PROJECT_BASE_DIR/.npmrc"
9+
SRC_DIR="$PROJECT_BASE_DIR/src"
910

1011
PACKAGE="feature-management"
11-
PACKAGE_DIR="$SDK_DIR/$PACKAGE"
12+
PACKAGE_DIR="$SRC_DIR/$PACKAGE"
13+
14+
if [ -f "$NPMRC_FILE" ]; then
15+
echo "Copy .npmrc file to $PACKAGE_DIR"
16+
cp "$NPMRC_FILE" "$PACKAGE_DIR"
17+
fi
1218

1319
echo "Building package $PACKAGE in $PACKAGE_DIR"
1420
cd "$PACKAGE_DIR"
@@ -29,7 +35,12 @@ echo "copy $PACKAGE package to $PROJECT_BASE_DIR"
2935
cp "$PACKAGE_DIR"/*.tgz "$PROJECT_BASE_DIR"
3036

3137
PACKAGE="feature-management-applicationinsights-browser"
32-
PACKAGE_DIR="$SDK_DIR/$PACKAGE"
38+
PACKAGE_DIR="$SRC_DIR/$PACKAGE"
39+
40+
if [ -f "$NPMRC_FILE" ]; then
41+
echo "Copy .npmrc file to $PACKAGE_DIR"
42+
cp "$NPMRC_FILE" "$PACKAGE_DIR"
43+
fi
3344

3445
echo "Building package $PACKAGE in $PACKAGE_DIR"
3546
cd "$PACKAGE_DIR"
@@ -44,7 +55,12 @@ echo "copy $PACKAGE package to $PROJECT_BASE_DIR"
4455
cp "$PACKAGE_DIR"/*.tgz "$PROJECT_BASE_DIR"
4556

4657
PACKAGE="feature-management-applicationinsights-node"
47-
PACKAGE_DIR="$SDK_DIR/$PACKAGE"
58+
PACKAGE_DIR="$SRC_DIR/$PACKAGE"
59+
60+
if [ -f "$NPMRC_FILE" ]; then
61+
echo "Copy .npmrc file to $PACKAGE_DIR"
62+
cp "$NPMRC_FILE" "$PACKAGE_DIR"
63+
fi
4864

4965
echo "Building package $PACKAGE in $PACKAGE_DIR"
5066
cd "$PACKAGE_DIR"

sdk/feature-management/src/filter/targetingFilter.ts

Lines changed: 0 additions & 172 deletions
This file was deleted.

0 commit comments

Comments
 (0)