@streamlayer/sdk-web-interfaces 1.8.8 → 1.9.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.
@@ -66,6 +66,7 @@ export type EventBusActionPayload = {
66
66
  app: unknown;
67
67
  exposedPauseAd: {
68
68
  id?: string;
69
+ parentId?: string;
69
70
  };
70
71
  invitation: {
71
72
  from?: InvitationFrom;
package/lib/feature.d.ts CHANGED
@@ -20,6 +20,15 @@ export declare enum FeatureStatus {
20
20
  Ready = "ready",
21
21
  Suspended = "suspended"
22
22
  }
23
+ export declare class AbstractFeatureUnit {
24
+ status: WritableAtom<FeatureStatus>;
25
+ protected listeners: Set<FeatureListener>;
26
+ constructor();
27
+ registerEventListener(listener: FeatureListener): void;
28
+ enable: () => void;
29
+ disable: () => void;
30
+ protected fireEvent(event: unknown): void;
31
+ }
23
32
  export declare class AbstractFeature<K extends FeatureSettings['case'] | undefined, C extends FeatureSettings['value'] = FeatureSettings['value']> {
24
33
  status: WritableAtom<FeatureStatus>;
25
34
  source: FeatureSource;
package/lib/feature.js CHANGED
@@ -28,6 +28,32 @@ const IGNORE_KEYS = new Set([
28
28
  'toJsonString',
29
29
  'getType',
30
30
  ]);
31
+ export class AbstractFeatureUnit {
32
+ status;
33
+ listeners = new Set();
34
+ constructor() {
35
+ this.status = atom(FeatureStatus.Suspended);
36
+ }
37
+ registerEventListener(listener) {
38
+ this.listeners.add(listener);
39
+ }
40
+ enable = () => {
41
+ this.status.set(FeatureStatus.Ready);
42
+ };
43
+ disable = () => {
44
+ this.status.set(FeatureStatus.Suspended);
45
+ };
46
+ fireEvent(event) {
47
+ for (const listener of this.listeners.values()) {
48
+ try {
49
+ listener.onEvent(event);
50
+ }
51
+ catch (err) {
52
+ console.error(err);
53
+ }
54
+ }
55
+ }
56
+ }
31
57
  export class AbstractFeature {
32
58
  status;
33
59
  source;
package/lib/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { FeatureType } from '@streamlayer/sdk-web-types';
2
2
  import { EventBus, EventBusEvent, EventBusData, EventBusActionPayload } from './event-bus';
3
3
  export { AbstractAuthenticationProvider } from './auth';
4
- export { AbstractFeature, FeatureSource, type FeatureProps, FeatureStatus } from './feature';
4
+ export { AbstractFeature, AbstractFeatureUnit, FeatureSource, type FeatureProps, FeatureStatus } from './feature';
5
5
  export { MapStore, createMapStore } from './store/map';
6
6
  export type { MapStoreListeners } from './store/map';
7
7
  export { SingleStore, createSingleStore, createComputedStore } from './store/single';
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { EventBus } from './event-bus';
2
2
  export { AbstractAuthenticationProvider } from './auth';
3
- export { AbstractFeature, FeatureSource, FeatureStatus } from './feature';
3
+ export { AbstractFeature, AbstractFeatureUnit, FeatureSource, FeatureStatus } from './feature';
4
4
  export { MapStore, createMapStore } from './store/map';
5
5
  export { SingleStore, createSingleStore, createComputedStore } from './store/single';
6
6
  export { AbstractStore, mergeStores } from './store/abstract';
package/lib/store/api.js CHANGED
@@ -19,13 +19,26 @@ export class ApiStore extends AbstractStore {
19
19
  }
20
20
  }
21
21
  getAtomStore = () => this.atomStore;
22
- getValue = async () => {
23
- const store = this.getStore();
24
- if (store.value === undefined) {
25
- throw new Error('no store');
26
- }
27
- await store.value.promise;
28
- return store.get().data;
22
+ getValue = () => {
23
+ return new Promise((resolve, reject) => window.requestAnimationFrame(async () => {
24
+ try {
25
+ const store = this.getStore();
26
+ if (store.value === undefined) {
27
+ throw new Error('no store');
28
+ }
29
+ // If query is disabled (a param is false/undefined), key is undefined
30
+ // and fetch() would create a promise that never resolves
31
+ if (!store.key) {
32
+ resolve(undefined);
33
+ return;
34
+ }
35
+ await store.fetch();
36
+ resolve(store.get().data);
37
+ }
38
+ catch (error) {
39
+ reject(error);
40
+ }
41
+ }));
29
42
  };
30
43
  getValues = () => {
31
44
  return this.getStore().get();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamlayer/sdk-web-interfaces",
3
- "version": "1.8.8",
3
+ "version": "1.9.1",
4
4
  "type": "module",
5
5
  "main": "./lib/index.js",
6
6
  "typings": "./lib/index.d.ts",
@@ -17,10 +17,10 @@
17
17
  },
18
18
  "peerDependencies": {
19
19
  "@bufbuild/protobuf": "^2.2.2",
20
- "@nanostores/query": "^0.2.10",
21
- "nanostores": "^0.11.4",
22
- "@streamlayer/sdk-web-logger": "^1.0.93",
23
- "@streamlayer/sdk-web-types": "^1.16.8"
20
+ "@nanostores/query": "^0.3.4",
21
+ "nanostores": "^1.1.0",
22
+ "@streamlayer/sdk-web-logger": "^1.0.95",
23
+ "@streamlayer/sdk-web-types": "^1.16.10"
24
24
  },
25
25
  "devDependencies": {
26
26
  "tslib": "^2.7.0"