@equinor/fusion-framework-app 7.1.15 → 8.0.1
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 +37 -0
- package/README.md +32 -0
- package/dist/esm/AppConfigurator.js +40 -1
- package/dist/esm/AppConfigurator.js.map +1 -1
- package/dist/esm/configure-modules.js +1 -1
- package/dist/esm/configure-modules.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/AppConfigurator.d.ts +13 -3
- package/dist/types/version.d.ts +1 -1
- package/package.json +15 -6
- package/src/AppConfigurator.ts +66 -2
- package/src/configure-modules.ts +1 -1
- package/src/version.ts +1 -1
- package/tsconfig.json +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 8.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`1ca8264`](https://github.com/equinor/fusion-framework/commit/1ca826489a0d1dd755324344a12bbf6659a3be12)]:
|
|
8
|
+
- @equinor/fusion-framework-module-app@5.2.13
|
|
9
|
+
- @equinor/fusion-framework-module-feature-flag@1.0.1
|
|
10
|
+
- @equinor/fusion-framework@7.0.29
|
|
11
|
+
|
|
12
|
+
## 8.0.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- [#1747](https://github.com/equinor/fusion-framework/pull/1747) [`8b031c3`](https://github.com/equinor/fusion-framework/commit/8b031c31f314deeffdf395fc847e4279b61aab7e) Thanks [@odinr](https://github.com/odinr)! - Added method to `AppConfigurator` to enabled `Feature Flag Module`
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
export const configure: ModuleInitiator = (appConfigurator, args) => {
|
|
20
|
+
/** provide a list of features that should be available in the application */
|
|
21
|
+
appConfigurator.useFeatureFlags([
|
|
22
|
+
{
|
|
23
|
+
key: MyFeatures.MyFlag,
|
|
24
|
+
title: "this is a flag",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: MyFeatures.MyUrlFlag,
|
|
28
|
+
title: "this feature can be toggled by ?my-url-flag=true",
|
|
29
|
+
allowUrl: true,
|
|
30
|
+
},
|
|
31
|
+
]);
|
|
32
|
+
};
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- Updated dependencies [[`8b031c3`](https://github.com/equinor/fusion-framework/commit/8b031c31f314deeffdf395fc847e4279b61aab7e)]:
|
|
38
|
+
- @equinor/fusion-framework-module-feature-flag@1.0.0
|
|
39
|
+
|
|
3
40
|
## 7.1.15
|
|
4
41
|
|
|
5
42
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -4,3 +4,35 @@
|
|
|
4
4
|
|
|
5
5
|
## 📚 read the [Doc](https://equinor.github.io/fusion-framework/)
|
|
6
6
|
|
|
7
|
+
## Feature Flag
|
|
8
|
+
|
|
9
|
+
> [!IMPORTANT]
|
|
10
|
+
> `@equinor/fusion-framework-module-feature-flag` must be installed to make this module available
|
|
11
|
+
|
|
12
|
+
### Simple
|
|
13
|
+
```ts
|
|
14
|
+
export const configure: ModuleInitiator = (appConfigurator, args) => {
|
|
15
|
+
/** provide a list of features that should be available in the application */
|
|
16
|
+
appConfigurator.useFeatureFlags([
|
|
17
|
+
{
|
|
18
|
+
key: MyFeatures.MyFlag,
|
|
19
|
+
title: 'this is a flag',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
key: MyFeatures.MyUrlFlag,
|
|
23
|
+
title: 'this feature can be toggled by ?my-url-flag=true',
|
|
24
|
+
allowUrl: true,
|
|
25
|
+
}
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Custom
|
|
31
|
+
```ts
|
|
32
|
+
export const configure: ModuleInitiator = (appConfigurator, args) => {
|
|
33
|
+
appConfigurator.useFeatureFlags(builder => /** see module for building custom config */);
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
[see module](../modules/feature-flag/README.md) for more technical information;
|
|
38
|
+
|
|
@@ -7,13 +7,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
10
21
|
import { ModuleConsoleLogger, ModulesConfigurator, } from '@equinor/fusion-framework-module';
|
|
11
22
|
import event from '@equinor/fusion-framework-module-event';
|
|
12
23
|
import http, { configureHttpClient, configureHttp, } from '@equinor/fusion-framework-module-http';
|
|
13
24
|
import auth, { configureMsal } from '@equinor/fusion-framework-module-msal';
|
|
25
|
+
import { enableFeatureFlagging, } from '@equinor/fusion-framework-module-feature-flag';
|
|
26
|
+
import { createLocalStoragePlugin, createUrlPlugin, } from '@equinor/fusion-framework-module-feature-flag/plugins';
|
|
14
27
|
export class AppConfigurator extends ModulesConfigurator {
|
|
15
|
-
constructor() {
|
|
28
|
+
constructor(env) {
|
|
16
29
|
super([event, http, auth]);
|
|
30
|
+
this.env = env;
|
|
17
31
|
this.logger = new ModuleConsoleLogger('AppConfigurator');
|
|
18
32
|
}
|
|
19
33
|
configureHttp(...args) {
|
|
@@ -37,6 +51,31 @@ export class AppConfigurator extends ModulesConfigurator {
|
|
|
37
51
|
configureMsal(...args) {
|
|
38
52
|
this.addConfig(configureMsal(...args));
|
|
39
53
|
}
|
|
54
|
+
useFeatureFlags(flags_cb) {
|
|
55
|
+
switch (typeof flags_cb) {
|
|
56
|
+
case 'function': {
|
|
57
|
+
enableFeatureFlagging(this, flags_cb);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case 'object': {
|
|
61
|
+
const urlFlags = [];
|
|
62
|
+
const localFlags = (flags_cb !== null && flags_cb !== void 0 ? flags_cb : []).map((flag) => {
|
|
63
|
+
const { allowUrl } = flag, localFlag = __rest(flag, ["allowUrl"]);
|
|
64
|
+
if (allowUrl) {
|
|
65
|
+
urlFlags.push(flag);
|
|
66
|
+
}
|
|
67
|
+
return localFlag;
|
|
68
|
+
});
|
|
69
|
+
enableFeatureFlagging(this, (builder) => __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
builder.addPlugin(createLocalStoragePlugin(localFlags, {
|
|
71
|
+
name: this.env.manifest.key,
|
|
72
|
+
}));
|
|
73
|
+
builder.addPlugin(createUrlPlugin(urlFlags));
|
|
74
|
+
}));
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
40
79
|
}
|
|
41
80
|
export default AppConfigurator;
|
|
42
81
|
//# sourceMappingURL=AppConfigurator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppConfigurator.js","sourceRoot":"","sources":["../../src/AppConfigurator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AppConfigurator.js","sourceRoot":"","sources":["../../src/AppConfigurator.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { AppConfigurator } from './AppConfigurator';
|
|
11
11
|
export const configureModules = (cb) => (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
12
|
var _a;
|
|
13
|
-
const configurator = new AppConfigurator();
|
|
13
|
+
const configurator = new AppConfigurator(args.env);
|
|
14
14
|
if (cb) {
|
|
15
15
|
yield Promise.resolve(cb(configurator, args));
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure-modules.js","sourceRoot":"","sources":["../../src/configure-modules.ts"],"names":[],"mappings":";;;;;;;;;AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAsBpD,MAAM,CAAC,MAAM,gBAAgB,GACzB,CAKI,EAA6C,EACiC,EAAE,CAQpF,CAAO,IAAiC,EAAyC,EAAE;;IAC/E,MAAM,YAAY,GAAG,IAAI,eAAe,
|
|
1
|
+
{"version":3,"file":"configure-modules.js","sourceRoot":"","sources":["../../src/configure-modules.ts"],"names":[],"mappings":";;;;;;;;;AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAsBpD,MAAM,CAAC,MAAM,gBAAgB,GACzB,CAKI,EAA6C,EACiC,EAAE,CAQpF,CAAO,IAAiC,EAAyC,EAAE;;IAC/E,MAAM,YAAY,GAAG,IAAI,eAAe,CAAkC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpF,IAAI,EAAE,EAAE,CAAC;QACL,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,MAAM,YAAY,CAAC,UAAU,CAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAEtB,CAA4C,CAAC;IAI9C,IAAI,MAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,0CAAE,GAAG,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,EAAE;YAC9C,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE;SACrD,CAAC,CAAC;IACP,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAA,CAAC;AAEN,eAAe,gBAAgB,CAAC"}
|
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '
|
|
1
|
+
export const version = '8.0.1';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|