@streamlayer/sdk-web-features 0.1.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/README.md +7 -0
- package/package.json +20 -0
- package/src/index.d.ts +20 -0
- package/src/index.js +47 -0
- package/src/index.js.map +1 -0
package/README.md
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@streamlayer/sdk-web-features",
|
|
3
|
+
"dependencies": {
|
|
4
|
+
"@streamlayer/sdk-web-interfaces": "workspace:^",
|
|
5
|
+
"@streamlayer/sdk-web-types": "workspace:^",
|
|
6
|
+
"@streamlayer/feature-gamification": "*",
|
|
7
|
+
"tslib": "^2.6.2"
|
|
8
|
+
},
|
|
9
|
+
"version": "0.1.0",
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "./src/index.js",
|
|
12
|
+
"module": "./src/index.js",
|
|
13
|
+
"typings": "./src/index.d.ts",
|
|
14
|
+
"files": [
|
|
15
|
+
"src/"
|
|
16
|
+
],
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@swc/helpers": "^0.5.2"
|
|
19
|
+
}
|
|
20
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FeatureConfig } from '@streamlayer/sdk-web-types';
|
|
2
|
+
import { AbstractFeature, FeatureSource, FeatureProps, StreamLayerContext } from '@streamlayer/sdk-web-interfaces';
|
|
3
|
+
import { Gamification } from '@streamlayer/feature-gamification';
|
|
4
|
+
export declare class Feature extends AbstractFeature<undefined> {
|
|
5
|
+
}
|
|
6
|
+
export declare const initFeature: (overlay: FeatureProps, source: FeatureSource, instance: StreamLayerContext) => Feature | Gamification;
|
|
7
|
+
export { FeatureSource } from '@streamlayer/sdk-web-interfaces';
|
|
8
|
+
declare module '@streamlayer/sdk-web-interfaces' {
|
|
9
|
+
interface StreamLayerContext {
|
|
10
|
+
features: Map<FeatureConfig['name'], Feature | Gamification>;
|
|
11
|
+
initFeature: (overlay: FeatureProps, source: FeatureSource) => void;
|
|
12
|
+
updateFeature: (overlay: FeatureProps, source: FeatureSource) => void;
|
|
13
|
+
destroyFeature: (overlay: FeatureProps) => void;
|
|
14
|
+
reinitializeFeatures: () => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
interface StreamLayerSDK {
|
|
17
|
+
getFeatures: () => Map<string, Feature | Gamification>;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export declare const features: (instance: StreamLayerContext, opts: unknown, done: () => void) => void;
|
package/src/index.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { FeatureType } from '@streamlayer/sdk-web-types';
|
|
2
|
+
import { AbstractFeature, FeatureSource } from '@streamlayer/sdk-web-interfaces';
|
|
3
|
+
import { Gamification } from '@streamlayer/feature-gamification';
|
|
4
|
+
export class Feature extends AbstractFeature {
|
|
5
|
+
}
|
|
6
|
+
export const initFeature = (overlay, source, instance) => {
|
|
7
|
+
if (overlay.type === FeatureType.GAMES) {
|
|
8
|
+
return new Gamification(overlay, source, instance);
|
|
9
|
+
}
|
|
10
|
+
return new Feature(overlay, source);
|
|
11
|
+
};
|
|
12
|
+
export { FeatureSource } from '@streamlayer/sdk-web-interfaces';
|
|
13
|
+
export const features = (instance, opts, done) => {
|
|
14
|
+
instance.features = new Map();
|
|
15
|
+
instance.sdk.getFeatures = () => instance.features;
|
|
16
|
+
/**
|
|
17
|
+
* A distinct object instance is created and initialized for each overlay.
|
|
18
|
+
*/
|
|
19
|
+
instance.initFeature = (overlay, source = FeatureSource.ORGANIZATION) => {
|
|
20
|
+
const feature = initFeature(overlay, source, instance);
|
|
21
|
+
instance.features.set(overlay.name, feature);
|
|
22
|
+
};
|
|
23
|
+
instance.updateFeature = (overlay, source) => {
|
|
24
|
+
instance.features.get(overlay.name)?.update(overlay, source);
|
|
25
|
+
};
|
|
26
|
+
instance.destroyFeature = (overlay) => {
|
|
27
|
+
instance.features.delete(overlay.name);
|
|
28
|
+
};
|
|
29
|
+
instance.reinitializeFeatures = async () => {
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
const organizationSettings = await instance.stores.organizationSettings.getValue();
|
|
33
|
+
instance.features.clear();
|
|
34
|
+
for (const overlay of organizationSettings?.overlays || []) {
|
|
35
|
+
instance.initFeature(overlay, FeatureSource.ORGANIZATION);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
instance.stores.providerStreamId.listen((eventId) => {
|
|
41
|
+
if (!eventId) {
|
|
42
|
+
void instance.reinitializeFeatures();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
done();
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/sdk-web-features/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAoC,MAAM,iCAAiC,CAAA;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEhE,MAAM,OAAO,OAAQ,SAAQ,eAA0B;CAAG;AAE1D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAqB,EAAE,MAAqB,EAAE,QAA4B,EAAE,EAAE;IACxG,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,EAAE;QACtC,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;KACnD;IAED,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AACrC,CAAC,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAwB/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,QAA4B,EAAE,IAAa,EAAE,IAAgB,EAAE,EAAE;IACxF,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAA;IAE9C,QAAQ,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAA;IAElD;;OAEG;IACH,QAAQ,CAAC,WAAW,GAAG,CAAC,OAAqB,EAAE,SAAwB,aAAa,CAAC,YAAY,EAAE,EAAE;QACnG,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QAEtD,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC,CAAA;IAED,QAAQ,CAAC,aAAa,GAAG,CAAC,OAAqB,EAAE,MAAqB,EAAE,EAAE;QACxE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9D,CAAC,CAAA;IAED,QAAQ,CAAC,cAAc,GAAG,CAAC,OAAqB,EAAE,EAAE;QAClD,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAA;IAED,QAAQ,CAAC,oBAAoB,GAAG,KAAK,IAAI,EAAE;QACzC,6DAA6D;QAC7D,aAAa;QACb,MAAM,oBAAoB,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAA;QAElF,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QAEzB,KAAK,MAAM,OAAO,IAAI,oBAAoB,EAAE,QAAQ,IAAI,EAAE,EAAE;YAC1D,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;SAC1D;IACH,CAAC,CAAA;IAED,6DAA6D;IAC7D,aAAa;IACb,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClD,IAAI,CAAC,OAAO,EAAE;YACZ,KAAK,QAAQ,CAAC,oBAAoB,EAAE,CAAA;SACrC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACR,CAAC,CAAA"}
|