@streamlayer/react 0.4.0 → 0.7.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.
Files changed (2) hide show
  1. package/lib/index.d.ts +190 -180
  2. package/package.json +4 -12
package/lib/index.d.ts CHANGED
@@ -1,184 +1,4 @@
1
1
  /// <reference types="react" />
2
- declare module "packages/sdk-web-interfaces/src/auth" {
3
- export abstract class AbstractAuthenticationProvider {
4
- abstract login(...args: unknown[]): Promise<unknown>;
5
- abstract logout(): void;
6
- abstract me(): Promise<unknown>;
7
- abstract isAuthenticated(): Promise<unknown>;
8
- }
9
- }
10
- declare module "packages/sdk-web-interfaces/src/store/abstract" {
11
- import type { AnyStore } from 'nanostores';
12
- global {
13
- interface Window {
14
- storeLogger: any;
15
- }
16
- }
17
- /**
18
- * An abstract store is a wrapper for third-party stores,
19
- * providing developers with a consistent interface inspired
20
- * by the "nanostore" pattern. This simplifies
21
- * interactions with different storage systems.
22
- */
23
- export abstract class AbstractStore<T extends AnyStore> {
24
- /**
25
- * store instance (nanostores)
26
- */
27
- protected readonly store: T;
28
- protected readonly name: string;
29
- constructor(store: T, name: string);
30
- /**
31
- * return store instance
32
- */
33
- getStore(): T;
34
- /**
35
- * get all store values
36
- */
37
- abstract getValues(): unknown;
38
- /**
39
- * get store value by key
40
- */
41
- abstract getValue(...args: unknown[]): unknown;
42
- /**
43
- * subsribe directly to store changes
44
- */
45
- abstract subscribe(...args: unknown[]): void;
46
- /**
47
- * unsubsribe directly to store change
48
- */
49
- abstract unsubscribe(): void;
50
- }
51
- /**
52
- * Merge multiple stores into a single instance using a single
53
- * subscribe handler, leveraging the `useStore` method from `@nanostores/react` for React subscriptions.
54
- */
55
- export const mergeStores: <T extends Record<string, AbstractStore<AnyStore>>, K = { [Index in keyof T]: ReturnType<T[Index]["getStore"]>["value"]; }>(stores: T) => import("nanostores").ReadableAtom<K>;
56
- }
57
- declare module "packages/sdk-web-interfaces/src/store/map" {
58
- import type { MapStoreKeys, MapStore as NMapStore } from 'nanostores';
59
- import { AbstractStore } from "packages/sdk-web-interfaces/src/store/abstract";
60
- /**
61
- * Wrapper for nanostores MapStore
62
- */
63
- export class MapStore<StoreInterface extends object, StoreInstance extends NMapStore<StoreInterface> = NMapStore<StoreInterface>> extends AbstractStore<StoreInstance> {
64
- getValues: () => StoreInterface;
65
- getValue: (key: MapStoreKeys<StoreInstance>) => StoreInterface[MapStoreKeys<StoreInstance>];
66
- setValue: <Key extends MapStoreKeys<StoreInstance>>(path: Key, value: StoreInterface[Key]) => void;
67
- subscribe: StoreInstance['subscribe'];
68
- unsubscribe: () => void;
69
- }
70
- /**
71
- * create map store from nanostores
72
- */
73
- export const createMapStore: <Data extends object>(initialData: Data) => NMapStore<Data>;
74
- export type MapStoreListeners<StoreInstance extends NMapStore<StoreInterface>, StoreInterface extends object> = {
75
- [T in MapStoreKeys<StoreInstance>]: (value: StoreInterface[T]) => void;
76
- };
77
- }
78
- declare module "packages/sdk-web-interfaces/src/feature" {
79
- import { SdkOverlay, SdkOverlaySettings } from '@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb';
80
- import { PlainMessage } from '@bufbuild/protobuf';
81
- import { WritableAtom } from 'nanostores';
82
- import { MapStore } from "packages/sdk-web-interfaces/src/store/map";
83
- type FeatureListener = {
84
- name: string;
85
- enabled: boolean;
86
- onEvent: (...args: unknown[]) => void;
87
- };
88
- export type FeatureProps = PlainMessage<SdkOverlay>;
89
- export enum FeatureSource {
90
- ORGANIZATION = "ORGANIZATION",
91
- STREAM = "STREAM"
92
- }
93
- type FeatureConfig = Omit<FeatureProps, 'settings'>;
94
- type FeatureSettings = Exclude<PlainMessage<SdkOverlaySettings>['overlaySettings'], {
95
- case: 'inplay';
96
- } | {
97
- case: 'getstream';
98
- } | {
99
- case: undefined;
100
- }>;
101
- export enum FeatureStatus {
102
- Ready = "ready",
103
- Suspended = "suspended"
104
- }
105
- export abstract class AbstractFeature<K extends FeatureSettings['case'] | undefined, C extends FeatureSettings['value'] = FeatureSettings['value']> {
106
- status: WritableAtom<FeatureStatus>;
107
- source: FeatureSource;
108
- protected config: MapStore<FeatureConfig>;
109
- protected settings: MapStore<C>;
110
- protected listeners: Set<FeatureListener>;
111
- protected settingsKey: K;
112
- constructor({ settings, ...config }: FeatureProps, source: FeatureSource);
113
- get featureConfig(): import("nanostores").MapStore<FeatureConfig>;
114
- get featureSettings(): import("nanostores").MapStore<C>;
115
- registerEventListener(listener: FeatureListener): void;
116
- enable: () => void;
117
- disabled: () => void;
118
- setFeatureConfig: ({ settings, ...config }: FeatureProps) => void;
119
- update: (config: FeatureProps, source: FeatureSource) => void;
120
- protected fireEvent(event: unknown): void;
121
- }
122
- }
123
- declare module "packages/sdk-web-interfaces/src/store/single" {
124
- import type { WritableAtom } from 'nanostores';
125
- import { AbstractStore } from "packages/sdk-web-interfaces/src/store/abstract";
126
- /**
127
- * Wrapper for nanostores WritableAtom
128
- */
129
- export class SingleStore<StoreValue, StoreInstance extends WritableAtom<StoreValue | undefined> = WritableAtom<StoreValue | undefined>> extends AbstractStore<StoreInstance> {
130
- getValue: () => StoreInstance['value'];
131
- getValues(): unknown;
132
- setValue: (value?: StoreValue) => void;
133
- subscribe: (listener: Parameters<StoreInstance['subscribe']>[0]) => () => void;
134
- unsubscribe: () => void;
135
- listen(listener: Parameters<StoreInstance['subscribe']>[0]): () => void;
136
- get(): StoreValue | undefined;
137
- }
138
- /**
139
- * create atom store from nanostores
140
- */
141
- export const createSingleStore: <T>(initialData?: T | undefined) => WritableAtom<T | undefined>;
142
- }
143
- declare module "packages/sdk-web-interfaces/src/store/api" {
144
- import type { FetcherStore } from '@nanostores/query';
145
- import { WritableAtom } from 'nanostores';
146
- import { AbstractStore } from "packages/sdk-web-interfaces/src/store/abstract";
147
- /**
148
- * Wrapper for @nanostores/query FetcherStore
149
- */
150
- export class ApiStore<StoreValue, StoreInstance extends FetcherStore<StoreValue | undefined> = FetcherStore<StoreValue | undefined>> extends AbstractStore<StoreInstance> {
151
- private readonly atomStore;
152
- constructor(store: StoreInstance, name: string, atomPicker?: (val?: StoreInstance['value']) => string | undefined);
153
- getAtomStore: () => WritableAtom<string | undefined>;
154
- getValue: () => Promise<StoreValue | undefined>;
155
- getValues: () => never;
156
- setValue: (value?: StoreInstance['value']) => void;
157
- subscribe: StoreInstance['subscribe'];
158
- unsubscribe: () => never;
159
- invalidate: () => void;
160
- listen: (cb: Parameters<FetcherStore['listen']>[0]) => () => void;
161
- get(): void;
162
- key: () => string | undefined;
163
- off: () => void;
164
- }
165
- }
166
- declare module "packages/sdk-web-interfaces/src/index" {
167
- export { AbstractAuthenticationProvider } from "packages/sdk-web-interfaces/src/auth";
168
- export { AbstractFeature, FeatureSource, type FeatureProps } from "packages/sdk-web-interfaces/src/feature";
169
- export { MapStore, createMapStore } from "packages/sdk-web-interfaces/src/store/map";
170
- export type { MapStoreListeners } from "packages/sdk-web-interfaces/src/store/map";
171
- export { SingleStore, createSingleStore } from "packages/sdk-web-interfaces/src/store/single";
172
- export { AbstractStore, mergeStores } from "packages/sdk-web-interfaces/src/store/abstract";
173
- export { ApiStore } from "packages/sdk-web-interfaces/src/store/api";
174
- export interface StreamLayerSDK {
175
- }
176
- export interface StreamLayerContext {
177
- sdk: StreamLayerSDK;
178
- }
179
- type DoneFn = Function;
180
- export type StreamLayerPlugin = (instance: StreamLayerContext, opts: unknown, done: DoneFn) => void;
181
- }
182
2
  declare module "packages/react-ui/src/lib/gamification/inapp/styles" {
183
3
  export const Container: import("@emotion/styled").StyledComponent<{
184
4
  theme?: import("@emotion/react").Theme | undefined;
@@ -679,6 +499,186 @@ declare module "packages/react-ui/src/lib/gamification/vote/index" {
679
499
  }
680
500
  export const Vote: React.FC<VoteProps>;
681
501
  }
502
+ declare module "packages/sdk-web-interfaces/src/auth" {
503
+ export abstract class AbstractAuthenticationProvider {
504
+ abstract login(...args: unknown[]): Promise<unknown>;
505
+ abstract logout(): void;
506
+ abstract me(): Promise<unknown>;
507
+ abstract isAuthenticated(): Promise<unknown>;
508
+ }
509
+ }
510
+ declare module "packages/sdk-web-interfaces/src/store/abstract" {
511
+ import type { AnyStore } from 'nanostores';
512
+ global {
513
+ interface Window {
514
+ storeLogger: any;
515
+ }
516
+ }
517
+ /**
518
+ * An abstract store is a wrapper for third-party stores,
519
+ * providing developers with a consistent interface inspired
520
+ * by the "nanostore" pattern. This simplifies
521
+ * interactions with different storage systems.
522
+ */
523
+ export abstract class AbstractStore<T extends AnyStore> {
524
+ /**
525
+ * store instance (nanostores)
526
+ */
527
+ protected readonly store: T;
528
+ protected readonly name: string;
529
+ constructor(store: T, name: string);
530
+ /**
531
+ * return store instance
532
+ */
533
+ getStore(): T;
534
+ /**
535
+ * get all store values
536
+ */
537
+ abstract getValues(): unknown;
538
+ /**
539
+ * get store value by key
540
+ */
541
+ abstract getValue(...args: unknown[]): unknown;
542
+ /**
543
+ * subsribe directly to store changes
544
+ */
545
+ abstract subscribe(...args: unknown[]): void;
546
+ /**
547
+ * unsubsribe directly to store change
548
+ */
549
+ abstract unsubscribe(): void;
550
+ }
551
+ /**
552
+ * Merge multiple stores into a single instance using a single
553
+ * subscribe handler, leveraging the `useStore` method from `@nanostores/react` for React subscriptions.
554
+ */
555
+ export const mergeStores: <T extends Record<string, AbstractStore<AnyStore>>, K = { [Index in keyof T]: ReturnType<T[Index]["getStore"]>["value"]; }>(stores: T) => import("nanostores").ReadableAtom<K>;
556
+ }
557
+ declare module "packages/sdk-web-interfaces/src/store/map" {
558
+ import type { MapStoreKeys, MapStore as NMapStore } from 'nanostores';
559
+ import { AbstractStore } from "packages/sdk-web-interfaces/src/store/abstract";
560
+ /**
561
+ * Wrapper for nanostores MapStore
562
+ */
563
+ export class MapStore<StoreInterface extends object, StoreInstance extends NMapStore<StoreInterface> = NMapStore<StoreInterface>> extends AbstractStore<StoreInstance> {
564
+ getValues: () => StoreInterface;
565
+ getValue: (key: MapStoreKeys<StoreInstance>) => StoreInterface[MapStoreKeys<StoreInstance>];
566
+ setValue: <Key extends MapStoreKeys<StoreInstance>>(path: Key, value: StoreInterface[Key]) => void;
567
+ subscribe: StoreInstance['subscribe'];
568
+ unsubscribe: () => void;
569
+ }
570
+ /**
571
+ * create map store from nanostores
572
+ */
573
+ export const createMapStore: <Data extends object>(initialData: Data) => NMapStore<Data>;
574
+ export type MapStoreListeners<StoreInstance extends NMapStore<StoreInterface>, StoreInterface extends object> = {
575
+ [T in MapStoreKeys<StoreInstance>]: (value: StoreInterface[T]) => void;
576
+ };
577
+ }
578
+ declare module "packages/sdk-web-interfaces/src/feature" {
579
+ import { SdkOverlay, SdkOverlaySettings } from '@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb';
580
+ import { PlainMessage } from '@bufbuild/protobuf';
581
+ import { WritableAtom } from 'nanostores';
582
+ import { MapStore } from "packages/sdk-web-interfaces/src/store/map";
583
+ type FeatureListener = {
584
+ name: string;
585
+ enabled: boolean;
586
+ onEvent: (...args: unknown[]) => void;
587
+ };
588
+ export type FeatureProps = PlainMessage<SdkOverlay>;
589
+ export enum FeatureSource {
590
+ ORGANIZATION = "ORGANIZATION",
591
+ STREAM = "STREAM"
592
+ }
593
+ type FeatureConfig = Omit<FeatureProps, 'settings'>;
594
+ type FeatureSettings = Exclude<PlainMessage<SdkOverlaySettings>['overlaySettings'], {
595
+ case: 'inplay';
596
+ } | {
597
+ case: 'getstream';
598
+ } | {
599
+ case: undefined;
600
+ }>;
601
+ export enum FeatureStatus {
602
+ Ready = "ready",
603
+ Suspended = "suspended"
604
+ }
605
+ export abstract class AbstractFeature<K extends FeatureSettings['case'] | undefined, C extends FeatureSettings['value'] = FeatureSettings['value']> {
606
+ status: WritableAtom<FeatureStatus>;
607
+ source: FeatureSource;
608
+ protected config: MapStore<FeatureConfig>;
609
+ protected settings: MapStore<C>;
610
+ protected listeners: Set<FeatureListener>;
611
+ protected settingsKey: K;
612
+ constructor({ settings, ...config }: FeatureProps, source: FeatureSource);
613
+ get featureConfig(): import("nanostores").MapStore<FeatureConfig>;
614
+ get featureSettings(): import("nanostores").MapStore<C>;
615
+ registerEventListener(listener: FeatureListener): void;
616
+ enable: () => void;
617
+ disabled: () => void;
618
+ setFeatureConfig: ({ settings, ...config }: FeatureProps) => void;
619
+ update: (config: FeatureProps, source: FeatureSource) => void;
620
+ protected fireEvent(event: unknown): void;
621
+ }
622
+ }
623
+ declare module "packages/sdk-web-interfaces/src/store/single" {
624
+ import type { WritableAtom } from 'nanostores';
625
+ import { AbstractStore } from "packages/sdk-web-interfaces/src/store/abstract";
626
+ /**
627
+ * Wrapper for nanostores WritableAtom
628
+ */
629
+ export class SingleStore<StoreValue, StoreInstance extends WritableAtom<StoreValue | undefined> = WritableAtom<StoreValue | undefined>> extends AbstractStore<StoreInstance> {
630
+ getValue: () => StoreInstance['value'];
631
+ getValues(): unknown;
632
+ setValue: (value?: StoreValue) => void;
633
+ subscribe: (listener: Parameters<StoreInstance['subscribe']>[0]) => () => void;
634
+ unsubscribe: () => void;
635
+ listen(listener: Parameters<StoreInstance['subscribe']>[0]): () => void;
636
+ get(): StoreValue | undefined;
637
+ }
638
+ /**
639
+ * create atom store from nanostores
640
+ */
641
+ export const createSingleStore: <T>(initialData?: T | undefined) => WritableAtom<T | undefined>;
642
+ }
643
+ declare module "packages/sdk-web-interfaces/src/store/api" {
644
+ import type { FetcherStore } from '@nanostores/query';
645
+ import { WritableAtom } from 'nanostores';
646
+ import { AbstractStore } from "packages/sdk-web-interfaces/src/store/abstract";
647
+ /**
648
+ * Wrapper for @nanostores/query FetcherStore
649
+ */
650
+ export class ApiStore<StoreValue, StoreInstance extends FetcherStore<StoreValue | undefined> = FetcherStore<StoreValue | undefined>> extends AbstractStore<StoreInstance> {
651
+ private readonly atomStore;
652
+ constructor(store: StoreInstance, name: string, atomPicker?: (val?: StoreInstance['value']) => string | undefined);
653
+ getAtomStore: () => WritableAtom<string | undefined>;
654
+ getValue: () => Promise<StoreValue | undefined>;
655
+ getValues: () => never;
656
+ setValue: (value?: StoreInstance['value']) => void;
657
+ subscribe: StoreInstance['subscribe'];
658
+ unsubscribe: () => never;
659
+ invalidate: () => void;
660
+ listen: (cb: Parameters<FetcherStore['listen']>[0]) => () => void;
661
+ get(): void;
662
+ key: () => string | undefined;
663
+ off: () => void;
664
+ }
665
+ }
666
+ declare module "packages/sdk-web-interfaces/src/index" {
667
+ export { AbstractAuthenticationProvider } from "packages/sdk-web-interfaces/src/auth";
668
+ export { AbstractFeature, FeatureSource, type FeatureProps } from "packages/sdk-web-interfaces/src/feature";
669
+ export { MapStore, createMapStore } from "packages/sdk-web-interfaces/src/store/map";
670
+ export type { MapStoreListeners } from "packages/sdk-web-interfaces/src/store/map";
671
+ export { SingleStore, createSingleStore } from "packages/sdk-web-interfaces/src/store/single";
672
+ export { AbstractStore, mergeStores } from "packages/sdk-web-interfaces/src/store/abstract";
673
+ export { ApiStore } from "packages/sdk-web-interfaces/src/store/api";
674
+ export interface StreamLayerSDK {
675
+ }
676
+ export interface StreamLayerContext {
677
+ sdk: StreamLayerSDK;
678
+ }
679
+ type DoneFn = Function;
680
+ export type StreamLayerPlugin = (instance: StreamLayerContext, opts: unknown, done: DoneFn) => void;
681
+ }
682
682
  declare module "packages/sdk-web-api/src/utils/devtools" {
683
683
  export const __GRPC_DEVTOOLS_EXTENSION__: any;
684
684
  }
@@ -1706,6 +1706,16 @@ declare module "packages/react/src/app/useStreamLayerApp" {
1706
1706
  }
1707
1707
  export const useStreamLayerApp: (sdkKey: string, plugins?: Set<StreamLayerPlugin>, production?: boolean) => StreamLayerSDK | null;
1708
1708
  }
