@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.
- package/lib/event-bus/index.d.ts +1 -0
- package/lib/feature.d.ts +9 -0
- package/lib/feature.js +26 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/store/api.js +20 -7
- package/package.json +5 -5
package/lib/event-bus/index.d.ts
CHANGED
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 =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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.
|
|
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.
|
|
21
|
-
"nanostores": "^
|
|
22
|
-
"@streamlayer/sdk-web-logger": "^1.0.
|
|
23
|
-
"@streamlayer/sdk-web-types": "^1.16.
|
|
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"
|