@vived/app 4.19.1 → 4.20.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/lib/Components/FeatureFlags/Adapters/featureFlagsAdapter.d.ts +2 -0
- package/lib/Components/FeatureFlags/Adapters/featureFlagsAdapter.js +23 -0
- package/lib/Components/FeatureFlags/Adapters/index.d.ts +1 -0
- package/lib/Components/FeatureFlags/Adapters/index.js +13 -0
- package/lib/Components/FeatureFlags/Entity/FeatureFlagEntity.d.ts +10 -0
- package/lib/Components/FeatureFlags/Entity/FeatureFlagEntity.js +40 -0
- package/lib/Components/FeatureFlags/Entity/index.d.ts +1 -0
- package/lib/Components/FeatureFlags/Entity/index.js +13 -0
- package/lib/Components/FeatureFlags/Mocks/FeatureFlagsPMMock.d.ts +8 -0
- package/lib/Components/FeatureFlags/Mocks/FeatureFlagsPMMock.js +15 -0
- package/lib/Components/FeatureFlags/Mocks/index.d.ts +1 -0
- package/lib/Components/FeatureFlags/Mocks/index.js +13 -0
- package/lib/Components/FeatureFlags/PMs/FeatureFlagsPM.d.ts +6 -0
- package/lib/Components/FeatureFlags/PMs/FeatureFlagsPM.js +45 -0
- package/lib/Components/FeatureFlags/PMs/index.d.ts +1 -0
- package/lib/Components/FeatureFlags/PMs/index.js +13 -0
- package/lib/Components/FeatureFlags/index.d.ts +4 -0
- package/lib/Components/FeatureFlags/index.js +16 -0
- package/lib/Components/RequestHandler/UC/EnableFeatureUC.d.ts +11 -0
- package/lib/Components/RequestHandler/UC/EnableFeatureUC.js +53 -0
- package/lib/Components/RequestHandler/UC/index.d.ts +1 -0
- package/lib/Components/RequestHandler/UC/index.js +1 -0
- package/lib/Components/index.d.ts +1 -0
- package/lib/Components/index.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.featureFlagsAdapter = void 0;
|
|
4
|
+
const FeatureFlagsPM_1 = require("../PMs/FeatureFlagsPM");
|
|
5
|
+
exports.featureFlagsAdapter = {
|
|
6
|
+
defaultVM: [],
|
|
7
|
+
subscribe: (appObjects, setVM) => {
|
|
8
|
+
const pm = FeatureFlagsPM_1.FeatureFlagsPM.get(appObjects);
|
|
9
|
+
if (!pm) {
|
|
10
|
+
appObjects.submitError("featureFlagsAdapter", "Unable to find FeatureFlagsPM");
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
pm.addView(setVM);
|
|
14
|
+
},
|
|
15
|
+
unsubscribe: (appObjects, setVM) => {
|
|
16
|
+
const pm = FeatureFlagsPM_1.FeatureFlagsPM.get(appObjects);
|
|
17
|
+
if (!pm) {
|
|
18
|
+
appObjects.submitError("featureFlagsAdapter", "Unable to find FeatureFlagsPM");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
pm.removeView(setVM);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./featureFlagsAdapter";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./featureFlagsAdapter"), exports);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AppObject, AppObjectEntity, AppObjectRepo } from "../../../AppObject";
|
|
2
|
+
export declare abstract class FeatureFlagsEntity extends AppObjectEntity {
|
|
3
|
+
static type: string;
|
|
4
|
+
abstract addFlag(feature: string): void;
|
|
5
|
+
abstract removeFlag(feature: string): void;
|
|
6
|
+
abstract hasFlag(feature: string): boolean;
|
|
7
|
+
abstract get flags(): string[];
|
|
8
|
+
static get(appObjects: AppObjectRepo): FeatureFlagsEntity | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare function makeFeatureFlagsEntity(appObject: AppObject): FeatureFlagsEntity;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeFeatureFlagsEntity = exports.FeatureFlagsEntity = void 0;
|
|
4
|
+
const AppObject_1 = require("../../../AppObject");
|
|
5
|
+
class FeatureFlagsEntity extends AppObject_1.AppObjectEntity {
|
|
6
|
+
static get(appObjects) {
|
|
7
|
+
return AppObject_1.getSingletonComponent(FeatureFlagsEntity.type, appObjects);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.FeatureFlagsEntity = FeatureFlagsEntity;
|
|
11
|
+
FeatureFlagsEntity.type = "FeatureFlagsEntity";
|
|
12
|
+
function makeFeatureFlagsEntity(appObject) {
|
|
13
|
+
return new FeatureFlagsEntityImp(appObject);
|
|
14
|
+
}
|
|
15
|
+
exports.makeFeatureFlagsEntity = makeFeatureFlagsEntity;
|
|
16
|
+
class FeatureFlagsEntityImp extends FeatureFlagsEntity {
|
|
17
|
+
constructor(appObject) {
|
|
18
|
+
super(appObject, FeatureFlagsEntity.type);
|
|
19
|
+
this._flags = [];
|
|
20
|
+
this.appObjects.registerSingleton(this);
|
|
21
|
+
}
|
|
22
|
+
get flags() {
|
|
23
|
+
return [...this._flags];
|
|
24
|
+
}
|
|
25
|
+
addFlag(feature) {
|
|
26
|
+
if (this.hasFlag(feature))
|
|
27
|
+
return;
|
|
28
|
+
this._flags.push(feature);
|
|
29
|
+
this.notifyOnChange();
|
|
30
|
+
}
|
|
31
|
+
removeFlag(feature) {
|
|
32
|
+
if (!this.hasFlag(feature))
|
|
33
|
+
return;
|
|
34
|
+
this._flags = this._flags.filter((flag) => flag !== feature);
|
|
35
|
+
this.notifyOnChange();
|
|
36
|
+
}
|
|
37
|
+
hasFlag(feature) {
|
|
38
|
+
return this._flags.includes(feature);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./FeatureFlagEntity";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./FeatureFlagEntity"), exports);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="jest" />
|
|
2
|
+
import { AppObject, AppObjectRepo } from "../../../AppObject";
|
|
3
|
+
import { FeatureFlagsPM } from "../PMs/FeatureFlagsPM";
|
|
4
|
+
export declare class FeatureFlagsPMMock extends FeatureFlagsPM {
|
|
5
|
+
vmsAreEqual: jest.Mock<any, any>;
|
|
6
|
+
constructor(appObject: AppObject);
|
|
7
|
+
}
|
|
8
|
+
export declare function makeFeatureFlagsPMMock(appObjects: AppObjectRepo): FeatureFlagsPMMock;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeFeatureFlagsPMMock = exports.FeatureFlagsPMMock = void 0;
|
|
4
|
+
const FeatureFlagsPM_1 = require("../PMs/FeatureFlagsPM");
|
|
5
|
+
class FeatureFlagsPMMock extends FeatureFlagsPM_1.FeatureFlagsPM {
|
|
6
|
+
constructor(appObject) {
|
|
7
|
+
super(appObject, FeatureFlagsPM_1.FeatureFlagsPM.type);
|
|
8
|
+
this.vmsAreEqual = jest.fn();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.FeatureFlagsPMMock = FeatureFlagsPMMock;
|
|
12
|
+
function makeFeatureFlagsPMMock(appObjects) {
|
|
13
|
+
return new FeatureFlagsPMMock(appObjects.getOrCreate("FeatureFlagsPMMock"));
|
|
14
|
+
}
|
|
15
|
+
exports.makeFeatureFlagsPMMock = makeFeatureFlagsPMMock;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./FeatureFlagsPMMock";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./FeatureFlagsPMMock"), exports);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AppObject, AppObjectPM, AppObjectRepo } from "../../../AppObject";
|
|
2
|
+
export declare abstract class FeatureFlagsPM extends AppObjectPM<string[]> {
|
|
3
|
+
static type: string;
|
|
4
|
+
static get(appObjects: AppObjectRepo): FeatureFlagsPM | undefined;
|
|
5
|
+
}
|
|
6
|
+
export declare function makeFeatureFlagsPM(appObject: AppObject): FeatureFlagsPM;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeFeatureFlagsPM = exports.FeatureFlagsPM = void 0;
|
|
4
|
+
const AppObject_1 = require("../../../AppObject");
|
|
5
|
+
const FeatureFlagEntity_1 = require("../Entity/FeatureFlagEntity");
|
|
6
|
+
class FeatureFlagsPM extends AppObject_1.AppObjectPM {
|
|
7
|
+
static get(appObjects) {
|
|
8
|
+
return AppObject_1.getSingletonComponent(FeatureFlagsPM.type, appObjects);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.FeatureFlagsPM = FeatureFlagsPM;
|
|
12
|
+
FeatureFlagsPM.type = "FeatureFlagsPM";
|
|
13
|
+
function makeFeatureFlagsPM(appObject) {
|
|
14
|
+
return new FeatureFlagsPMImp(appObject);
|
|
15
|
+
}
|
|
16
|
+
exports.makeFeatureFlagsPM = makeFeatureFlagsPM;
|
|
17
|
+
class FeatureFlagsPMImp extends FeatureFlagsPM {
|
|
18
|
+
constructor(appObject) {
|
|
19
|
+
var _a;
|
|
20
|
+
super(appObject, FeatureFlagsPM.type);
|
|
21
|
+
this.onEntityChange = () => {
|
|
22
|
+
if (!this.featureFlagsEntity)
|
|
23
|
+
return;
|
|
24
|
+
this.doUpdateView(this.featureFlagsEntity.flags);
|
|
25
|
+
};
|
|
26
|
+
this.onEntityChange();
|
|
27
|
+
(_a = this.featureFlagsEntity) === null || _a === void 0 ? void 0 : _a.addChangeObserver(this.onEntityChange);
|
|
28
|
+
this.appObjects.registerSingleton(this);
|
|
29
|
+
}
|
|
30
|
+
get featureFlagsEntity() {
|
|
31
|
+
return this.getCachedSingleton(FeatureFlagEntity_1.FeatureFlagsEntity.type);
|
|
32
|
+
}
|
|
33
|
+
vmsAreEqual(a, b) {
|
|
34
|
+
if (a.length !== b.length)
|
|
35
|
+
return false;
|
|
36
|
+
let areEqual = true;
|
|
37
|
+
a.forEach((flagA, i) => {
|
|
38
|
+
const flagB = b[i];
|
|
39
|
+
if (flagA !== flagB) {
|
|
40
|
+
areEqual = false;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return areEqual;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./FeatureFlagsPM";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./FeatureFlagsPM"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./Adapters"), exports);
|
|
14
|
+
__exportStar(require("./Entity"), exports);
|
|
15
|
+
__exportStar(require("./Mocks"), exports);
|
|
16
|
+
__exportStar(require("./PMs"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppObject } from "../../../AppObject/AppObject";
|
|
2
|
+
import { AppObjectUC } from "../../../AppObject/AppObjectUC";
|
|
3
|
+
import { RequestHandler } from "../Entities";
|
|
4
|
+
export declare abstract class EnableFeatureUC extends AppObjectUC implements RequestHandler {
|
|
5
|
+
static readonly type = "EnableFeatureUC";
|
|
6
|
+
readonly requestType = "ENABLE_FEATURE";
|
|
7
|
+
readonly payloadVersion = 1;
|
|
8
|
+
abstract action: (feature: string) => void;
|
|
9
|
+
abstract handleRequest: (version: number, payload?: unknown) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function makeEnableFeatureUC(appObject: AppObject): EnableFeatureUC;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeEnableFeatureUC = exports.EnableFeatureUC = void 0;
|
|
4
|
+
const AppObjectUC_1 = require("../../../AppObject/AppObjectUC");
|
|
5
|
+
const FeatureFlags_1 = require("../../FeatureFlags");
|
|
6
|
+
const Entities_1 = require("../Entities");
|
|
7
|
+
class EnableFeatureUC extends AppObjectUC_1.AppObjectUC {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.requestType = "ENABLE_FEATURE";
|
|
11
|
+
this.payloadVersion = 1;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.EnableFeatureUC = EnableFeatureUC;
|
|
15
|
+
EnableFeatureUC.type = "EnableFeatureUC";
|
|
16
|
+
function makeEnableFeatureUC(appObject) {
|
|
17
|
+
return new EnableFeatureUCImp(appObject);
|
|
18
|
+
}
|
|
19
|
+
exports.makeEnableFeatureUC = makeEnableFeatureUC;
|
|
20
|
+
class EnableFeatureUCImp extends EnableFeatureUC {
|
|
21
|
+
constructor(appObject) {
|
|
22
|
+
super(appObject, EnableFeatureUC.type);
|
|
23
|
+
this.action = (featureFlag) => {
|
|
24
|
+
var _a;
|
|
25
|
+
(_a = this.featureFlagEntity) === null || _a === void 0 ? void 0 : _a.addFlag(featureFlag);
|
|
26
|
+
};
|
|
27
|
+
this.handleRequest = (version, payload) => {
|
|
28
|
+
if (version === this.payloadVersion) {
|
|
29
|
+
const { featureFlag } = this.castPayload(payload);
|
|
30
|
+
this.action(featureFlag);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
throw new Entities_1.UnsupportedRequestVersion(this.requestType, version);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const handler = appObject.getComponent(Entities_1.AppHandlerEntity.type);
|
|
37
|
+
if (!handler) {
|
|
38
|
+
this.warn("DisposeAppBaseUC has been added to an app object that does not have an AppHandlerEntity. Add one first");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
handler.registerRequestHandler(this);
|
|
42
|
+
}
|
|
43
|
+
get featureFlagEntity() {
|
|
44
|
+
return this.getCachedSingleton(FeatureFlags_1.FeatureFlagsEntity.type);
|
|
45
|
+
}
|
|
46
|
+
castPayload(payload) {
|
|
47
|
+
const castPayload = payload;
|
|
48
|
+
if (castPayload.featureFlag === undefined) {
|
|
49
|
+
throw new Entities_1.UnableToParsePayload(this.requestType, 1, JSON.stringify(payload));
|
|
50
|
+
}
|
|
51
|
+
return castPayload;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -11,6 +11,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./DisposeAppUC"), exports);
|
|
14
|
+
__exportStar(require("./EnableFeatureUC"), exports);
|
|
14
15
|
__exportStar(require("./SetAppStateUC"), exports);
|
|
15
16
|
__exportStar(require("./SetIsAuthoringUC"), exports);
|
|
16
17
|
__exportStar(require("./SetThemeColorUC"), exports);
|
package/lib/Components/index.js
CHANGED
|
@@ -17,6 +17,7 @@ __exportStar(require("./Challenge"), exports);
|
|
|
17
17
|
__exportStar(require("./ChannelModel"), exports);
|
|
18
18
|
__exportStar(require("./Dispatcher"), exports);
|
|
19
19
|
__exportStar(require("./Enablement"), exports);
|
|
20
|
+
__exportStar(require("./FeatureFlags"), exports);
|
|
20
21
|
__exportStar(require("./FramedScreen"), exports);
|
|
21
22
|
__exportStar(require("./GLBModel"), exports);
|
|
22
23
|
__exportStar(require("./Hideable"), exports);
|