1709
+ declare module "packages/react/src/environments/environment.prod" {
1710
+ export const environment: {
1711
+ production: boolean;
1712
+ };
1713
+ }
1714
+ declare module "packages/react/src/environments/environment" {
1715
+ export const environment: {
1716
+ production: boolean;
1717
+ };
1718
+ }
1709
1719
  declare module "packages/react/src/app/provider" {
1710
1720
  import type { StreamLayerSDK, StreamLayerPlugin } from "packages/sdk-web-interfaces/src/index";
1711
1721
  import React from 'react';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamlayer/react",
3
- "version": "0.4.0",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "author": "Renat Berezovsky (gh:BrRenat)",
6
6
  "main": "./lib/cjs/index.js",
@@ -13,20 +13,12 @@
13
13
  }
14
14
  },
15
15
  "files": [
16
- "lib",
17
- "!lib/package.json",
18
- "!lib/types/package.json"
16
+ "lib/",
17
+ "package.json"
19
18
  ],
20
- "peerDependencies": {
21
- "@emotion/react": "11.11.1",
22
- "@emotion/styled": "11.11.0",
23
- "@nanostores/react": "^0.7.1",
19
+ "devDependencies": {
24
20
  "@streamlayer/react-ui": "*",
25
- "react": "18.2.0",
26
21
  "react-digit-input": "^2.1.0",
27
- "react-dom": "18.2.0"
28
- },
29
- "devDependencies": {
30
22
  "@babel/preset-react": "^7.14.5",
31
23
  "@babel/preset-typescript": "^7.23.0",
32
24
  "@emotion/babel-plugin": "11.11.0",