@streamlayer/sdk-web-interfaces 0.15.3

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 ADDED
@@ -0,0 +1,6 @@
1
+ # sdk-web-interfaces
2
+
3
+ This library was generatedwith [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+ Run `nx build sdk-web-interfaces` to build the library.
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@streamlayer/sdk-web-interfaces",
3
+ "version": "0.15.3",
4
+ "dependencies": {
5
+ "@nanostores/logger": "^0.2.3",
6
+ "@nanostores/query": "^0.2.4",
7
+ "microdiff": "^1.3.2",
8
+ "nanostores": "^0.9.3",
9
+ "@streamlayer/sl-eslib": "^5.34.4",
10
+ "@bufbuild/protobuf": "^1.3.1",
11
+ "tslib": "^2.6.2"
12
+ },
13
+ "type": "module",
14
+ "main": "./src/index.js",
15
+ "typings": "./src/index.d.ts",
16
+ "files": [
17
+ "src/"
18
+ ],
19
+ "devDependencies": {
20
+ "@swc/helpers": "^0.5.2"
21
+ },
22
+ "module": "./src/index.js"
23
+ }
package/src/auth.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare abstract class AbstractAuthenticationProvider {
2
+ abstract login(...args: unknown[]): Promise<unknown>;
3
+ abstract logout(): void;
4
+ abstract me(): Promise<unknown>;
5
+ abstract isAuthenticated(): Promise<unknown>;
6
+ }
package/src/auth.js ADDED
@@ -0,0 +1,3 @@
1
+ export class AbstractAuthenticationProvider {
2
+ }
3
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../packages/sdk-web-interfaces/src/auth.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,8BAA8B;CAKnD"}
@@ -0,0 +1,44 @@
1
+ import { SdkOverlay, SdkOverlaySettings } from '@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb';
2
+ import { PlainMessage } from '@bufbuild/protobuf';
3
+ import { WritableAtom } from 'nanostores';
4
+ import { MapStore } from './store/map';
5
+ type FeatureListener = {
6
+ name: string;
7
+ enabled: boolean;
8
+ onEvent: (...args: unknown[]) => void;
9
+ };
10
+ export type FeatureProps = PlainMessage<SdkOverlay>;
11
+ export declare enum FeatureSource {
12
+ ORGANIZATION = "ORGANIZATION",
13
+ STREAM = "STREAM"
14
+ }
15
+ type FeatureConfig = Omit<FeatureProps, 'settings'>;
16
+ type FeatureSettings = Exclude<PlainMessage<SdkOverlaySettings>['overlaySettings'], {
17
+ case: 'inplay';
18
+ } | {
19
+ case: 'getstream';
20
+ } | {
21
+ case: undefined;
22
+ }>;
23
+ export declare enum FeatureStatus {
24
+ Ready = "ready",
25
+ Suspended = "suspended"
26
+ }
27
+ export declare abstract class AbstractFeature<K extends FeatureSettings['case'] | undefined, C extends FeatureSettings['value'] = FeatureSettings['value']> {
28
+ status: WritableAtom<FeatureStatus>;
29
+ source: FeatureSource;
30
+ protected config: MapStore<FeatureConfig>;
31
+ protected settings: MapStore<C>;
32
+ protected listeners: Set<FeatureListener>;
33
+ protected settingsKey: K;
34
+ constructor({ settings, ...config }: FeatureProps, source: FeatureSource);
35
+ get featureConfig(): import("nanostores").MapStore<FeatureConfig>;
36
+ get featureSettings(): import("nanostores").MapStore<C>;
37
+ registerEventListener(listener: FeatureListener): void;
38
+ enable: () => void;
39
+ disabled: () => void;
40
+ setFeatureConfig: ({ settings, ...config }: FeatureProps) => void;
41
+ update: (config: FeatureProps, source: FeatureSource) => void;
42
+ protected fireEvent(event: unknown): void;
43
+ }
44
+ export {};
package/src/feature.js ADDED
@@ -0,0 +1,92 @@
1
+ import { SdkOverlayType } from '@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb';
2
+ import { atom } from 'nanostores';
3
+ import { createMapStore, MapStore } from './store/map';
4
+ export var FeatureSource;
5
+ (function (FeatureSource) {
6
+ FeatureSource["ORGANIZATION"] = "ORGANIZATION";
7
+ FeatureSource["STREAM"] = "STREAM";
8
+ })(FeatureSource || (FeatureSource = {}));
9
+ const FeatureTypes = {
10
+ [SdkOverlayType.BETTING]: 'betting',
11
+ [SdkOverlayType.GAMES]: 'games',
12
+ [SdkOverlayType.PUBLIC_CHAT]: 'publicChat',
13
+ [SdkOverlayType.TWITTER]: 'twitter',
14
+ };
15
+ export var FeatureStatus;
16
+ (function (FeatureStatus) {
17
+ FeatureStatus["Ready"] = "ready";
18
+ FeatureStatus["Suspended"] = "suspended";
19
+ })(FeatureStatus || (FeatureStatus = {}));
20
+ export class AbstractFeature {
21
+ status;
22
+ source;
23
+ config;
24
+ settings;
25
+ listeners = new Set();
26
+ settingsKey;
27
+ constructor({ settings, ...config }, source) {
28
+ this.settingsKey = FeatureTypes[config.type];
29
+ this.status = atom(FeatureStatus.Suspended);
30
+ this.config = new MapStore(createMapStore(config), `feature:config:${this.settingsKey}`);
31
+ if (this.settingsKey !== undefined && settings?.overlaySettings.case === this.settingsKey) {
32
+ this.settings = new MapStore(createMapStore(settings.overlaySettings.value), `feature:settings:${this.settingsKey}`);
33
+ }
34
+ else {
35
+ this.settings = new MapStore(createMapStore({}), `feature:settings:${this.settingsKey}`);
36
+ }
37
+ this.source = source;
38
+ }
39
+ get featureConfig() {
40
+ return this.config.getStore();
41
+ }
42
+ get featureSettings() {
43
+ return this.settings.getStore();
44
+ }
45
+ registerEventListener(listener) {
46
+ this.listeners.add(listener);
47
+ }
48
+ enable = () => {
49
+ this.status.set(FeatureStatus.Ready);
50
+ };
51
+ disabled = () => {
52
+ this.status.set(FeatureStatus.Suspended);
53
+ };
54
+ setFeatureConfig = ({ settings, ...config }) => {
55
+ let configKey;
56
+ for (configKey in config) {
57
+ this.config.setValue(configKey, config[configKey]);
58
+ }
59
+ if (settings?.overlaySettings.case === this.settingsKey) {
60
+ const newSettings = settings.overlaySettings.value;
61
+ if (newSettings !== undefined) {
62
+ let key;
63
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
64
+ // @ts-ignore
65
+ for (key in newSettings) {
66
+ console.log(key, newSettings[key]);
67
+ if (newSettings[key] !== 0 && newSettings[key] !== '') {
68
+ this.settings.setValue(key, newSettings[key]);
69
+ }
70
+ }
71
+ }
72
+ }
73
+ };
74
+ update = (config, source) => {
75
+ if (this.source === FeatureSource.STREAM && source === FeatureSource.ORGANIZATION) {
76
+ return;
77
+ }
78
+ this.setFeatureConfig(config);
79
+ this.source = source;
80
+ };
81
+ fireEvent(event) {
82
+ for (const listener of this.listeners.values()) {
83
+ try {
84
+ listener.onEvent(event);
85
+ }
86
+ catch (err) {
87
+ console.error(err);
88
+ }
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../../../packages/sdk-web-interfaces/src/feature.ts"],"names":[],"mappings":"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"}
package/src/index.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ export { AbstractAuthenticationProvider } from './auth';
2
+ export { AbstractFeature, FeatureSource, type FeatureProps } from './feature';
3
+ export { MapStore, createMapStore } from './store/map';
4
+ export type { MapStoreListeners } from './store/map';
5
+ export { SingleStore, createSingleStore } from './store/single';
6
+ export { AbstractStore, mergeStores } from './store/abstract';
7
+ export { ApiStore } from './store/api';
8
+ export interface StreamLayerSDK {
9
+ }
10
+ export interface StreamLayerContext {
11
+ sdk: StreamLayerSDK;
12
+ }
13
+ type DoneFn = Function;
14
+ export type StreamLayerPlugin = (instance: StreamLayerContext, opts: unknown, done: DoneFn) => void;
package/src/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { AbstractAuthenticationProvider } from './auth';
2
+ export { AbstractFeature, FeatureSource } from './feature';
3
+ export { MapStore, createMapStore } from './store/map';
4
+ export { SingleStore, createSingleStore } from './store/single';
5
+ export { AbstractStore, mergeStores } from './store/abstract';
6
+ export { ApiStore } from './store/api';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/sdk-web-interfaces/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAqB,MAAM,WAAW,CAAA;AAC7E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,45 @@
1
+ import type { AnyStore } from 'nanostores';
2
+ declare global {
3
+ interface Window {
4
+ storeLogger: any;
5
+ }
6
+ }
7
+ /**
8
+ * An abstract store is a wrapper for third-party stores,
9
+ * providing developers with a consistent interface inspired
10
+ * by the "nanostore" pattern. This simplifies
11
+ * interactions with different storage systems.
12
+ */
13
+ export declare abstract class AbstractStore<T extends AnyStore> {
14
+ /**
15
+ * store instance (nanostores)
16
+ */
17
+ protected readonly store: T;
18
+ protected readonly name: string;
19
+ constructor(store: T, name: string);
20
+ /**
21
+ * return store instance
22
+ */
23
+ getStore(): T;
24
+ /**
25
+ * get all store values
26
+ */
27
+ abstract getValues(): unknown;
28
+ /**
29
+ * get store value by key
30
+ */
31
+ abstract getValue(...args: unknown[]): unknown;
32
+ /**
33
+ * subsribe directly to store changes
34
+ */
35
+ abstract subscribe(...args: unknown[]): void;
36
+ /**
37
+ * unsubsribe directly to store change
38
+ */
39
+ abstract unsubscribe(): void;
40
+ }
41
+ /**
42
+ * Merge multiple stores into a single instance using a single
43
+ * subscribe handler, leveraging the `useStore` method from `@nanostores/react` for React subscriptions.
44
+ */
45
+ export declare const mergeStores: <T extends Record<string, AbstractStore<AnyStore>>, K = { [Index in keyof T]: ReturnType<T[Index]["getStore"]>["value"]; }>(stores: T) => import("nanostores").ReadableAtom<K>;
@@ -0,0 +1,85 @@
1
+ import { computed } from 'nanostores';
2
+ import { buildLogger } from '@nanostores/logger';
3
+ import diff from 'microdiff';
4
+ window.storeLogger = Object.create(null);
5
+ const slStoreLogger = (store, name) => buildLogger(store, name, {
6
+ mount: ({ storeName }) => {
7
+ if (!window.storeLogger[storeName]) {
8
+ window.storeLogger[storeName] = { mounted: true, history: [{ type: 'mount' }] };
9
+ }
10
+ window.storeLogger[storeName].store = store;
11
+ },
12
+ unmount: ({ storeName }) => {
13
+ window.storeLogger[storeName].mounted = false;
14
+ window.storeLogger[storeName]?.history.push({ type: 'unmount' });
15
+ },
16
+ change: ({ actionName, storeName, changed, newValue, oldValue, valueMessage }) => {
17
+ window.storeLogger[storeName]?.history.push({
18
+ type: 'change',
19
+ changed,
20
+ newValue,
21
+ oldValue,
22
+ diff: diff({ ...oldValue }, { ...newValue }, { cyclesFix: false }),
23
+ actionName,
24
+ valueMessage,
25
+ });
26
+ },
27
+ action: {
28
+ start: ({ actionName, args, storeName }) => {
29
+ window.storeLogger[storeName]?.history.push({
30
+ type: 'action:start',
31
+ actionName,
32
+ args,
33
+ storeName,
34
+ });
35
+ },
36
+ error: ({ actionName, error, storeName }) => {
37
+ window.storeLogger[storeName]?.history.push({
38
+ type: 'action:error',
39
+ actionName,
40
+ error,
41
+ });
42
+ },
43
+ end: ({ actionName, storeName }) => {
44
+ window.storeLogger[storeName]?.history.push({
45
+ type: 'action:end',
46
+ actionName,
47
+ });
48
+ },
49
+ },
50
+ });
51
+ /**
52
+ * An abstract store is a wrapper for third-party stores,
53
+ * providing developers with a consistent interface inspired
54
+ * by the "nanostore" pattern. This simplifies
55
+ * interactions with different storage systems.
56
+ */
57
+ export class AbstractStore {
58
+ /**
59
+ * store instance (nanostores)
60
+ */
61
+ store;
62
+ name;
63
+ constructor(store, name) {
64
+ this.store = store;
65
+ this.name = name;
66
+ if (process.env.NODE_ENV !== 'production') {
67
+ slStoreLogger(this.store, this.name);
68
+ }
69
+ }
70
+ /**
71
+ * return store instance
72
+ */
73
+ getStore() {
74
+ return this.store;
75
+ }
76
+ }
77
+ /**
78
+ * Merge multiple stores into a single instance using a single
79
+ * subscribe handler, leveraging the `useStore` method from `@nanostores/react` for React subscriptions.
80
+ */
81
+ export const mergeStores = (stores) => {
82
+ const storeKeys = Object.keys(stores);
83
+ return computed(storeKeys.map((key) => stores[key].getStore()), (...storeValues) => Object.fromEntries(storeKeys.map((key, i) => [key, storeValues[i]])));
84
+ };
85
+ //# sourceMappingURL=abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../../packages/sdk-web-interfaces/src/store/abstract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { FetcherStore } from '@nanostores/query';
2
+ import { WritableAtom } from 'nanostores';
3
+ import { AbstractStore } from './abstract';
4
+ /**
5
+ * Wrapper for @nanostores/query FetcherStore
6
+ */
7
+ export declare class ApiStore<StoreValue, StoreInstance extends FetcherStore<StoreValue | undefined> = FetcherStore<StoreValue | undefined>> extends AbstractStore<StoreInstance> {
8
+ private readonly atomStore;
9
+ constructor(store: StoreInstance, name: string, atomPicker?: (val?: StoreInstance['value']) => string | undefined);
10
+ getAtomStore: () => WritableAtom<string | undefined>;
11
+ getValue: () => Promise<StoreValue | undefined>;
12
+ getValues: () => never;
13
+ setValue: (value?: StoreInstance['value']) => void;
14
+ subscribe: StoreInstance['subscribe'];
15
+ unsubscribe: () => never;
16
+ invalidate: () => void;
17
+ listen: (cb: Parameters<FetcherStore['listen']>[0]) => () => void;
18
+ get(): void;
19
+ key: () => string | undefined;
20
+ off: () => void;
21
+ }
@@ -0,0 +1,59 @@
1
+ import { atom } from 'nanostores';
2
+ import { AbstractStore } from './abstract';
3
+ /**
4
+ * Wrapper for @nanostores/query FetcherStore
5
+ */
6
+ export class ApiStore extends AbstractStore {
7
+ atomStore;
8
+ constructor(store, name, atomPicker) {
9
+ super(store, `api:${name}`);
10
+ this.atomStore = atom();
11
+ if (atomPicker) {
12
+ store.subscribe((data) => {
13
+ this.atomStore.set(atomPicker(data));
14
+ });
15
+ }
16
+ }
17
+ getAtomStore = () => this.atomStore;
18
+ getValue = async () => {
19
+ const store = this.getStore();
20
+ if (store.value === undefined) {
21
+ throw new Error('no store');
22
+ }
23
+ await store.value.promise;
24
+ return store.get().data;
25
+ };
26
+ getValues = () => {
27
+ throw new Error('not implemented');
28
+ };
29
+ setValue = (value) => {
30
+ const store = this.getStore();
31
+ return store.set({ loading: false, data: value?.data });
32
+ };
33
+ subscribe = (listener) => {
34
+ const store = this.getStore();
35
+ return store.subscribe(listener);
36
+ };
37
+ unsubscribe = () => {
38
+ throw new Error('not implemented');
39
+ };
40
+ invalidate = () => {
41
+ this.store.invalidate();
42
+ };
43
+ listen = (cb) => {
44
+ const store = this.getStore();
45
+ return store.listen(cb);
46
+ };
47
+ get() {
48
+ throw new Error('not implemented');
49
+ }
50
+ key = () => {
51
+ const store = this.getStore();
52
+ return store.key;
53
+ };
54
+ off = () => {
55
+ const store = this.getStore();
56
+ return store.off();
57
+ };
58
+ }
59
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../../packages/sdk-web-interfaces/src/store/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,IAAI,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C;;GAEG;AACH,MAAM,OAAO,QAGX,SAAQ,aAA4B;IACnB,SAAS,CAAkC;IAE5D,YAAY,KAAoB,EAAE,IAAY,EAAE,UAAiE;QAC/G,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;QAE3B,IAAI,CAAC,SAAS,GAAG,IAAI,EAAsB,CAAA;QAE3C,IAAI,UAAU,EAAE;YACd,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;gBACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;YACtC,CAAC,CAAC,CAAA;SACH;IACH,CAAC;IAED,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAA;IAEnC,QAAQ,GAAG,KAAK,IAAqC,EAAE;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;SAC5B;QAED,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAA;QAEzB,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA;IACzB,CAAC,CAAA;IAED,SAAS,GAAG,GAAG,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,QAAQ,GAAG,CAAC,KAA8B,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,CAAC,CAAA;IAED,SAAS,GAA+B,CAAC,QAAQ,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,WAAW,GAAG,GAAG,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,UAAU,GAAG,GAAG,EAAE;QAChB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,GAAG,CAAC,EAAyC,EAAE,EAAE;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,GAAG;QACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IAED,GAAG,GAAG,GAAG,EAAE;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,CAAA;IAClB,CAAC,CAAA;IAED,GAAG,GAAG,GAAG,EAAE;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC,CAAA;CACF"}
@@ -0,0 +1,19 @@
1
+ import type { MapStoreKeys, MapStore as NMapStore } from 'nanostores';
2
+ import { AbstractStore } from './abstract';
3
+ /**
4
+ * Wrapper for nanostores MapStore
5
+ */
6
+ export declare class MapStore<StoreInterface extends object, StoreInstance extends NMapStore<StoreInterface> = NMapStore<StoreInterface>> extends AbstractStore<StoreInstance> {
7
+ getValues: () => StoreInterface;
8
+ getValue: (key: MapStoreKeys<StoreInstance>) => StoreInterface[MapStoreKeys<StoreInstance>];
9
+ setValue: <Key extends MapStoreKeys<StoreInstance>>(path: Key, value: StoreInterface[Key]) => void;
10
+ subscribe: StoreInstance['subscribe'];
11
+ unsubscribe: () => void;
12
+ }
13
+ /**
14
+ * create map store from nanostores
15
+ */
16
+ export declare const createMapStore: <Data extends object>(initialData: Data) => NMapStore<Data>;
17
+ export type MapStoreListeners<StoreInstance extends NMapStore<StoreInterface>, StoreInterface extends object> = {
18
+ [T in MapStoreKeys<StoreInstance>]: (value: StoreInterface[T]) => void;
19
+ };
@@ -0,0 +1,37 @@
1
+ import { map } from 'nanostores';
2
+ import { AbstractStore } from './abstract';
3
+ /**
4
+ * Wrapper for nanostores MapStore
5
+ */
6
+ export class MapStore extends AbstractStore {
7
+ getValues = () => {
8
+ const store = this.getStore();
9
+ return store.get();
10
+ };
11
+ getValue = (key) => {
12
+ const store = this.getStore();
13
+ return store.get()[key];
14
+ };
15
+ setValue = (path, value) => {
16
+ const store = this.getStore();
17
+ // wrong infer type
18
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
19
+ // @ts-ignore
20
+ return store.setKey(path, value);
21
+ };
22
+ subscribe = (...args) => {
23
+ const store = this.getStore();
24
+ return store.subscribe(...args);
25
+ };
26
+ unsubscribe = () => {
27
+ const store = this.getStore();
28
+ return store.off();
29
+ };
30
+ }
31
+ /**
32
+ * create map store from nanostores
33
+ */
34
+ export const createMapStore = (initialData) => {
35
+ return map(initialData);
36
+ };
37
+ //# sourceMappingURL=map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../../packages/sdk-web-interfaces/src/store/map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C;;GAEG;AACH,MAAM,OAAO,QAGX,SAAQ,aAA4B;IACpC,SAAS,GAAG,GAAG,EAAE;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC,CAAA;IAED,QAAQ,GAAG,CAAC,GAAgC,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,QAAQ,GAAG,CAA0C,IAAS,EAAE,KAA0B,EAAE,EAAE;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,mBAAmB;QACnB,6DAA6D;QAC7D,aAAa;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,SAAS,GAA+B,CAAC,GAAG,IAAI,EAAE,EAAE;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAA;IACjC,CAAC,CAAA;IAED,WAAW,GAAG,GAAG,EAAE;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC,CAAA;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAsB,WAAiB,EAAE,EAAE;IACvE,OAAO,GAAG,CAAO,WAAW,CAAC,CAAA;AAC/B,CAAC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import type { WritableAtom } from 'nanostores';
2
+ import { AbstractStore } from './abstract';
3
+ /**
4
+ * Wrapper for nanostores WritableAtom
5
+ */
6
+ export declare class SingleStore<StoreValue, StoreInstance extends WritableAtom<StoreValue | undefined> = WritableAtom<StoreValue | undefined>> extends AbstractStore<StoreInstance> {
7
+ getValue: () => StoreInstance['value'];
8
+ getValues(): unknown;
9
+ setValue: (value?: StoreValue) => void;
10
+ subscribe: (listener: Parameters<StoreInstance['subscribe']>[0]) => () => void;
11
+ unsubscribe: () => void;
12
+ listen(listener: Parameters<StoreInstance['subscribe']>[0]): () => void;
13
+ get(): StoreValue | undefined;
14
+ }
15
+ /**
16
+ * create atom store from nanostores
17
+ */
18
+ export declare const createSingleStore: <T>(initialData?: T | undefined) => WritableAtom<T | undefined>;
@@ -0,0 +1,39 @@
1
+ import { atom } from 'nanostores';
2
+ import { AbstractStore } from './abstract';
3
+ /**
4
+ * Wrapper for nanostores WritableAtom
5
+ */
6
+ export class SingleStore extends AbstractStore {
7
+ getValue = () => {
8
+ const store = this.getStore();
9
+ return store.get();
10
+ };
11
+ getValues() {
12
+ throw new Error('not implemented');
13
+ }
14
+ setValue = (value) => {
15
+ const store = this.getStore();
16
+ return store.set(value);
17
+ };
18
+ subscribe = (listener) => {
19
+ const store = this.getStore();
20
+ return store.subscribe(listener);
21
+ };
22
+ unsubscribe = () => {
23
+ const store = this.getStore();
24
+ return store.off();
25
+ };
26
+ listen(listener) {
27
+ const store = this.getStore();
28
+ return store.listen(listener);
29
+ }
30
+ get() {
31
+ const store = this.getStore();
32
+ return store.get();
33
+ }
34
+ }
35
+ /**
36
+ * create atom store from nanostores
37
+ */
38
+ export const createSingleStore = (initialData) => atom(initialData);
39
+ //# sourceMappingURL=single.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single.js","sourceRoot":"","sources":["../../../../../packages/sdk-web-interfaces/src/store/single.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C;;GAEG;AACH,MAAM,OAAO,WAGX,SAAQ,aAA4B;IACpC,QAAQ,GAAG,GAA2B,EAAE;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC,CAAA;IAEM,SAAS;QACd,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IAED,QAAQ,GAAG,CAAC,KAAkB,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,SAAS,GAAG,CAAC,QAAmD,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,WAAW,GAAG,GAAG,EAAE;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,CAAC,QAAmD;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAED,GAAG;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE7B,OAAO,KAAK,CAAC,GAAG,EAAE,CAAA;IACpB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,WAAe,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA"}