@streamlayer/sdk-web 0.17.0 → 0.17.2

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/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "@streamlayer/sdk-web-types": "workspace:^",
7
7
  "avvio": "^8.2.1"
8
8
  },
9
- "version": "0.17.0",
9
+ "version": "0.17.2",
10
10
  "type": "module",
11
11
  "main": "./src/index.js",
12
12
  "typings": "./src/index.d.ts",
@@ -11,9 +11,9 @@ export declare class BypassAuth extends AbstractAuthenticationProvider {
11
11
  private readonly transport;
12
12
  private readonly $bypassLogin;
13
13
  constructor(store: CoreStore, transport: Transport);
14
- me: () => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User>;
15
- login: (schema: string, userKey: string) => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User>;
16
- isAuthenticated: () => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User>;
14
+ me: () => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User | undefined>;
15
+ login: (schema: string, userKey: string) => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User | undefined>;
16
+ isAuthenticated: () => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User | undefined>;
17
17
  logout: () => void;
18
18
  /**
19
19
  * subscribe to user store and set auth header to the Transport on user update
@@ -8,11 +8,11 @@ import { queries } from '@streamlayer/sdk-web-api';
8
8
  constructor(store, transport){
9
9
  super();
10
10
  this.me = async ()=>{
11
- const res = await this.$coreStore.getStoreItem('user').getValue();
11
+ const res = await this.$coreStore.getValues().user.getValue();
12
12
  return res?.data;
13
13
  };
14
14
  this.login = async (schema, userKey)=>{
15
- this.$coreStore.getStoreItem('userKey').setValue(userKey);
15
+ this.$coreStore.getValues().userKey.setValue(userKey);
16
16
  await this.$bypassLogin.mutate({
17
17
  schema,
18
18
  userKey,
@@ -24,9 +24,9 @@ import { queries } from '@streamlayer/sdk-web-api';
24
24
  return this.me();
25
25
  };
26
26
  this.logout = ()=>{
27
- this.$coreStore.getStoreItem('user').setValue();
28
- this.$coreStore.getStoreItem('userKey').setValue();
29
- this.$coreStore.getStoreItem('userToken').setValue();
27
+ this.$coreStore.getValues().user.setValue();
28
+ this.$coreStore.getValues().userKey.setValue();
29
+ this.$coreStore.getValues().userToken.setValue();
30
30
  this.transport.setAuth('');
31
31
  };
32
32
  /**
@@ -35,7 +35,7 @@ import { queries } from '@streamlayer/sdk-web-api';
35
35
  this.$bypassLogin.subscribe((user, key)=>{
36
36
  if (key === 'data') {
37
37
  this.transport.setAuth(user?.data?.meta?.jwt);
38
- this.$coreStore.getStoreItem('userToken').setValue(user?.data?.meta?.jwt);
38
+ this.$coreStore.getValues().userToken.setValue(user?.data?.meta?.jwt);
39
39
  }
40
40
  });
41
41
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/sdk-web/src/auth/bypass/index.ts"],"sourcesContent":["import { AbstractAuthenticationProvider } from '@streamlayer/sdk-web-interfaces'\nimport { queries, Transport } from '@streamlayer/sdk-web-api'\n\nimport { CoreStore } from '../../store/store'\n\n/**\n * An authorization service manages user access by providing login, logout,\n * authentication checks, and the ability to revoke access.\n * Subscribed to $userStore and automatically updates the auth header for the Transport.\n */\nexport class BypassAuth extends AbstractAuthenticationProvider {\n private readonly $coreStore: CoreStore\n private readonly transport: Transport\n private readonly $bypassLogin: ReturnType<typeof queries.$bypassLogin>\n\n constructor(store: CoreStore, transport: Transport) {\n super()\n this.$coreStore = store\n this.transport = transport\n this.$bypassLogin = queries.$bypassLogin(this.transport)\n\n this.subscribe()\n }\n\n public me = async () => {\n const res = await this.$coreStore.getStoreItem('user').getValue()\n\n return res?.data\n }\n\n public login = async (schema: string, userKey: string) => {\n this.$coreStore.getStoreItem('userKey').setValue(userKey)\n\n await this.$bypassLogin.mutate({ schema, userKey, init: false })\n\n return this.me()\n }\n\n public isAuthenticated = () => {\n return this.me()\n }\n\n public logout = () => {\n this.$coreStore.getStoreItem('user').setValue()\n this.$coreStore.getStoreItem('userKey').setValue()\n this.$coreStore.getStoreItem('userToken').setValue()\n this.transport.setAuth('')\n }\n\n /**\n * subscribe to user store and set auth header to the Transport on user update\n */\n private subscribe = () => {\n this.$bypassLogin.subscribe((user, key) => {\n if (key === 'data') {\n this.transport.setAuth(user?.data?.meta?.jwt)\n this.$coreStore.getStoreItem('userToken').setValue(user?.data?.meta?.jwt)\n }\n })\n }\n}\n"],"names":["AbstractAuthenticationProvider","queries","BypassAuth","constructor","store","transport","me","res","$coreStore","getStoreItem","getValue","data","login","schema","userKey","setValue","$bypassLogin","mutate","init","isAuthenticated","logout","setAuth","subscribe","user","key","meta","jwt"],"mappings":"AAAA,SAASA,8BAA8B,QAAQ,kCAAiC;AAChF,SAASC,OAAO,QAAmB,2BAA0B;AAI7D;;;;CAIC,GACD,OAAO,MAAMC,mBAAmBF;IAK9BG,YAAYC,KAAgB,EAAEC,SAAoB,CAAE;QAClD,KAAK;aAQAC,KAAK;YACV,MAAMC,MAAM,MAAM,IAAI,CAACC,UAAU,CAACC,YAAY,CAAC,QAAQC,QAAQ;YAE/D,OAAOH,KAAKI;QACd;aAEOC,QAAQ,OAAOC,QAAgBC;YACpC,IAAI,CAACN,UAAU,CAACC,YAAY,CAAC,WAAWM,QAAQ,CAACD;YAEjD,MAAM,IAAI,CAACE,YAAY,CAACC,MAAM,CAAC;gBAAEJ;gBAAQC;gBAASI,MAAM;YAAM;YAE9D,OAAO,IAAI,CAACZ,EAAE;QAChB;aAEOa,kBAAkB;YACvB,OAAO,IAAI,CAACb,EAAE;QAChB;aAEOc,SAAS;YACd,IAAI,CAACZ,UAAU,CAACC,YAAY,CAAC,QAAQM,QAAQ;YAC7C,IAAI,CAACP,UAAU,CAACC,YAAY,CAAC,WAAWM,QAAQ;YAChD,IAAI,CAACP,UAAU,CAACC,YAAY,CAAC,aAAaM,QAAQ;YAClD,IAAI,CAACV,SAAS,CAACgB,OAAO,CAAC;QACzB;QAEA;;GAEC,QACOC,YAAY;YAClB,IAAI,CAACN,YAAY,CAACM,SAAS,CAAC,CAACC,MAAMC;gBACjC,IAAIA,QAAQ,QAAQ;oBAClB,IAAI,CAACnB,SAAS,CAACgB,OAAO,CAACE,MAAMZ,MAAMc,MAAMC;oBACzC,IAAI,CAAClB,UAAU,CAACC,YAAY,CAAC,aAAaM,QAAQ,CAACQ,MAAMZ,MAAMc,MAAMC;gBACvE;YACF;QACF;QA1CE,IAAI,CAAClB,UAAU,GAAGJ;QAClB,IAAI,CAACC,SAAS,GAAGA;QACjB,IAAI,CAACW,YAAY,GAAGf,QAAQe,YAAY,CAAC,IAAI,CAACX,SAAS;QAEvD,IAAI,CAACiB,SAAS;IAChB;AAsCF"}
1
+ {"version":3,"sources":["../../../../../../packages/sdk-web/src/auth/bypass/index.ts"],"sourcesContent":["import { AbstractAuthenticationProvider } from '@streamlayer/sdk-web-interfaces'\nimport { queries, Transport } from '@streamlayer/sdk-web-api'\n\nimport { CoreStore } from '../../store/store'\n\n/**\n * An authorization service manages user access by providing login, logout,\n * authentication checks, and the ability to revoke access.\n * Subscribed to $userStore and automatically updates the auth header for the Transport.\n */\nexport class BypassAuth extends AbstractAuthenticationProvider {\n private readonly $coreStore: CoreStore\n private readonly transport: Transport\n private readonly $bypassLogin: ReturnType<typeof queries.$bypassLogin>\n\n constructor(store: CoreStore, transport: Transport) {\n super()\n this.$coreStore = store\n this.transport = transport\n this.$bypassLogin = queries.$bypassLogin(this.transport)\n\n this.subscribe()\n }\n\n public me = async () => {\n const res = await this.$coreStore.getValues().user.getValue()\n\n return res?.data\n }\n\n public login = async (schema: string, userKey: string) => {\n this.$coreStore.getValues().userKey.setValue(userKey)\n\n await this.$bypassLogin.mutate({ schema, userKey, init: false })\n\n return this.me()\n }\n\n public isAuthenticated = () => {\n return this.me()\n }\n\n public logout = () => {\n this.$coreStore.getValues().user.setValue()\n this.$coreStore.getValues().userKey.setValue()\n this.$coreStore.getValues().userToken.setValue()\n this.transport.setAuth('')\n }\n\n /**\n * subscribe to user store and set auth header to the Transport on user update\n */\n private subscribe = () => {\n this.$bypassLogin.subscribe((user, key) => {\n if (key === 'data') {\n this.transport.setAuth(user?.data?.meta?.jwt)\n this.$coreStore.getValues().userToken.setValue(user?.data?.meta?.jwt)\n }\n })\n }\n}\n"],"names":["AbstractAuthenticationProvider","queries","BypassAuth","constructor","store","transport","me","res","$coreStore","getValues","user","getValue","data","login","schema","userKey","setValue","$bypassLogin","mutate","init","isAuthenticated","logout","userToken","setAuth","subscribe","key","meta","jwt"],"mappings":"AAAA,SAASA,8BAA8B,QAAQ,kCAAiC;AAChF,SAASC,OAAO,QAAmB,2BAA0B;AAI7D;;;;CAIC,GACD,OAAO,MAAMC,mBAAmBF;IAK9BG,YAAYC,KAAgB,EAAEC,SAAoB,CAAE;QAClD,KAAK;aAQAC,KAAK;YACV,MAAMC,MAAM,MAAM,IAAI,CAACC,UAAU,CAACC,SAAS,GAAGC,IAAI,CAACC,QAAQ;YAE3D,OAAOJ,KAAKK;QACd;aAEOC,QAAQ,OAAOC,QAAgBC;YACpC,IAAI,CAACP,UAAU,CAACC,SAAS,GAAGM,OAAO,CAACC,QAAQ,CAACD;YAE7C,MAAM,IAAI,CAACE,YAAY,CAACC,MAAM,CAAC;gBAAEJ;gBAAQC;gBAASI,MAAM;YAAM;YAE9D,OAAO,IAAI,CAACb,EAAE;QAChB;aAEOc,kBAAkB;YACvB,OAAO,IAAI,CAACd,EAAE;QAChB;aAEOe,SAAS;YACd,IAAI,CAACb,UAAU,CAACC,SAAS,GAAGC,IAAI,CAACM,QAAQ;YACzC,IAAI,CAACR,UAAU,CAACC,SAAS,GAAGM,OAAO,CAACC,QAAQ;YAC5C,IAAI,CAACR,UAAU,CAACC,SAAS,GAAGa,SAAS,CAACN,QAAQ;YAC9C,IAAI,CAACX,SAAS,CAACkB,OAAO,CAAC;QACzB;QAEA;;GAEC,QACOC,YAAY;YAClB,IAAI,CAACP,YAAY,CAACO,SAAS,CAAC,CAACd,MAAMe;gBACjC,IAAIA,QAAQ,QAAQ;oBAClB,IAAI,CAACpB,SAAS,CAACkB,OAAO,CAACb,MAAME,MAAMc,MAAMC;oBACzC,IAAI,CAACnB,UAAU,CAACC,SAAS,GAAGa,SAAS,CAACN,QAAQ,CAACN,MAAME,MAAMc,MAAMC;gBACnE;YACF;QACF;QA1CE,IAAI,CAACnB,UAAU,GAAGJ;QAClB,IAAI,CAACC,SAAS,GAAGA;QACjB,IAAI,CAACY,YAAY,GAAGhB,QAAQgB,YAAY,CAAC,IAAI,CAACZ,SAAS;QAEvD,IAAI,CAACmB,SAAS;IAChB;AAsCF"}
@@ -1,12 +1,15 @@
1
1
  import { StreamLayerContext } from '../';
2
- import { kAuth } from '../keys';
3
2
  import { BypassAuth } from './bypass';
4
3
  declare module '../core' {
5
4
  interface StreamLayerSDK {
6
- [kAuth]: BypassAuth;
7
5
  authorizationBypass: (schema: string, userKey: string) => Promise<void>;
8
6
  logout: () => void;
9
7
  isUserAuthorized: BypassAuth['isAuthenticated'];
10
8
  }
11
9
  }
12
- export declare const bypass: (instance: StreamLayerContext, opts: any, done: any) => void;
10
+ declare module '../' {
11
+ interface StreamLayerContext {
12
+ auth: BypassAuth;
13
+ }
14
+ }
15
+ export declare const bypass: (instance: StreamLayerContext, opts: unknown, done: () => void) => void;
package/src/auth/index.js CHANGED
@@ -1,15 +1,14 @@
1
- import { kAuth } from '../keys';
2
1
  import { BypassAuth } from './bypass';
3
2
  export const bypass = (instance, opts, done)=>{
4
- instance.sdk[kAuth] = new BypassAuth(instance.sdk.sdkStore(), instance.sdk.transport);
3
+ instance.auth = new BypassAuth(instance.store, instance.transport);
5
4
  instance.sdk.authorizationBypass = async (schema, userKey)=>{
6
- await instance.sdk[kAuth].login(schema, userKey);
5
+ await instance.auth.login(schema, userKey);
7
6
  };
8
7
  instance.sdk.logout = ()=>{
9
- instance.sdk[kAuth].logout();
8
+ instance.auth.logout();
10
9
  };
11
10
  instance.sdk.isUserAuthorized = ()=>{
12
- return instance.sdk[kAuth].isAuthenticated();
11
+ return instance.auth.isAuthenticated();
13
12
  };
14
13
  done();
15
14
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/sdk-web/src/auth/index.ts"],"sourcesContent":["import { StreamLayerContext } from '../'\nimport { kAuth } from '../keys'\n\nimport { BypassAuth } from './bypass'\n\ndeclare module '../core' {\n interface StreamLayerSDK {\n [kAuth]: BypassAuth\n authorizationBypass: (schema: string, userKey: string) => Promise<void>\n logout: () => void\n isUserAuthorized: BypassAuth['isAuthenticated']\n }\n}\n\nexport const bypass = (instance: StreamLayerContext, opts, done) => {\n instance.sdk[kAuth] = new BypassAuth(instance.sdk.sdkStore(), instance.sdk.transport)\n\n instance.sdk.authorizationBypass = async (schema: string, userKey: string) => {\n await instance.sdk[kAuth].login(schema, userKey)\n }\n\n instance.sdk.logout = () => {\n instance.sdk[kAuth].logout()\n }\n\n instance.sdk.isUserAuthorized = () => {\n return instance.sdk[kAuth].isAuthenticated()\n }\n\n done()\n}\n"],"names":["kAuth","BypassAuth","bypass","instance","opts","done","sdk","sdkStore","transport","authorizationBypass","schema","userKey","login","logout","isUserAuthorized","isAuthenticated"],"mappings":"AACA,SAASA,KAAK,QAAQ,UAAS;AAE/B,SAASC,UAAU,QAAQ,WAAU;AAWrC,OAAO,MAAMC,SAAS,CAACC,UAA8BC,MAAMC;IACzDF,SAASG,GAAG,CAACN,MAAM,GAAG,IAAIC,WAAWE,SAASG,GAAG,CAACC,QAAQ,IAAIJ,SAASG,GAAG,CAACE,SAAS;IAEpFL,SAASG,GAAG,CAACG,mBAAmB,GAAG,OAAOC,QAAgBC;QACxD,MAAMR,SAASG,GAAG,CAACN,MAAM,CAACY,KAAK,CAACF,QAAQC;IAC1C;IAEAR,SAASG,GAAG,CAACO,MAAM,GAAG;QACpBV,SAASG,GAAG,CAACN,MAAM,CAACa,MAAM;IAC5B;IAEAV,SAASG,GAAG,CAACQ,gBAAgB,GAAG;QAC9B,OAAOX,SAASG,GAAG,CAACN,MAAM,CAACe,eAAe;IAC5C;IAEAV;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../../packages/sdk-web/src/auth/index.ts"],"sourcesContent":["import { StreamLayerContext } from '../'\n\nimport { BypassAuth } from './bypass'\n\ndeclare module '../core' {\n interface StreamLayerSDK {\n authorizationBypass: (schema: string, userKey: string) => Promise<void>\n logout: () => void\n isUserAuthorized: BypassAuth['isAuthenticated']\n }\n}\n\ndeclare module '../' {\n interface StreamLayerContext {\n auth: BypassAuth\n }\n}\n\nexport const bypass = (instance: StreamLayerContext, opts: unknown, done: () => void) => {\n instance.auth = new BypassAuth(instance.store, instance.transport)\n\n instance.sdk.authorizationBypass = async (schema: string, userKey: string) => {\n await instance.auth.login(schema, userKey)\n }\n\n instance.sdk.logout = () => {\n instance.auth.logout()\n }\n\n instance.sdk.isUserAuthorized = () => {\n return instance.auth.isAuthenticated()\n }\n\n done()\n}\n"],"names":["BypassAuth","bypass","instance","opts","done","auth","store","transport","sdk","authorizationBypass","schema","userKey","login","logout","isUserAuthorized","isAuthenticated"],"mappings":"AAEA,SAASA,UAAU,QAAQ,WAAU;AAgBrC,OAAO,MAAMC,SAAS,CAACC,UAA8BC,MAAeC;IAClEF,SAASG,IAAI,GAAG,IAAIL,WAAWE,SAASI,KAAK,EAAEJ,SAASK,SAAS;IAEjEL,SAASM,GAAG,CAACC,mBAAmB,GAAG,OAAOC,QAAgBC;QACxD,MAAMT,SAASG,IAAI,CAACO,KAAK,CAACF,QAAQC;IACpC;IAEAT,SAASM,GAAG,CAACK,MAAM,GAAG;QACpBX,SAASG,IAAI,CAACQ,MAAM;IACtB;IAEAX,SAASM,GAAG,CAACM,gBAAgB,GAAG;QAC9B,OAAOZ,SAASG,IAAI,CAACU,eAAe;IACtC;IAEAX;AACF,EAAC"}
package/src/core.d.ts CHANGED
@@ -1,4 +1,18 @@
1
- import { Feature } from './features';
1
+ import { StreamLayerContext } from './';
2
+ export interface StreamLayerSDK {
3
+ initializeApp: () => Promise<{
4
+ enabled?: boolean;
5
+ err?: string;
6
+ }>;
7
+ disableApp: () => void;
8
+ invalidateSettings: () => void;
9
+ createEventSession: (providerStreamId: string) => void;
10
+ }
11
+ declare module './' {
12
+ interface StreamLayerContext {
13
+ sdk: StreamLayerSDK;
14
+ }
15
+ }
2
16
  /**
3
17
  * The main application instance is the core of a application. It includes:
4
18
  * Store: Manages data storage.
@@ -9,24 +23,4 @@ import { Feature } from './features';
9
23
  * Error Handling: Manages errors and logs them.
10
24
  * Security: Implements authentication and authorization.
11
25
  */
12
- export declare class StreamLayerSDK {
13
- /**
14
- * On initialize we subscribe to store and launch listeners
15
- * that activate data downloading over the network
16
- */
17
- getFeatures: () => Map<string, Feature>;
18
- initializeApp: () => Promise<{
19
- enabled: boolean;
20
- err?: undefined;
21
- } | {
22
- err: any;
23
- enabled?: undefined;
24
- }>;
25
- disableApp: () => void;
26
- invalidateSettings: () => void;
27
- /**
28
- * Configure the "event id" using the "provider," enabling subscribed stores to
29
- * trigger their logic in response to a new event.
30
- */
31
- createEventSession: (providerStreamId: string) => void;
32
- }
26
+ export declare const core: (instance: StreamLayerContext, opts: unknown, done: () => void) => void;
package/src/core.js CHANGED
@@ -1,4 +1,3 @@
1
- import { kStore, kStoreSubscribe, kStoreUnsubscribe } from './keys';
2
1
  import { CoreStatus } from './store/store';
3
2
  /**
4
3
  * The main application instance is the core of a application. It includes:
@@ -9,49 +8,52 @@ import { CoreStatus } from './store/store';
9
8
  * Dependency Injection: Incorporates other necessary instances.
10
9
  * Error Handling: Manages errors and logs them.
11
10
  * Security: Implements authentication and authorization.
12
- */ export class StreamLayerSDK {
13
- constructor(){
14
- this.initializeApp = async ()=>{
15
- this[kStoreSubscribe]();
16
- this[kStore].getStoreItem('enabled').setValue('on');
17
- this[kStore].getStoreItem('status').setValue(CoreStatus.INITIALIZATION);
18
- try {
19
- const organizationSettings = await this[kStore].getStoreItem('organizationSettings').getValue();
20
- if (organizationSettings) {
21
- this[kStore].getStoreItem('status').setValue(CoreStatus.READY);
22
- return {
23
- enabled: !!organizationSettings
24
- };
25
- }
26
- this[kStore].getStoreItem('status').setValue(CoreStatus.FAILED);
11
+ */ export const core = (instance, opts, done)=>{
12
+ instance.sdk = Object.create(null);
13
+ /**
14
+ * On initialize we subscribe to store and launch listeners
15
+ * that activate data downloading over the network
16
+ */ instance.sdk.initializeApp = async ()=>{
17
+ instance.storeSubscribe();
18
+ instance.stores.enabled.setValue('on');
19
+ instance.stores.status.setValue(CoreStatus.INITIALIZATION);
20
+ try {
21
+ const organizationSettings = await instance.stores.organizationSettings.getValue();
22
+ if (organizationSettings) {
23
+ instance.stores.status.setValue(CoreStatus.READY);
27
24
  return {
28
- err: 'failed'
29
- };
30
- } catch (err) {
31
- this[kStore].getStoreItem('enabled').setValue();
32
- this[kStore].getStoreItem('status').setValue(CoreStatus.FAILED);
33
- return {
34
- err
25
+ enabled: !!organizationSettings
35
26
  };
36
27
  }
37
- };
38
- this.disableApp = ()=>{
39
- this[kStore].getStoreItem('enabled').setValue();
40
- this[kStore].getStoreItem('status').setValue(CoreStatus.DISABLED);
41
- this[kStoreUnsubscribe]();
42
- };
43
- this.invalidateSettings = ()=>{
44
- this.transport.nanoquery.utils.invalidateKeys(()=>{
45
- return true;
46
- });
47
- };
48
- /**
28
+ instance.stores.status.setValue(CoreStatus.FAILED);
29
+ return {
30
+ err: 'failed'
31
+ };
32
+ } catch (err) {
33
+ instance.stores.enabled.setValue();
34
+ instance.stores.status.setValue(CoreStatus.FAILED);
35
+ return {
36
+ err: `${err}`
37
+ };
38
+ }
39
+ };
40
+ instance.sdk.disableApp = ()=>{
41
+ instance.stores.enabled.setValue();
42
+ instance.stores.status.setValue(CoreStatus.DISABLED);
43
+ instance.storeUnsubscribe();
44
+ };
45
+ instance.sdk.invalidateSettings = ()=>{
46
+ instance.transport.nanoquery.utils.invalidateKeys(()=>{
47
+ return true;
48
+ });
49
+ };
50
+ /**
49
51
  * Configure the "event id" using the "provider," enabling subscribed stores to
50
52
  * trigger their logic in response to a new event.
51
- */ this.createEventSession = (providerStreamId)=>{
52
- this[kStore].getStoreItem('providerStreamId').setValue(providerStreamId);
53
- };
54
- }
55
- }
53
+ */ instance.sdk.createEventSession = (providerStreamId)=>{
54
+ instance.stores.providerStreamId.setValue(providerStreamId);
55
+ };
56
+ done();
57
+ };
56
58
 
57
59
  //# sourceMappingURL=core.js.map
package/src/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../packages/sdk-web/src/core.ts"],"sourcesContent":["import { kStore, kStoreSubscribe, kStoreUnsubscribe } from './keys'\nimport { CoreStatus } from './store/store'\nimport { Feature } from './features'\n\n/**\n * The main application instance is the core of a application. It includes:\n * Store: Manages data storage.\n * Public Methods: Provides a way to interact with the application.\n * Connect Features: Handles communication between components throught store.\n * Connect Transport: Handles communication with api.\n * Dependency Injection: Incorporates other necessary instances.\n * Error Handling: Manages errors and logs them.\n * Security: Implements authentication and authorization.\n */\nexport class StreamLayerSDK {\n /**\n * On initialize we subscribe to store and launch listeners\n * that activate data downloading over the network\n */\n getFeatures: () => Map<string, Feature>\n\n public initializeApp = async () => {\n this[kStoreSubscribe]()\n this[kStore].getStoreItem('enabled').setValue('on')\n this[kStore].getStoreItem('status').setValue(CoreStatus.INITIALIZATION)\n\n try {\n const organizationSettings = await this[kStore].getStoreItem('organizationSettings').getValue()\n\n if (organizationSettings) {\n this[kStore].getStoreItem('status').setValue(CoreStatus.READY)\n\n return { enabled: !!organizationSettings }\n }\n\n this[kStore].getStoreItem('status').setValue(CoreStatus.FAILED)\n\n return { err: 'failed' }\n } catch (err) {\n this[kStore].getStoreItem('enabled').setValue()\n this[kStore].getStoreItem('status').setValue(CoreStatus.FAILED)\n\n return { err }\n }\n }\n\n public disableApp = () => {\n this[kStore].getStoreItem('enabled').setValue()\n this[kStore].getStoreItem('status').setValue(CoreStatus.DISABLED)\n this[kStoreUnsubscribe]()\n }\n\n public invalidateSettings = () => {\n this.transport.nanoquery.utils.invalidateKeys(() => {\n return true\n })\n }\n\n /**\n * Configure the \"event id\" using the \"provider,\" enabling subscribed stores to\n * trigger their logic in response to a new event.\n */\n public createEventSession = (providerStreamId: string) => {\n this[kStore].getStoreItem('providerStreamId').setValue(providerStreamId)\n }\n}\n"],"names":["kStore","kStoreSubscribe","kStoreUnsubscribe","CoreStatus","StreamLayerSDK","initializeApp","getStoreItem","setValue","INITIALIZATION","organizationSettings","getValue","READY","enabled","FAILED","err","disableApp","DISABLED","invalidateSettings","transport","nanoquery","utils","invalidateKeys","createEventSession","providerStreamId"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,iBAAiB,QAAQ,SAAQ;AACnE,SAASC,UAAU,QAAQ,gBAAe;AAG1C;;;;;;;;;CASC,GACD,OAAO,MAAMC;;aAOJC,gBAAgB;YACrB,IAAI,CAACJ,gBAAgB;YACrB,IAAI,CAACD,OAAO,CAACM,YAAY,CAAC,WAAWC,QAAQ,CAAC;YAC9C,IAAI,CAACP,OAAO,CAACM,YAAY,CAAC,UAAUC,QAAQ,CAACJ,WAAWK,cAAc;YAEtE,IAAI;gBACF,MAAMC,uBAAuB,MAAM,IAAI,CAACT,OAAO,CAACM,YAAY,CAAC,wBAAwBI,QAAQ;gBAE7F,IAAID,sBAAsB;oBACxB,IAAI,CAACT,OAAO,CAACM,YAAY,CAAC,UAAUC,QAAQ,CAACJ,WAAWQ,KAAK;oBAE7D,OAAO;wBAAEC,SAAS,CAAC,CAACH;oBAAqB;gBAC3C;gBAEA,IAAI,CAACT,OAAO,CAACM,YAAY,CAAC,UAAUC,QAAQ,CAACJ,WAAWU,MAAM;gBAE9D,OAAO;oBAAEC,KAAK;gBAAS;YACzB,EAAE,OAAOA,KAAK;gBACZ,IAAI,CAACd,OAAO,CAACM,YAAY,CAAC,WAAWC,QAAQ;gBAC7C,IAAI,CAACP,OAAO,CAACM,YAAY,CAAC,UAAUC,QAAQ,CAACJ,WAAWU,MAAM;gBAE9D,OAAO;oBAAEC;gBAAI;YACf;QACF;aAEOC,aAAa;YAClB,IAAI,CAACf,OAAO,CAACM,YAAY,CAAC,WAAWC,QAAQ;YAC7C,IAAI,CAACP,OAAO,CAACM,YAAY,CAAC,UAAUC,QAAQ,CAACJ,WAAWa,QAAQ;YAChE,IAAI,CAACd,kBAAkB;QACzB;aAEOe,qBAAqB;YAC1B,IAAI,CAACC,SAAS,CAACC,SAAS,CAACC,KAAK,CAACC,cAAc,CAAC;gBAC5C,OAAO;YACT;QACF;QAEA;;;GAGC,QACMC,qBAAqB,CAACC;YAC3B,IAAI,CAACvB,OAAO,CAACM,YAAY,CAAC,oBAAoBC,QAAQ,CAACgB;QACzD;;AACF"}
1
+ {"version":3,"sources":["../../../../packages/sdk-web/src/core.ts"],"sourcesContent":["import { CoreStatus } from './store/store'\n\nimport { StreamLayerContext } from './'\n\nexport interface StreamLayerSDK {\n initializeApp: () => Promise<{ enabled?: boolean; err?: string }>\n disableApp: () => void\n invalidateSettings: () => void\n createEventSession: (providerStreamId: string) => void\n}\n\ndeclare module './' {\n interface StreamLayerContext {\n sdk: StreamLayerSDK\n }\n}\n\n/**\n * The main application instance is the core of a application. It includes:\n * Store: Manages data storage.\n * Public Methods: Provides a way to interact with the application.\n * Connect Features: Handles communication between components throught store.\n * Connect Transport: Handles communication with api.\n * Dependency Injection: Incorporates other necessary instances.\n * Error Handling: Manages errors and logs them.\n * Security: Implements authentication and authorization.\n */\nexport const core = (instance: StreamLayerContext, opts: unknown, done: () => void) => {\n instance.sdk = Object.create(null)\n\n /**\n * On initialize we subscribe to store and launch listeners\n * that activate data downloading over the network\n */\n instance.sdk.initializeApp = async () => {\n instance.storeSubscribe()\n instance.stores.enabled.setValue('on')\n instance.stores.status.setValue(CoreStatus.INITIALIZATION)\n\n try {\n const organizationSettings = await instance.stores.organizationSettings.getValue()\n\n if (organizationSettings) {\n instance.stores.status.setValue(CoreStatus.READY)\n\n return { enabled: !!organizationSettings }\n }\n\n instance.stores.status.setValue(CoreStatus.FAILED)\n\n return { err: 'failed' }\n } catch (err) {\n instance.stores.enabled.setValue()\n instance.stores.status.setValue(CoreStatus.FAILED)\n\n return { err: `${err}` }\n }\n }\n\n instance.sdk.disableApp = () => {\n instance.stores.enabled.setValue()\n instance.stores.status.setValue(CoreStatus.DISABLED)\n instance.storeUnsubscribe()\n }\n\n instance.sdk.invalidateSettings = () => {\n instance.transport.nanoquery.utils.invalidateKeys(() => {\n return true\n })\n }\n\n /**\n * Configure the \"event id\" using the \"provider,\" enabling subscribed stores to\n * trigger their logic in response to a new event.\n */\n instance.sdk.createEventSession = (providerStreamId: string) => {\n instance.stores.providerStreamId.setValue(providerStreamId)\n }\n\n done()\n}\n"],"names":["CoreStatus","core","instance","opts","done","sdk","Object","create","initializeApp","storeSubscribe","stores","enabled","setValue","status","INITIALIZATION","organizationSettings","getValue","READY","FAILED","err","disableApp","DISABLED","storeUnsubscribe","invalidateSettings","transport","nanoquery","utils","invalidateKeys","createEventSession","providerStreamId"],"mappings":"AAAA,SAASA,UAAU,QAAQ,gBAAe;AAiB1C;;;;;;;;;CASC,GACD,OAAO,MAAMC,OAAO,CAACC,UAA8BC,MAAeC;IAChEF,SAASG,GAAG,GAAGC,OAAOC,MAAM,CAAC;IAE7B;;;GAGC,GACDL,SAASG,GAAG,CAACG,aAAa,GAAG;QAC3BN,SAASO,cAAc;QACvBP,SAASQ,MAAM,CAACC,OAAO,CAACC,QAAQ,CAAC;QACjCV,SAASQ,MAAM,CAACG,MAAM,CAACD,QAAQ,CAACZ,WAAWc,cAAc;QAEzD,IAAI;YACF,MAAMC,uBAAuB,MAAMb,SAASQ,MAAM,CAACK,oBAAoB,CAACC,QAAQ;YAEhF,IAAID,sBAAsB;gBACxBb,SAASQ,MAAM,CAACG,MAAM,CAACD,QAAQ,CAACZ,WAAWiB,KAAK;gBAEhD,OAAO;oBAAEN,SAAS,CAAC,CAACI;gBAAqB;YAC3C;YAEAb,SAASQ,MAAM,CAACG,MAAM,CAACD,QAAQ,CAACZ,WAAWkB,MAAM;YAEjD,OAAO;gBAAEC,KAAK;YAAS;QACzB,EAAE,OAAOA,KAAK;YACZjB,SAASQ,MAAM,CAACC,OAAO,CAACC,QAAQ;YAChCV,SAASQ,MAAM,CAACG,MAAM,CAACD,QAAQ,CAACZ,WAAWkB,MAAM;YAEjD,OAAO;gBAAEC,KAAK,CAAC,EAAEA,IAAI,CAAC;YAAC;QACzB;IACF;IAEAjB,SAASG,GAAG,CAACe,UAAU,GAAG;QACxBlB,SAASQ,MAAM,CAACC,OAAO,CAACC,QAAQ;QAChCV,SAASQ,MAAM,CAACG,MAAM,CAACD,QAAQ,CAACZ,WAAWqB,QAAQ;QACnDnB,SAASoB,gBAAgB;IAC3B;IAEApB,SAASG,GAAG,CAACkB,kBAAkB,GAAG;QAChCrB,SAASsB,SAAS,CAACC,SAAS,CAACC,KAAK,CAACC,cAAc,CAAC;YAChD,OAAO;QACT;IACF;IAEA;;;GAGC,GACDzB,SAASG,GAAG,CAACuB,kBAAkB,GAAG,CAACC;QACjC3B,SAASQ,MAAM,CAACmB,gBAAgB,CAACjB,QAAQ,CAACiB;IAC5C;IAEAzB;AACF,EAAC"}
@@ -1,15 +1,21 @@
1
1
  import { FeatureConfig } from '@streamlayer/sdk-web-types';
2
2
  import { AbstractFeature, FeatureSource } from '@streamlayer/sdk-web-interfaces';
3
3
  import { StreamLayerContext } from '../';
4
- import { kFeatures, kFeatureInit } from '../keys';
5
- declare module '../core' {
6
- interface StreamLayerSDK {
7
- [kFeatures]: Map<FeatureConfig['name'], Feature>;
8
- [kFeatureInit]: (overlay: FeatureConfig, source: FeatureSource) => Promise<void>;
9
- }
10
- }
11
4
  export declare class Feature extends AbstractFeature {
12
5
  }
13
6
  export declare const initFeature: (overlay: FeatureConfig, source: FeatureSource) => Feature;
14
7
  export { FeatureSource } from '@streamlayer/sdk-web-interfaces';
15
- export declare const features: (instance: StreamLayerContext, opts: any, done: any) => void;
8
+ declare module '../' {
9
+ interface StreamLayerContext {
10
+ features: Map<FeatureConfig['name'], Feature>;
11
+ initFeature: (overlay: FeatureConfig, source?: FeatureSource) => void;
12
+ updateFeature: (overlay: FeatureConfig, source: FeatureSource) => void;
13
+ destroyFeature: (overlay: FeatureConfig) => void;
14
+ }
15
+ }
16
+ declare module '../core' {
17
+ interface StreamLayerSDK {
18
+ getFeatures: () => Map<string, Feature>;
19
+ }
20
+ }
21
+ export declare const features: (instance: StreamLayerContext, opts: unknown, done: () => void) => void;
@@ -1,5 +1,4 @@
1
- import { AbstractFeature } from '@streamlayer/sdk-web-interfaces';
2
- import { kFeatures, kFeatureInit, kFeatureUpdate, kFeatureDestroy } from '../keys';
1
+ import { AbstractFeature, FeatureSource } from '@streamlayer/sdk-web-interfaces';
3
2
  export class Feature extends AbstractFeature {
4
3
  }
5
4
  export const initFeature = (overlay, source)=>{
@@ -7,27 +6,19 @@ export const initFeature = (overlay, source)=>{
7
6
  };
8
7
  export { FeatureSource } from '@streamlayer/sdk-web-interfaces';
9
8
  export const features = (instance, opts, done)=>{
10
- instance.sdk[kFeatures] = new Map();
9
+ instance.features = new Map();
10
+ instance.sdk.getFeatures = ()=>instance.features;
11
11
  /**
12
12
  * A distinct object instance is created and initialized for each overlay.
13
- */ instance.sdk.getFeatures = ()=>{
14
- return instance.sdk[kFeatures];
15
- };
16
- instance.sdk[kFeatureInit] = async (overlay, source)=>{
17
- if (instance.sdk[kFeatures].has(overlay.name)) {
18
- await instance.sdk[kFeatureUpdate](overlay, source);
19
- return;
20
- }
13
+ */ instance.initFeature = (overlay, source = FeatureSource.ORGANIZATION)=>{
21
14
  const feature = initFeature(overlay, source);
22
- instance.sdk[kFeatures].set(overlay.name, feature);
15
+ instance.features.set(overlay.name, feature);
23
16
  };
24
- // eslint-disable-next-line require-await
25
- instance.sdk[kFeatureUpdate] = async (overlay, source)=>{
26
- instance.sdk[kFeatures].get(overlay.name).update(overlay, source);
17
+ instance.updateFeature = (overlay, source)=>{
18
+ instance.features.get(overlay.name)?.update(overlay, source);
27
19
  };
28
- // eslint-disable-next-line require-await
29
- instance.sdk[kFeatureDestroy] = async (overlay)=>{
30
- instance.sdk[kFeatures].delete(overlay.name);
20
+ instance.destroyFeature = (overlay)=>{
21
+ instance.features.delete(overlay.name);
31
22
  };
32
23
  done();
33
24
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/sdk-web/src/features/index.ts"],"sourcesContent":["import { FeatureConfig } from '@streamlayer/sdk-web-types'\nimport { AbstractFeature, FeatureSource } from '@streamlayer/sdk-web-interfaces'\n\nimport { StreamLayerContext } from '../'\nimport { kFeatures, kFeatureInit, kFeatureUpdate, kFeatureDestroy } from '../keys'\n\ndeclare module '../core' {\n interface StreamLayerSDK {\n [kFeatures]: Map<FeatureConfig['name'], Feature>\n [kFeatureInit]: (overlay: FeatureConfig, source: FeatureSource) => Promise<void>\n }\n}\n\nexport class Feature extends AbstractFeature {}\nexport const initFeature = (overlay: FeatureConfig, source: FeatureSource) => {\n return new Feature(overlay, source)\n}\nexport { FeatureSource } from '@streamlayer/sdk-web-interfaces'\n\nexport const features = (instance: StreamLayerContext, opts, done) => {\n instance.sdk[kFeatures] = new Map()\n /**\n * A distinct object instance is created and initialized for each overlay.\n */\n instance.sdk.getFeatures = () => {\n return instance.sdk[kFeatures]\n }\n\n instance.sdk[kFeatureInit] = async (overlay: FeatureConfig, source: FeatureSource) => {\n if (instance.sdk[kFeatures].has(overlay.name)) {\n await instance.sdk[kFeatureUpdate](overlay, source)\n\n return\n }\n\n const feature = initFeature(overlay, source)\n\n instance.sdk[kFeatures].set(overlay.name, feature)\n }\n // eslint-disable-next-line require-await\n instance.sdk[kFeatureUpdate] = async (overlay: FeatureConfig, source: FeatureSource) => {\n instance.sdk[kFeatures].get(overlay.name).update(overlay, source)\n }\n\n // eslint-disable-next-line require-await\n instance.sdk[kFeatureDestroy] = async (overlay: FeatureConfig) => {\n instance.sdk[kFeatures].delete(overlay.name)\n }\n\n done()\n}\n"],"names":["AbstractFeature","kFeatures","kFeatureInit","kFeatureUpdate","kFeatureDestroy","Feature","initFeature","overlay","source","FeatureSource","features","instance","opts","done","sdk","Map","getFeatures","has","name","feature","set","get","update","delete"],"mappings":"AACA,SAASA,eAAe,QAAuB,kCAAiC;AAGhF,SAASC,SAAS,EAAEC,YAAY,EAAEC,cAAc,EAAEC,eAAe,QAAQ,UAAS;AASlF,OAAO,MAAMC,gBAAgBL;AAAiB;AAC9C,OAAO,MAAMM,cAAc,CAACC,SAAwBC;IAClD,OAAO,IAAIH,QAAQE,SAASC;AAC9B,EAAC;AACD,SAASC,aAAa,QAAQ,kCAAiC;AAE/D,OAAO,MAAMC,WAAW,CAACC,UAA8BC,MAAMC;IAC3DF,SAASG,GAAG,CAACb,UAAU,GAAG,IAAIc;IAC9B;;GAEC,GACDJ,SAASG,GAAG,CAACE,WAAW,GAAG;QACzB,OAAOL,SAASG,GAAG,CAACb,UAAU;IAChC;IAEAU,SAASG,GAAG,CAACZ,aAAa,GAAG,OAAOK,SAAwBC;QAC1D,IAAIG,SAASG,GAAG,CAACb,UAAU,CAACgB,GAAG,CAACV,QAAQW,IAAI,GAAG;YAC7C,MAAMP,SAASG,GAAG,CAACX,eAAe,CAACI,SAASC;YAE5C;QACF;QAEA,MAAMW,UAAUb,YAAYC,SAASC;QAErCG,SAASG,GAAG,CAACb,UAAU,CAACmB,GAAG,CAACb,QAAQW,IAAI,EAAEC;IAC5C;IACA,yCAAyC;IACzCR,SAASG,GAAG,CAACX,eAAe,GAAG,OAAOI,SAAwBC;QAC5DG,SAASG,GAAG,CAACb,UAAU,CAACoB,GAAG,CAACd,QAAQW,IAAI,EAAEI,MAAM,CAACf,SAASC;IAC5D;IAEA,yCAAyC;IACzCG,SAASG,GAAG,CAACV,gBAAgB,GAAG,OAAOG;QACrCI,SAASG,GAAG,CAACb,UAAU,CAACsB,MAAM,CAAChB,QAAQW,IAAI;IAC7C;IAEAL;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../../packages/sdk-web/src/features/index.ts"],"sourcesContent":["import { FeatureConfig } from '@streamlayer/sdk-web-types'\nimport { AbstractFeature, FeatureSource } from '@streamlayer/sdk-web-interfaces'\n\nimport { StreamLayerContext } from '../'\n\nexport class Feature extends AbstractFeature {}\n\nexport const initFeature = (overlay: FeatureConfig, source: FeatureSource) => {\n return new Feature(overlay, source)\n}\n\nexport { FeatureSource } from '@streamlayer/sdk-web-interfaces'\n\ndeclare module '../' {\n interface StreamLayerContext {\n features: Map<FeatureConfig['name'], Feature>\n initFeature: (overlay: FeatureConfig, source?: FeatureSource) => void\n updateFeature: (overlay: FeatureConfig, source: FeatureSource) => void\n destroyFeature: (overlay: FeatureConfig) => void\n }\n}\n\ndeclare module '../core' {\n interface StreamLayerSDK {\n getFeatures: () => Map<string, Feature>\n }\n}\n\nexport const features = (instance: StreamLayerContext, opts: unknown, done: () => void) => {\n instance.features = new Map<string, Feature>()\n\n instance.sdk.getFeatures = () => instance.features\n\n /**\n * A distinct object instance is created and initialized for each overlay.\n */\n instance.initFeature = (overlay: FeatureConfig, source: FeatureSource = FeatureSource.ORGANIZATION) => {\n const feature = initFeature(overlay, source)\n\n instance.features.set(overlay.name, feature)\n }\n\n instance.updateFeature = (overlay: FeatureConfig, source: FeatureSource) => {\n instance.features.get(overlay.name)?.update(overlay, source)\n }\n\n instance.destroyFeature = (overlay: FeatureConfig) => {\n instance.features.delete(overlay.name)\n }\n\n done()\n}\n"],"names":["AbstractFeature","FeatureSource","Feature","initFeature","overlay","source","features","instance","opts","done","Map","sdk","getFeatures","ORGANIZATION","feature","set","name","updateFeature","get","update","destroyFeature","delete"],"mappings":"AACA,SAASA,eAAe,EAAEC,aAAa,QAAQ,kCAAiC;AAIhF,OAAO,MAAMC,gBAAgBF;AAAiB;AAE9C,OAAO,MAAMG,cAAc,CAACC,SAAwBC;IAClD,OAAO,IAAIH,QAAQE,SAASC;AAC9B,EAAC;AAED,SAASJ,aAAa,QAAQ,kCAAiC;AAiB/D,OAAO,MAAMK,WAAW,CAACC,UAA8BC,MAAeC;IACpEF,SAASD,QAAQ,GAAG,IAAII;IAExBH,SAASI,GAAG,CAACC,WAAW,GAAG,IAAML,SAASD,QAAQ;IAElD;;GAEC,GACDC,SAASJ,WAAW,GAAG,CAACC,SAAwBC,SAAwBJ,cAAcY,YAAY;QAChG,MAAMC,UAAUX,YAAYC,SAASC;QAErCE,SAASD,QAAQ,CAACS,GAAG,CAACX,QAAQY,IAAI,EAAEF;IACtC;IAEAP,SAASU,aAAa,GAAG,CAACb,SAAwBC;QAChDE,SAASD,QAAQ,CAACY,GAAG,CAACd,QAAQY,IAAI,GAAGG,OAAOf,SAASC;IACvD;IAEAE,SAASa,cAAc,GAAG,CAAChB;QACzBG,SAASD,QAAQ,CAACe,MAAM,CAACjB,QAAQY,IAAI;IACvC;IAEAP;AACF,EAAC"}
package/src/index.d.ts CHANGED
@@ -2,17 +2,16 @@ import { Transport } from '@streamlayer/sdk-web-api';
2
2
  import avvio from 'avvio';
3
3
  import './store';
4
4
  import './auth';
5
- import { StreamLayerSDK } from './core';
5
+ import './features';
6
+ import './store';
7
+ import './core';
8
+ import './auth';
9
+ import type { StreamLayerSDK } from './core';
6
10
  export type { CoreStoreInterface } from './store/store';
7
11
  export { StreamLayerSDK };
8
12
  export interface StreamLayerContext {
9
- sdk: StreamLayerSDK;
10
- }
11
- declare module './core' {
12
- interface StreamLayerSDK {
13
- transport: Transport;
14
- }
13
+ transport: Transport;
15
14
  }
16
- export type StreamLayerSDKStore = ReturnType<ReturnType<StreamLayerSDK['sdkStore']>['getStore']>;
17
- export type StreamLayerPlugin = (instance: StreamLayerContext, opts: any, done: any) => void;
15
+ export type StreamLayerInstance = avvio.mixedInstance<StreamLayerContext>;
16
+ export type StreamLayerPlugin = (instance: StreamLayerContext, opts: unknown, done: () => void) => void;
18
17
  export declare function StreamLayer(sdkKey: string): avvio.Avvio<StreamLayerContext>;
package/src/index.js CHANGED
@@ -4,26 +4,26 @@ import './store';
4
4
  import './auth';
5
5
  import { features } from './features';
6
6
  import { store } from './store';
7
- import { StreamLayerSDK } from './core';
7
+ import { core } from './core';
8
8
  import { bypass } from './auth';
9
- export { StreamLayerSDK };
10
9
  export function StreamLayer(sdkKey) {
11
10
  const streamLayer = avvio(Object.create(null), {
12
11
  autostart: false
13
12
  });
13
+ streamLayer.use(core);
14
14
  streamLayer.use((instance, opts, done)=>{
15
- instance.sdk = new StreamLayerSDK();
16
- done();
17
- });
18
- streamLayer.use((instance, opts, done)=>{
19
- instance.sdk.transport = new Transport();
20
- instance.sdk.transport.setSdkKey(sdkKey);
15
+ instance.transport = new Transport();
16
+ instance.transport.setSdkKey(sdkKey);
21
17
  done();
22
18
  });
23
19
  streamLayer.use(store);
24
20
  streamLayer.use(bypass);
25
21
  streamLayer.use(features);
22
+ // eslint-disable-next-line @typescript-eslint/ban-types
26
23
  streamLayer.after(async (err, context, done)=>{
24
+ if (err) {
25
+ throw err;
26
+ }
27
27
  await context.sdk.initializeApp();
28
28
  done();
29
29
  });
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../packages/sdk-web/src/index.ts"],"sourcesContent":["import { Transport } from '@streamlayer/sdk-web-api'\n\nimport avvio from 'avvio'\n\nimport './store'\nimport './auth'\n\nimport { features } from './features'\nimport { store } from './store'\nimport { StreamLayerSDK } from './core'\nimport { bypass } from './auth'\n\nexport type { CoreStoreInterface } from './store/store'\nexport { StreamLayerSDK }\n\nexport interface StreamLayerContext {\n sdk: StreamLayerSDK\n}\n\ndeclare module './core' {\n interface StreamLayerSDK {\n transport: Transport\n }\n}\n\nexport type StreamLayerSDKStore = ReturnType<ReturnType<StreamLayerSDK['sdkStore']>['getStore']>\n\nexport type StreamLayerPlugin = (instance: StreamLayerContext, opts, done) => void\n\nexport function StreamLayer(sdkKey: string) {\n const streamLayer = avvio<StreamLayerContext>(Object.create(null), { autostart: false })\n\n streamLayer.use((instance, opts, done) => {\n instance.sdk = new StreamLayerSDK()\n done()\n })\n\n streamLayer.use((instance: StreamLayerContext, opts, done) => {\n instance.sdk.transport = new Transport()\n instance.sdk.transport.setSdkKey(sdkKey)\n done()\n })\n\n streamLayer.use(store)\n streamLayer.use(bypass)\n streamLayer.use(features)\n\n streamLayer.after(async (err, context: StreamLayerContext, done) => {\n await context.sdk.initializeApp()\n done()\n })\n\n streamLayer.onClose(() => {\n console.log('close')\n })\n\n return streamLayer\n}\n"],"names":["Transport","avvio","features","store","StreamLayerSDK","bypass","StreamLayer","sdkKey","streamLayer","Object","create","autostart","use","instance","opts","done","sdk","transport","setSdkKey","after","err","context","initializeApp","onClose","console","log"],"mappings":"AAAA,SAASA,SAAS,QAAQ,2BAA0B;AAEpD,OAAOC,WAAW,QAAO;AAEzB,OAAO,UAAS;AAChB,OAAO,SAAQ;AAEf,SAASC,QAAQ,QAAQ,aAAY;AACrC,SAASC,KAAK,QAAQ,UAAS;AAC/B,SAASC,cAAc,QAAQ,SAAQ;AACvC,SAASC,MAAM,QAAQ,SAAQ;AAG/B,SAASD,cAAc,GAAE;AAgBzB,OAAO,SAASE,YAAYC,MAAc;IACxC,MAAMC,cAAcP,MAA0BQ,OAAOC,MAAM,CAAC,OAAO;QAAEC,WAAW;IAAM;IAEtFH,YAAYI,GAAG,CAAC,CAACC,UAAUC,MAAMC;QAC/BF,SAASG,GAAG,GAAG,IAAIZ;QACnBW;IACF;IAEAP,YAAYI,GAAG,CAAC,CAACC,UAA8BC,MAAMC;QACnDF,SAASG,GAAG,CAACC,SAAS,GAAG,IAAIjB;QAC7Ba,SAASG,GAAG,CAACC,SAAS,CAACC,SAAS,CAACX;QACjCQ;IACF;IAEAP,YAAYI,GAAG,CAACT;IAChBK,YAAYI,GAAG,CAACP;IAChBG,YAAYI,GAAG,CAACV;IAEhBM,YAAYW,KAAK,CAAC,OAAOC,KAAKC,SAA6BN;QACzD,MAAMM,QAAQL,GAAG,CAACM,aAAa;QAC/BP;IACF;IAEAP,YAAYe,OAAO,CAAC;QAClBC,QAAQC,GAAG,CAAC;IACd;IAEA,OAAOjB;AACT"}
1
+ {"version":3,"sources":["../../../../packages/sdk-web/src/index.ts"],"sourcesContent":["import { Transport } from '@streamlayer/sdk-web-api'\n\nimport avvio from 'avvio'\n\nimport './store'\nimport './auth'\n\nimport { features } from './features'\nimport { store } from './store'\nimport { core } from './core'\nimport { bypass } from './auth'\nimport type { StreamLayerSDK } from './core'\nexport type { CoreStoreInterface } from './store/store'\n\nexport { StreamLayerSDK }\n\nexport interface StreamLayerContext {\n transport: Transport\n}\n\nexport type StreamLayerInstance = avvio.mixedInstance<StreamLayerContext>\n\nexport type StreamLayerPlugin = (instance: StreamLayerContext, opts: unknown, done: () => void) => void\n\nexport function StreamLayer(sdkKey: string) {\n const streamLayer = avvio<StreamLayerContext>(Object.create(null), { autostart: false })\n\n streamLayer.use(core)\n\n streamLayer.use((instance: StreamLayerContext, opts: unknown, done: () => void) => {\n instance.transport = new Transport()\n instance.transport.setSdkKey(sdkKey)\n done()\n })\n\n streamLayer.use(store)\n streamLayer.use(bypass)\n streamLayer.use(features)\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n streamLayer.after(async (err: Error, context: StreamLayerContext, done: Function) => {\n if (err) {\n throw err\n }\n\n await context.sdk.initializeApp()\n done()\n })\n\n streamLayer.onClose(() => {\n console.log('close')\n })\n\n return streamLayer\n}\n"],"names":["Transport","avvio","features","store","core","bypass","StreamLayer","sdkKey","streamLayer","Object","create","autostart","use","instance","opts","done","transport","setSdkKey","after","err","context","sdk","initializeApp","onClose","console","log"],"mappings":"AAAA,SAASA,SAAS,QAAQ,2BAA0B;AAEpD,OAAOC,WAAW,QAAO;AAEzB,OAAO,UAAS;AAChB,OAAO,SAAQ;AAEf,SAASC,QAAQ,QAAQ,aAAY;AACrC,SAASC,KAAK,QAAQ,UAAS;AAC/B,SAASC,IAAI,QAAQ,SAAQ;AAC7B,SAASC,MAAM,QAAQ,SAAQ;AAc/B,OAAO,SAASC,YAAYC,MAAc;IACxC,MAAMC,cAAcP,MAA0BQ,OAAOC,MAAM,CAAC,OAAO;QAAEC,WAAW;IAAM;IAEtFH,YAAYI,GAAG,CAACR;IAEhBI,YAAYI,GAAG,CAAC,CAACC,UAA8BC,MAAeC;QAC5DF,SAASG,SAAS,GAAG,IAAIhB;QACzBa,SAASG,SAAS,CAACC,SAAS,CAACV;QAC7BQ;IACF;IAEAP,YAAYI,GAAG,CAACT;IAChBK,YAAYI,GAAG,CAACP;IAChBG,YAAYI,GAAG,CAACV;IAEhB,wDAAwD;IACxDM,YAAYU,KAAK,CAAC,OAAOC,KAAYC,SAA6BL;QAChE,IAAII,KAAK;YACP,MAAMA;QACR;QAEA,MAAMC,QAAQC,GAAG,CAACC,aAAa;QAC/BP;IACF;IAEAP,YAAYe,OAAO,CAAC;QAClBC,QAAQC,GAAG,CAAC;IACd;IAEA,OAAOjB;AACT"}
@@ -1,15 +1,19 @@
1
1
  import { StreamLayerContext } from '../';
2
- import { kStore, kStoreSubscribe, kStoreUnsubscribe } from '../keys';
3
- import { CoreStore } from './store';
2
+ import { CoreStore, StoreObj } from './store';
4
3
  declare module '../core' {
5
4
  interface StreamLayerSDK {
6
- [kStore]: CoreStore;
7
- sdkStore: () => CoreStore;
8
- [kStoreSubscribe]: () => void;
9
- [kStoreUnsubscribe]: () => void;
5
+ sdkStore: () => ReturnType<CoreStore['getStore']>;
6
+ }
7
+ }
8
+ declare module '../' {
9
+ interface StreamLayerContext {
10
+ store: CoreStore;
11
+ stores: StoreObj;
12
+ storeSubscribe: () => void;
13
+ storeUnsubscribe: () => void;
10
14
  }
11
15
  }
12
16
  /**
13
17
  * store plugin, connect store to sdk
14
18
  */
15
- export declare const store: (instance: StreamLayerContext, opts: any, done: any) => void;
19
+ export declare const store: (instance: StreamLayerContext, opts: unknown, done: () => void) => void;
@@ -1,25 +1,23 @@
1
1
  import { FeatureSource } from '@streamlayer/sdk-web-interfaces';
2
- import { kStore, kStoreSubscribe, kStoreUnsubscribe, kFeatureInit } from '../keys';
3
2
  import { CoreStore } from './store';
4
3
  /**
5
4
  * store plugin, connect store to sdk
6
5
  */ export const store = (instance, opts, done)=>{
7
- instance.sdk[kStore] = new CoreStore(instance.sdk.transport);
8
- instance.sdk.sdkStore = ()=>instance.sdk[kStore];
6
+ instance.store = new CoreStore(instance.transport);
7
+ instance.stores = instance.store.getValues();
8
+ instance.sdk.sdkStore = ()=>instance.store.getStore();
9
9
  /**
10
10
  * Essentially, features and stores establish subscriptions to other stores
11
11
  * based on their dependencies. In certain cases, specific logic is
12
12
  * directly invoked in response to changes in the store.
13
- */ instance.sdk[kStoreSubscribe] = ()=>{
13
+ */ instance.storeSubscribe = ()=>{
14
14
  const processSettings = (source, settings)=>{
15
- if (!settings.data) return;
15
+ if (!settings?.overlays) return;
16
16
  const featureNames = new Set();
17
- for (const overlay of settings.data.overlays){
17
+ for (const overlay of settings.overlays){
18
18
  const featureName = overlay.name;
19
19
  featureNames.add(featureName);
20
- instance.sdk[kFeatureInit](overlay, source).catch((initError)=>{
21
- console.error(`Error initializing feature "${featureName}": ${initError}`);
22
- });
20
+ instance.initFeature(overlay, source);
23
21
  }
24
22
  };
25
23
  const subscribes = {
@@ -34,7 +32,7 @@ import { CoreStore } from './store';
34
32
  */ organizationSettings: (orgSettings)=>{
35
33
  if (orgSettings.data) {
36
34
  try {
37
- processSettings(FeatureSource.ORGANIZATION, orgSettings);
35
+ processSettings(FeatureSource.ORGANIZATION, orgSettings.data);
38
36
  } catch (err) {
39
37
  console.log(err);
40
38
  }
@@ -43,17 +41,17 @@ import { CoreStore } from './store';
43
41
  streamSettings: (streamSettings)=>{
44
42
  if (streamSettings.data) {
45
43
  try {
46
- processSettings(FeatureSource.STREAM, streamSettings);
44
+ processSettings(FeatureSource.STREAM, streamSettings.data);
47
45
  } catch (err) {
48
46
  console.log(err);
49
47
  }
50
48
  }
51
49
  }
52
50
  };
53
- instance.sdk[kStore].subscribe(subscribes);
51
+ instance.store.subscribe(subscribes);
54
52
  };
55
- instance.sdk[kStoreUnsubscribe] = ()=>{
56
- instance.sdk[kStore].unsubscribe();
53
+ instance.storeUnsubscribe = ()=>{
54
+ instance.store.unsubscribe();
57
55
  };
58
56
  done();
59
57
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/sdk-web/src/store/index.ts"],"sourcesContent":["import { FeatureSource } from '@streamlayer/sdk-web-interfaces'\n\nimport { StreamLayerContext } from '../'\nimport { kStore, kStoreSubscribe, kStoreUnsubscribe, kFeatureInit } from '../keys'\n\nimport { CoreStore, StoreListeners } from './store'\n\ndeclare module '../core' {\n interface StreamLayerSDK {\n [kStore]: CoreStore\n sdkStore: () => CoreStore\n [kStoreSubscribe]: () => void\n [kStoreUnsubscribe]: () => void\n }\n}\n\n/**\n * store plugin, connect store to sdk\n */\nexport const store = (instance: StreamLayerContext, opts, done) => {\n instance.sdk[kStore] = new CoreStore(instance.sdk.transport)\n\n instance.sdk.sdkStore = () => instance.sdk[kStore]\n\n /**\n * Essentially, features and stores establish subscriptions to other stores\n * based on their dependencies. In certain cases, specific logic is\n * directly invoked in response to changes in the store.\n */\n instance.sdk[kStoreSubscribe] = () => {\n const processSettings = (source, settings) => {\n if (!settings.data) return\n\n const featureNames = new Set()\n\n for (const overlay of settings.data.overlays) {\n const featureName = overlay.name\n\n featureNames.add(featureName)\n\n instance.sdk[kFeatureInit](overlay, source).catch((initError) => {\n console.error(`Error initializing feature \"${featureName}\": ${initError}`)\n })\n }\n }\n\n const subscribes: Partial<StoreListeners> = {\n /**\n * During the initial SDK initialization, it's imperative to initialize features first,\n * followed by their direct subscriptions to store fields.\n * This section is currently in development, and it's\n * essential to implement checks to determine whether a feature\n * has already been initialized. If it has, events related to\n * that feature should be skipped. Conversely, if a feature is\n * missing in the new settings, it should be deinitialized.\n */\n organizationSettings: (orgSettings) => {\n if (orgSettings.data) {\n try {\n processSettings(FeatureSource.ORGANIZATION, orgSettings)\n } catch (err) {\n console.log(err)\n }\n }\n },\n streamSettings: (streamSettings) => {\n if (streamSettings.data) {\n try {\n processSettings(FeatureSource.STREAM, streamSettings)\n } catch (err) {\n console.log(err)\n }\n }\n },\n }\n\n instance.sdk[kStore].subscribe(subscribes)\n }\n\n instance.sdk[kStoreUnsubscribe] = () => {\n instance.sdk[kStore].unsubscribe()\n }\n\n done()\n}\n"],"names":["FeatureSource","kStore","kStoreSubscribe","kStoreUnsubscribe","kFeatureInit","CoreStore","store","instance","opts","done","sdk","transport","sdkStore","processSettings","source","settings","data","featureNames","Set","overlay","overlays","featureName","name","add","catch","initError","console","error","subscribes","organizationSettings","orgSettings","ORGANIZATION","err","log","streamSettings","STREAM","subscribe","unsubscribe"],"mappings":"AAAA,SAASA,aAAa,QAAQ,kCAAiC;AAG/D,SAASC,MAAM,EAAEC,eAAe,EAAEC,iBAAiB,EAAEC,YAAY,QAAQ,UAAS;AAElF,SAASC,SAAS,QAAwB,UAAS;AAWnD;;CAEC,GACD,OAAO,MAAMC,QAAQ,CAACC,UAA8BC,MAAMC;IACxDF,SAASG,GAAG,CAACT,OAAO,GAAG,IAAII,UAAUE,SAASG,GAAG,CAACC,SAAS;IAE3DJ,SAASG,GAAG,CAACE,QAAQ,GAAG,IAAML,SAASG,GAAG,CAACT,OAAO;IAElD;;;;GAIC,GACDM,SAASG,GAAG,CAACR,gBAAgB,GAAG;QAC9B,MAAMW,kBAAkB,CAACC,QAAQC;YAC/B,IAAI,CAACA,SAASC,IAAI,EAAE;YAEpB,MAAMC,eAAe,IAAIC;YAEzB,KAAK,MAAMC,WAAWJ,SAASC,IAAI,CAACI,QAAQ,CAAE;gBAC5C,MAAMC,cAAcF,QAAQG,IAAI;gBAEhCL,aAAaM,GAAG,CAACF;gBAEjBd,SAASG,GAAG,CAACN,aAAa,CAACe,SAASL,QAAQU,KAAK,CAAC,CAACC;oBACjDC,QAAQC,KAAK,CAAC,CAAC,4BAA4B,EAAEN,YAAY,GAAG,EAAEI,UAAU,CAAC;gBAC3E;YACF;QACF;QAEA,MAAMG,aAAsC;YAC1C;;;;;;;;OAQC,GACDC,sBAAsB,CAACC;gBACrB,IAAIA,YAAYd,IAAI,EAAE;oBACpB,IAAI;wBACFH,gBAAgBb,cAAc+B,YAAY,EAAED;oBAC9C,EAAE,OAAOE,KAAK;wBACZN,QAAQO,GAAG,CAACD;oBACd;gBACF;YACF;YACAE,gBAAgB,CAACA;gBACf,IAAIA,eAAelB,IAAI,EAAE;oBACvB,IAAI;wBACFH,gBAAgBb,cAAcmC,MAAM,EAAED;oBACxC,EAAE,OAAOF,KAAK;wBACZN,QAAQO,GAAG,CAACD;oBACd;gBACF;YACF;QACF;QAEAzB,SAASG,GAAG,CAACT,OAAO,CAACmC,SAAS,CAACR;IACjC;IAEArB,SAASG,GAAG,CAACP,kBAAkB,GAAG;QAChCI,SAASG,GAAG,CAACT,OAAO,CAACoC,WAAW;IAClC;IAEA5B;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../../packages/sdk-web/src/store/index.ts"],"sourcesContent":["import { FeatureSource } from '@streamlayer/sdk-web-interfaces'\n\nimport { StreamLayerContext } from '../'\n\nimport { CoreStore, StoreListeners, StoreObj, CoreStoreInterface } from './store'\n\ndeclare module '../core' {\n interface StreamLayerSDK {\n sdkStore: () => ReturnType<CoreStore['getStore']>\n }\n}\n\ndeclare module '../' {\n interface StreamLayerContext {\n store: CoreStore\n stores: StoreObj\n storeSubscribe: () => void\n storeUnsubscribe: () => void\n }\n}\n\n/**\n * store plugin, connect store to sdk\n */\nexport const store = (instance: StreamLayerContext, opts: unknown, done: () => void) => {\n instance.store = new CoreStore(instance.transport)\n instance.stores = instance.store.getValues()\n\n instance.sdk.sdkStore = () => instance.store.getStore()\n\n /**\n * Essentially, features and stores establish subscriptions to other stores\n * based on their dependencies. In certain cases, specific logic is\n * directly invoked in response to changes in the store.\n */\n instance.storeSubscribe = () => {\n const processSettings = (\n source: FeatureSource,\n settings: CoreStoreInterface['organizationSettings'] | CoreStoreInterface['streamSettings'],\n ) => {\n if (!settings?.overlays) return\n\n const featureNames = new Set()\n\n for (const overlay of settings.overlays) {\n const featureName = overlay.name\n\n featureNames.add(featureName)\n\n instance.initFeature(overlay, source)\n }\n }\n\n const subscribes: Partial<StoreListeners> = {\n /**\n * During the initial SDK initialization, it's imperative to initialize features first,\n * followed by their direct subscriptions to store fields.\n * This section is currently in development, and it's\n * essential to implement checks to determine whether a feature\n * has already been initialized. If it has, events related to\n * that feature should be skipped. Conversely, if a feature is\n * missing in the new settings, it should be deinitialized.\n */\n organizationSettings: (orgSettings) => {\n if (orgSettings.data) {\n try {\n processSettings(FeatureSource.ORGANIZATION, orgSettings.data)\n } catch (err) {\n console.log(err)\n }\n }\n },\n streamSettings: (streamSettings) => {\n if (streamSettings.data) {\n try {\n processSettings(FeatureSource.STREAM, streamSettings.data)\n } catch (err) {\n console.log(err)\n }\n }\n },\n }\n\n instance.store.subscribe(subscribes)\n }\n\n instance.storeUnsubscribe = () => {\n instance.store.unsubscribe()\n }\n\n done()\n}\n"],"names":["FeatureSource","CoreStore","store","instance","opts","done","transport","stores","getValues","sdk","sdkStore","getStore","storeSubscribe","processSettings","source","settings","overlays","featureNames","Set","overlay","featureName","name","add","initFeature","subscribes","organizationSettings","orgSettings","data","ORGANIZATION","err","console","log","streamSettings","STREAM","subscribe","storeUnsubscribe","unsubscribe"],"mappings":"AAAA,SAASA,aAAa,QAAQ,kCAAiC;AAI/D,SAASC,SAAS,QAAsD,UAAS;AAiBjF;;CAEC,GACD,OAAO,MAAMC,QAAQ,CAACC,UAA8BC,MAAeC;IACjEF,SAASD,KAAK,GAAG,IAAID,UAAUE,SAASG,SAAS;IACjDH,SAASI,MAAM,GAAGJ,SAASD,KAAK,CAACM,SAAS;IAE1CL,SAASM,GAAG,CAACC,QAAQ,GAAG,IAAMP,SAASD,KAAK,CAACS,QAAQ;IAErD;;;;GAIC,GACDR,SAASS,cAAc,GAAG;QACxB,MAAMC,kBAAkB,CACtBC,QACAC;YAEA,IAAI,CAACA,UAAUC,UAAU;YAEzB,MAAMC,eAAe,IAAIC;YAEzB,KAAK,MAAMC,WAAWJ,SAASC,QAAQ,CAAE;gBACvC,MAAMI,cAAcD,QAAQE,IAAI;gBAEhCJ,aAAaK,GAAG,CAACF;gBAEjBjB,SAASoB,WAAW,CAACJ,SAASL;YAChC;QACF;QAEA,MAAMU,aAAsC;YAC1C;;;;;;;;OAQC,GACDC,sBAAsB,CAACC;gBACrB,IAAIA,YAAYC,IAAI,EAAE;oBACpB,IAAI;wBACFd,gBAAgBb,cAAc4B,YAAY,EAAEF,YAAYC,IAAI;oBAC9D,EAAE,OAAOE,KAAK;wBACZC,QAAQC,GAAG,CAACF;oBACd;gBACF;YACF;YACAG,gBAAgB,CAACA;gBACf,IAAIA,eAAeL,IAAI,EAAE;oBACvB,IAAI;wBACFd,gBAAgBb,cAAciC,MAAM,EAAED,eAAeL,IAAI;oBAC3D,EAAE,OAAOE,KAAK;wBACZC,QAAQC,GAAG,CAACF;oBACd;gBACF;YACF;QACF;QAEA1B,SAASD,KAAK,CAACgC,SAAS,CAACV;IAC3B;IAEArB,SAASgC,gBAAgB,GAAG;QAC1BhC,SAASD,KAAK,CAACkC,WAAW;IAC5B;IAEA/B;AACF,EAAC"}
@@ -1,6 +1,6 @@
1
- import type { OrganizationSettings, OrganizationAdvertising, StreamSettings, User, UserSettings } from '@streamlayer/sdk-web-types';
1
+ import type { OrganizationAdvertising, StreamSettings, User, UserSettings } from '@streamlayer/sdk-web-types';
2
2
  import { AbstractStore, SingleStore, mergeStores, ApiStore } from '@streamlayer/sdk-web-interfaces';
3
- import { Transport } from '@streamlayer/sdk-web-api';
3
+ import { queries, Transport } from '@streamlayer/sdk-web-api';
4
4
  export declare enum CoreStatus {
5
5
  DISABLED = "disabled",
6
6
  INITIALIZATION = "initialization",
@@ -9,11 +9,11 @@ export declare enum CoreStatus {
9
9
  SUSPENDED = "suspended"
10
10
  }
11
11
  export interface CoreStoreInterface {
12
- enabled: string;
12
+ enabled?: 'on';
13
13
  status: string;
14
14
  userKey?: string;
15
15
  userToken?: string;
16
- organizationSettings?: OrganizationSettings;
16
+ organizationSettings?: ReturnType<ReturnType<typeof queries.$organizationSettings>['get']>['data'];
17
17
  organizationAdvertising?: OrganizationAdvertising;
18
18
  streamSettings?: StreamSettings;
19
19
  user?: User;
@@ -22,35 +22,51 @@ export interface CoreStoreInterface {
22
22
  slStreamId?: string;
23
23
  }
24
24
  declare const initializeStore: (transport: Transport) => {
25
- readonly enabled: SingleStore<unknown, import("nanostores").WritableAtom<"on">>;
26
- readonly status: SingleStore<unknown, import("nanostores").WritableAtom<CoreStatus>>;
27
- readonly providerStreamId: SingleStore<unknown, import("nanostores").WritableAtom<string>>;
28
- readonly slStreamId: ApiStore<import("@nanostores/query").FetcherStore<string, any>>;
29
- readonly streamSettings: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings, any>>;
30
- readonly user: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse, any>>;
31
- readonly userKey: SingleStore<unknown, import("nanostores").WritableAtom<string>>;
32
- readonly userToken: SingleStore<unknown, import("nanostores").WritableAtom<string>>;
33
- readonly userSettings: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings, any>>;
34
- readonly organizationSettings: ApiStore<import("@nanostores/query").FetcherStore<{
25
+ readonly enabled: SingleStore<unknown, import("nanostores").WritableAtom<"on" | undefined>>;
26
+ readonly status: SingleStore<unknown, import("nanostores").WritableAtom<CoreStatus | undefined>>;
27
+ readonly providerStreamId: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>;
28
+ readonly slStreamId: ApiStore<string | undefined, import("@nanostores/query").FetcherStore<string | undefined>>;
29
+ readonly streamSettings: ApiStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings | undefined, import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings | undefined>>;
30
+ readonly user: ApiStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse | undefined, import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse | undefined>>;
31
+ readonly userKey: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>;
32
+ readonly userToken: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>;
33
+ readonly userSettings: ApiStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings | undefined, import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings | undefined>>;
34
+ readonly organizationSettings: ApiStore<{
35
35
  id: string;
36
- overlays: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[];
37
- buttonIcon: string;
38
- tinodeHost: string;
39
- audience: string;
40
- name: string;
41
- provider: string;
42
- primaryColor: string;
43
- secondaryColor: string;
44
- moderationPrimaryColor: string;
45
- linkShareIcon: string;
46
- linkShareText: string;
47
- brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults;
48
- pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK;
49
- getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient;
50
- }, any>>;
51
- readonly organizationAdvertising: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising, any>>;
36
+ overlays?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[] | undefined;
37
+ buttonIcon?: string | undefined;
38
+ tinodeHost?: string | undefined;
39
+ audience?: string | undefined;
40
+ name?: string | undefined;
41
+ provider?: string | undefined;
42
+ primaryColor?: string | undefined;
43
+ secondaryColor?: string | undefined;
44
+ moderationPrimaryColor?: string | undefined;
45
+ linkShareIcon?: string | undefined;
46
+ linkShareText?: string | undefined;
47
+ brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults | undefined;
48
+ pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK | undefined;
49
+ getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient | undefined;
50
+ } | null | undefined, import("@nanostores/query").FetcherStore<{
51
+ id: string;
52
+ overlays?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[] | undefined;
53
+ buttonIcon?: string | undefined;
54
+ tinodeHost?: string | undefined;
55
+ audience?: string | undefined;
56
+ name?: string | undefined;
57
+ provider?: string | undefined;
58
+ primaryColor?: string | undefined;
59
+ secondaryColor?: string | undefined;
60
+ moderationPrimaryColor?: string | undefined;
61
+ linkShareIcon?: string | undefined;
62
+ linkShareText?: string | undefined;
63
+ brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults | undefined;
64
+ pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK | undefined;
65
+ getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient | undefined;
66
+ } | null | undefined>>;
67
+ readonly organizationAdvertising: ApiStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising | undefined, import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising | undefined>>;
52
68
  };
53
- type StoreObj = ReturnType<typeof initializeStore>;
69
+ export type StoreObj = ReturnType<typeof initializeStore>;
54
70
  export type CoreStores = {
55
71
  [Index in keyof StoreObj]: ReturnType<StoreObj[Index]['getStore']>;
56
72
  };
@@ -61,64 +77,51 @@ export type CoreStoreInstance = ReturnType<typeof mergeStores<StoreObj>>;
61
77
  export declare class CoreStore extends AbstractStore<CoreStoreInstance> {
62
78
  private stores;
63
79
  constructor(transport: Transport);
64
- getStoreItem: <T extends "userKey" | "enabled" | "status" | "providerStreamId" | "slStreamId" | "streamSettings" | "user" | "userToken" | "userSettings" | "organizationSettings" | "organizationAdvertising" = "userKey" | "enabled" | "status" | "providerStreamId" | "slStreamId" | "streamSettings" | "user" | "userToken" | "userSettings" | "organizationSettings" | "organizationAdvertising">(key: T) => {
65
- readonly enabled: SingleStore<unknown, import("nanostores").WritableAtom<"on">>;
66
- readonly status: SingleStore<unknown, import("nanostores").WritableAtom<CoreStatus>>;
67
- readonly providerStreamId: SingleStore<unknown, import("nanostores").WritableAtom<string>>;
68
- readonly slStreamId: ApiStore<import("@nanostores/query").FetcherStore<string, any>>;
69
- readonly streamSettings: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings, any>>;
70
- readonly user: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse, any>>;
71
- readonly userKey: SingleStore<unknown, import("nanostores").WritableAtom<string>>;
72
- readonly userToken: SingleStore<unknown, import("nanostores").WritableAtom<string>>;
73
- readonly userSettings: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings, any>>;
74
- readonly organizationSettings: ApiStore<import("@nanostores/query").FetcherStore<{
75
- id: string;
76
- overlays: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[];
77
- buttonIcon: string;
78
- tinodeHost: string;
79
- audience: string;
80
- name: string;
81
- provider: string;
82
- primaryColor: string;
83
- secondaryColor: string;
84
- moderationPrimaryColor: string;
85
- linkShareIcon: string;
86
- linkShareText: string;
87
- brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults;
88
- pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK;
89
- getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient;
90
- }, any>>;
91
- readonly organizationAdvertising: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising, any>>;
92
- }[T];
93
80
  getValue(): unknown;
94
81
  getValues(): {
95
- readonly enabled: SingleStore<unknown, import("nanostores").WritableAtom<"on">>;
96
- readonly status: SingleStore<unknown, import("nanostores").WritableAtom<CoreStatus>>;
97
- readonly providerStreamId: SingleStore<unknown, import("nanostores").WritableAtom<string>>;
98
- readonly slStreamId: ApiStore<import("@nanostores/query").FetcherStore<string, any>>;
99
- readonly streamSettings: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings, any>>;
100
- readonly user: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse, any>>;
101
- readonly userKey: SingleStore<unknown, import("nanostores").WritableAtom<string>>;
102
- readonly userToken: SingleStore<unknown, import("nanostores").WritableAtom<string>>;
103
- readonly userSettings: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings, any>>;
104
- readonly organizationSettings: ApiStore<import("@nanostores/query").FetcherStore<{
82
+ readonly enabled: SingleStore<unknown, import("nanostores").WritableAtom<"on" | undefined>>;
83
+ readonly status: SingleStore<unknown, import("nanostores").WritableAtom<CoreStatus | undefined>>;
84
+ readonly providerStreamId: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>;
85
+ readonly slStreamId: ApiStore<string | undefined, import("@nanostores/query").FetcherStore<string | undefined>>;
86
+ readonly streamSettings: ApiStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings | undefined, import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings | undefined>>;
87
+ readonly user: ApiStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse | undefined, import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse | undefined>>;
88
+ readonly userKey: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>;
89
+ readonly userToken: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>;
90
+ readonly userSettings: ApiStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings | undefined, import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings | undefined>>;
91
+ readonly organizationSettings: ApiStore<{
92
+ id: string;
93
+ overlays?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[] | undefined;
94
+ buttonIcon?: string | undefined;
95
+ tinodeHost?: string | undefined;
96
+ audience?: string | undefined;
97
+ name?: string | undefined;
98
+ provider?: string | undefined;
99
+ primaryColor?: string | undefined;
100
+ secondaryColor?: string | undefined;
101
+ moderationPrimaryColor?: string | undefined;
102
+ linkShareIcon?: string | undefined;
103
+ linkShareText?: string | undefined;
104
+ brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults | undefined;
105
+ pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK | undefined;
106
+ getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient | undefined;
107
+ } | null | undefined, import("@nanostores/query").FetcherStore<{
105
108
  id: string;
106
- overlays: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[];
107
- buttonIcon: string;
108
- tinodeHost: string;
109
- audience: string;
110
- name: string;
111
- provider: string;
112
- primaryColor: string;
113
- secondaryColor: string;
114
- moderationPrimaryColor: string;
115
- linkShareIcon: string;
116
- linkShareText: string;
117
- brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults;
118
- pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK;
119
- getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient;
120
- }, any>>;
121
- readonly organizationAdvertising: ApiStore<import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising, any>>;
109
+ overlays?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[] | undefined;
110
+ buttonIcon?: string | undefined;
111
+ tinodeHost?: string | undefined;
112
+ audience?: string | undefined;
113
+ name?: string | undefined;
114
+ provider?: string | undefined;
115
+ primaryColor?: string | undefined;
116
+ secondaryColor?: string | undefined;
117
+ moderationPrimaryColor?: string | undefined;
118
+ linkShareIcon?: string | undefined;
119
+ linkShareText?: string | undefined;
120
+ brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults | undefined;
121
+ pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK | undefined;
122
+ getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient | undefined;
123
+ } | null | undefined>>;
124
+ readonly organizationAdvertising: ApiStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising | undefined, import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising | undefined>>;
122
125
  };
123
126
  setValue(): void;
124
127
  subscribe: (subscribes: Partial<StoreListeners>) => void;
@@ -20,7 +20,7 @@ const initializeStore = (transport)=>{
20
20
  // host event id
21
21
  const providerStreamId = new SingleStore(createSingleStore());
22
22
  // sl event id
23
- const slStreamId = new ApiStore(queries.$retrieveEventId(providerStreamId.getStore(), transport), (data)=>data.data);
23
+ const slStreamId = new ApiStore(queries.$retrieveEventId(providerStreamId.getStore(), transport), (data)=>data?.data);
24
24
  // sl user data
25
25
  const user = new ApiStore(queries.$user(userToken.getStore(), transport));
26
26
  // sl user settings
@@ -52,13 +52,11 @@ const initializeStore = (transport)=>{
52
52
  const storesObj = initializeStore(transport);
53
53
  const store = mergeStores(storesObj);
54
54
  super(store);
55
- this.getStoreItem = (key)=>{
56
- return this.stores[key];
57
- };
58
55
  this.subscribe = (subscribes)=>{
59
- for(const storeKey in this.stores){
60
- if (subscribes[storeKey]) {
61
- // wrong type infer
56
+ let storeKey;
57
+ for(storeKey in this.stores){
58
+ const fn = subscribes[storeKey];
59
+ if (storeKey in subscribes && fn !== undefined) {
62
60
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
63
61
  // @ts-ignore
64
62
  this.stores[storeKey].subscribe(subscribes[storeKey]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/sdk-web/src/store/store.ts"],"sourcesContent":["import type {\n OrganizationSettings,\n OrganizationAdvertising,\n StreamSettings,\n User,\n UserSettings,\n} from '@streamlayer/sdk-web-types'\nimport { AbstractStore, createSingleStore, SingleStore, mergeStores, ApiStore } from '@streamlayer/sdk-web-interfaces'\nimport { queries, Transport } from '@streamlayer/sdk-web-api'\n\nexport enum CoreStatus {\n DISABLED = 'disabled',\n INITIALIZATION = 'initialization',\n READY = 'ready',\n FAILED = 'failed',\n SUSPENDED = 'suspended',\n}\n\nexport interface CoreStoreInterface {\n enabled: string\n status: string\n userKey?: string\n userToken?: string\n organizationSettings?: OrganizationSettings\n organizationAdvertising?: OrganizationAdvertising\n streamSettings?: StreamSettings\n user?: User\n userSettings?: UserSettings\n providerStreamId?: string\n slStreamId?: string\n}\n\nconst initializeStore = (transport: Transport) => {\n // sdk toggle\n const enabled = new SingleStore(createSingleStore<'on'>())\n // sdk status\n const status = new SingleStore(createSingleStore<CoreStatus>(CoreStatus.DISABLED))\n // host user key\n const userKey = new SingleStore(createSingleStore<string>())\n // sl user key\n const userToken = new SingleStore(createSingleStore<string>())\n // host event id\n const providerStreamId = new SingleStore(createSingleStore<string>())\n // sl event id\n const slStreamId = new ApiStore(queries.$retrieveEventId(providerStreamId.getStore(), transport), (data) => data.data)\n // sl user data\n const user = new ApiStore(queries.$user(userToken.getStore(), transport))\n // sl user settings\n const userSettings = new ApiStore(queries.$userSettings(userToken.getStore(), transport))\n // sl stream settings\n const streamSettings = new ApiStore(queries.$streamSettings(slStreamId.getAtomStore(), transport))\n // sl organization settings\n const organizationSettings = new ApiStore(\n queries.$organizationSettings(enabled.getStore(), transport),\n (data) => data?.data?.id,\n )\n // sl organization advertising\n const organizationAdvertising = new ApiStore(\n queries.$organizationAdvertising(organizationSettings.getAtomStore(), transport),\n )\n\n return {\n enabled,\n status,\n providerStreamId,\n slStreamId,\n streamSettings,\n user,\n userKey,\n userToken,\n userSettings,\n organizationSettings,\n organizationAdvertising,\n } as const\n}\n\ntype StoreObj = ReturnType<typeof initializeStore>\nexport type CoreStores = {\n [Index in keyof StoreObj]: ReturnType<StoreObj[Index]['getStore']>\n}\nexport type CoreStoreInstance = ReturnType<typeof mergeStores<StoreObj>>\n\n/**\n * @description main app store\n */\nexport class CoreStore extends AbstractStore<CoreStoreInstance> {\n private stores: StoreObj\n\n constructor(transport: Transport) {\n const storesObj = initializeStore(transport)\n const store = mergeStores<typeof storesObj>(storesObj)\n\n super(store)\n\n this.stores = storesObj\n }\n\n getStoreItem = <T extends keyof StoreObj = keyof StoreObj>(key: T): StoreObj[T] => {\n return this.stores[key]\n }\n\n getValue(): unknown {\n throw new Error('Not implemented')\n }\n\n getValues() {\n return this.stores\n }\n\n setValue() {\n throw new Error('Not implemented')\n }\n\n subscribe = (subscribes: Partial<StoreListeners>) => {\n for (const storeKey in this.stores) {\n if (subscribes[storeKey]) {\n // wrong type infer\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.stores[storeKey].subscribe(subscribes[storeKey])\n }\n }\n }\n\n unsubscribe = () => {\n const store = this.getStore()\n\n return store.off()\n }\n}\n\nexport type StoreListeners = {\n [Index in keyof StoreObj]: Parameters<StoreObj[Index]['subscribe']>[0]\n}\n"],"names":["AbstractStore","createSingleStore","SingleStore","mergeStores","ApiStore","queries","CoreStatus","initializeStore","transport","enabled","status","userKey","userToken","providerStreamId","slStreamId","$retrieveEventId","getStore","data","user","$user","userSettings","$userSettings","streamSettings","$streamSettings","getAtomStore","organizationSettings","$organizationSettings","id","organizationAdvertising","$organizationAdvertising","CoreStore","constructor","storesObj","store","getStoreItem","key","stores","subscribe","subscribes","storeKey","unsubscribe","off","getValue","Error","getValues","setValue"],"mappings":"AAOA,SAASA,aAAa,EAAEC,iBAAiB,EAAEC,WAAW,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,kCAAiC;AACtH,SAASC,OAAO,QAAmB,2BAA0B;;UAEjDC;;;;;;GAAAA,eAAAA;AAsBZ,MAAMC,kBAAkB,CAACC;IACvB,aAAa;IACb,MAAMC,UAAU,IAAIP,YAAYD;IAChC,aAAa;IACb,MAAMS,SAAS,IAAIR,YAAYD;IAC/B,gBAAgB;IAChB,MAAMU,UAAU,IAAIT,YAAYD;IAChC,cAAc;IACd,MAAMW,YAAY,IAAIV,YAAYD;IAClC,gBAAgB;IAChB,MAAMY,mBAAmB,IAAIX,YAAYD;IACzC,cAAc;IACd,MAAMa,aAAa,IAAIV,SAASC,QAAQU,gBAAgB,CAACF,iBAAiBG,QAAQ,IAAIR,YAAY,CAACS,OAASA,KAAKA,IAAI;IACrH,eAAe;IACf,MAAMC,OAAO,IAAId,SAASC,QAAQc,KAAK,CAACP,UAAUI,QAAQ,IAAIR;IAC9D,mBAAmB;IACnB,MAAMY,eAAe,IAAIhB,SAASC,QAAQgB,aAAa,CAACT,UAAUI,QAAQ,IAAIR;IAC9E,qBAAqB;IACrB,MAAMc,iBAAiB,IAAIlB,SAASC,QAAQkB,eAAe,CAACT,WAAWU,YAAY,IAAIhB;IACvF,2BAA2B;IAC3B,MAAMiB,uBAAuB,IAAIrB,SAC/BC,QAAQqB,qBAAqB,CAACjB,QAAQO,QAAQ,IAAIR,YAClD,CAACS,OAASA,MAAMA,MAAMU;IAExB,8BAA8B;IAC9B,MAAMC,0BAA0B,IAAIxB,SAClCC,QAAQwB,wBAAwB,CAACJ,qBAAqBD,YAAY,IAAIhB;IAGxE,OAAO;QACLC;QACAC;QACAG;QACAC;QACAQ;QACAJ;QACAP;QACAC;QACAQ;QACAK;QACAG;IACF;AACF;AAQA;;CAEC,GACD,OAAO,MAAME,kBAAkB9B;IAG7B+B,YAAYvB,SAAoB,CAAE;QAChC,MAAMwB,YAAYzB,gBAAgBC;QAClC,MAAMyB,QAAQ9B,YAA8B6B;QAE5C,KAAK,CAACC;aAKRC,eAAe,CAA4CC;YACzD,OAAO,IAAI,CAACC,MAAM,CAACD,IAAI;QACzB;aAcAE,YAAY,CAACC;YACX,IAAK,MAAMC,YAAY,IAAI,CAACH,MAAM,CAAE;gBAClC,IAAIE,UAAU,CAACC,SAAS,EAAE;oBACxB,mBAAmB;oBACnB,6DAA6D;oBAC7D,aAAa;oBACb,IAAI,CAACH,MAAM,CAACG,SAAS,CAACF,SAAS,CAACC,UAAU,CAACC,SAAS;gBACtD;YACF;QACF;aAEAC,cAAc;YACZ,MAAMP,QAAQ,IAAI,CAACjB,QAAQ;YAE3B,OAAOiB,MAAMQ,GAAG;QAClB;QAlCE,IAAI,CAACL,MAAM,GAAGJ;IAChB;IAMAU,WAAoB;QAClB,MAAM,IAAIC,MAAM;IAClB;IAEAC,YAAY;QACV,OAAO,IAAI,CAACR,MAAM;IACpB;IAEAS,WAAW;QACT,MAAM,IAAIF,MAAM;IAClB;AAkBF"}
1
+ {"version":3,"sources":["../../../../../packages/sdk-web/src/store/store.ts"],"sourcesContent":["import type { OrganizationAdvertising, StreamSettings, User, UserSettings } from '@streamlayer/sdk-web-types'\nimport { AbstractStore, createSingleStore, SingleStore, mergeStores, ApiStore } from '@streamlayer/sdk-web-interfaces'\nimport { queries, Transport, GetApiResponseType } from '@streamlayer/sdk-web-api'\n\nexport enum CoreStatus {\n DISABLED = 'disabled',\n INITIALIZATION = 'initialization',\n READY = 'ready',\n FAILED = 'failed',\n SUSPENDED = 'suspended',\n}\n\nexport interface CoreStoreInterface {\n enabled?: 'on'\n status: string\n userKey?: string\n userToken?: string\n organizationSettings?: ReturnType<ReturnType<typeof queries.$organizationSettings>['get']>['data']\n organizationAdvertising?: OrganizationAdvertising\n streamSettings?: StreamSettings\n user?: User\n userSettings?: UserSettings\n providerStreamId?: string\n slStreamId?: string\n}\n\nconst initializeStore = (transport: Transport) => {\n // sdk toggle\n const enabled = new SingleStore(createSingleStore<'on'>())\n // sdk status\n const status = new SingleStore(createSingleStore<CoreStatus>(CoreStatus.DISABLED))\n // host user key\n const userKey = new SingleStore(createSingleStore<string>())\n // sl user key\n const userToken = new SingleStore(createSingleStore<string>())\n // host event id\n const providerStreamId = new SingleStore(createSingleStore<string>())\n // sl event id\n const slStreamId = new ApiStore<GetApiResponseType<typeof queries.$retrieveEventId>>(\n queries.$retrieveEventId(providerStreamId.getStore(), transport),\n (data) => data?.data,\n )\n // sl user data\n const user = new ApiStore<GetApiResponseType<typeof queries.$user>>(queries.$user(userToken.getStore(), transport))\n // sl user settings\n const userSettings = new ApiStore<GetApiResponseType<typeof queries.$userSettings>>(\n queries.$userSettings(userToken.getStore(), transport),\n )\n // sl stream settings\n const streamSettings = new ApiStore<GetApiResponseType<typeof queries.$streamSettings>>(\n queries.$streamSettings(slStreamId.getAtomStore(), transport),\n )\n // sl organization settings\n const organizationSettings = new ApiStore<GetApiResponseType<typeof queries.$organizationSettings>>(\n queries.$organizationSettings(enabled.getStore(), transport),\n (data) => data?.data?.id,\n )\n // sl organization advertising\n const organizationAdvertising = new ApiStore<GetApiResponseType<typeof queries.$organizationAdvertising>>(\n queries.$organizationAdvertising(organizationSettings.getAtomStore(), transport),\n )\n\n return {\n enabled,\n status,\n providerStreamId,\n slStreamId,\n streamSettings,\n user,\n userKey,\n userToken,\n userSettings,\n organizationSettings,\n organizationAdvertising,\n } as const\n}\n\nexport type StoreObj = ReturnType<typeof initializeStore>\nexport type CoreStores = {\n [Index in keyof StoreObj]: ReturnType<StoreObj[Index]['getStore']>\n}\nexport type CoreStoreInstance = ReturnType<typeof mergeStores<StoreObj>>\n\n/**\n * @description main app store\n */\nexport class CoreStore extends AbstractStore<CoreStoreInstance> {\n private stores: StoreObj\n\n constructor(transport: Transport) {\n const storesObj = initializeStore(transport)\n const store = mergeStores<typeof storesObj>(storesObj)\n\n super(store)\n\n this.stores = storesObj\n }\n\n getValue(): unknown {\n throw new Error('Not implemented')\n }\n\n getValues() {\n return this.stores\n }\n\n setValue() {\n throw new Error('Not implemented')\n }\n\n subscribe = (subscribes: Partial<StoreListeners>) => {\n let storeKey: keyof StoreObj\n\n for (storeKey in this.stores) {\n const fn = subscribes[storeKey]\n\n if (storeKey in subscribes && fn !== undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.stores[storeKey].subscribe(subscribes[storeKey])\n }\n }\n }\n\n unsubscribe = () => {\n const store = this.getStore()\n\n return store.off()\n }\n}\n\nexport type StoreListeners = {\n [Index in keyof StoreObj]: Parameters<StoreObj[Index]['subscribe']>[0]\n}\n"],"names":["AbstractStore","createSingleStore","SingleStore","mergeStores","ApiStore","queries","CoreStatus","initializeStore","transport","enabled","status","userKey","userToken","providerStreamId","slStreamId","$retrieveEventId","getStore","data","user","$user","userSettings","$userSettings","streamSettings","$streamSettings","getAtomStore","organizationSettings","$organizationSettings","id","organizationAdvertising","$organizationAdvertising","CoreStore","constructor","storesObj","store","subscribe","subscribes","storeKey","stores","fn","undefined","unsubscribe","off","getValue","Error","getValues","setValue"],"mappings":"AACA,SAASA,aAAa,EAAEC,iBAAiB,EAAEC,WAAW,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,kCAAiC;AACtH,SAASC,OAAO,QAAuC,2BAA0B;;UAErEC;;;;;;GAAAA,eAAAA;AAsBZ,MAAMC,kBAAkB,CAACC;IACvB,aAAa;IACb,MAAMC,UAAU,IAAIP,YAAYD;IAChC,aAAa;IACb,MAAMS,SAAS,IAAIR,YAAYD;IAC/B,gBAAgB;IAChB,MAAMU,UAAU,IAAIT,YAAYD;IAChC,cAAc;IACd,MAAMW,YAAY,IAAIV,YAAYD;IAClC,gBAAgB;IAChB,MAAMY,mBAAmB,IAAIX,YAAYD;IACzC,cAAc;IACd,MAAMa,aAAa,IAAIV,SACrBC,QAAQU,gBAAgB,CAACF,iBAAiBG,QAAQ,IAAIR,YACtD,CAACS,OAASA,MAAMA;IAElB,eAAe;IACf,MAAMC,OAAO,IAAId,SAAmDC,QAAQc,KAAK,CAACP,UAAUI,QAAQ,IAAIR;IACxG,mBAAmB;IACnB,MAAMY,eAAe,IAAIhB,SACvBC,QAAQgB,aAAa,CAACT,UAAUI,QAAQ,IAAIR;IAE9C,qBAAqB;IACrB,MAAMc,iBAAiB,IAAIlB,SACzBC,QAAQkB,eAAe,CAACT,WAAWU,YAAY,IAAIhB;IAErD,2BAA2B;IAC3B,MAAMiB,uBAAuB,IAAIrB,SAC/BC,QAAQqB,qBAAqB,CAACjB,QAAQO,QAAQ,IAAIR,YAClD,CAACS,OAASA,MAAMA,MAAMU;IAExB,8BAA8B;IAC9B,MAAMC,0BAA0B,IAAIxB,SAClCC,QAAQwB,wBAAwB,CAACJ,qBAAqBD,YAAY,IAAIhB;IAGxE,OAAO;QACLC;QACAC;QACAG;QACAC;QACAQ;QACAJ;QACAP;QACAC;QACAQ;QACAK;QACAG;IACF;AACF;AAQA;;CAEC,GACD,OAAO,MAAME,kBAAkB9B;IAG7B+B,YAAYvB,SAAoB,CAAE;QAChC,MAAMwB,YAAYzB,gBAAgBC;QAClC,MAAMyB,QAAQ9B,YAA8B6B;QAE5C,KAAK,CAACC;aAiBRC,YAAY,CAACC;YACX,IAAIC;YAEJ,IAAKA,YAAY,IAAI,CAACC,MAAM,CAAE;gBAC5B,MAAMC,KAAKH,UAAU,CAACC,SAAS;gBAE/B,IAAIA,YAAYD,cAAcG,OAAOC,WAAW;oBAC9C,6DAA6D;oBAC7D,aAAa;oBACb,IAAI,CAACF,MAAM,CAACD,SAAS,CAACF,SAAS,CAACC,UAAU,CAACC,SAAS;gBACtD;YACF;QACF;aAEAI,cAAc;YACZ,MAAMP,QAAQ,IAAI,CAACjB,QAAQ;YAE3B,OAAOiB,MAAMQ,GAAG;QAClB;QAjCE,IAAI,CAACJ,MAAM,GAAGL;IAChB;IAEAU,WAAoB;QAClB,MAAM,IAAIC,MAAM;IAClB;IAEAC,YAAY;QACV,OAAO,IAAI,CAACP,MAAM;IACpB;IAEAQ,WAAW;QACT,MAAM,IAAIF,MAAM;IAClB;AAqBF"}
package/src/keys.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export declare const kAuth: unique symbol;
2
- export declare const kFeatures: unique symbol;
3
- export declare const kFeatureInit: unique symbol;
4
- export declare const kFeatureUpdate: unique symbol;
5
- export declare const kFeatureDestroy: unique symbol;
6
- export declare const kStore: unique symbol;
7
- export declare const kStoreSubscribe: unique symbol;
8
- export declare const kStoreUnsubscribe: unique symbol;
package/src/keys.js DELETED
@@ -1,10 +0,0 @@
1
- export const kAuth = Symbol('sdk-auth');
2
- export const kFeatures = Symbol('sdk-features');
3
- export const kFeatureInit = Symbol('sdk-features:initFeature');
4
- export const kFeatureUpdate = Symbol('sdk-features:updateFeature');
5
- export const kFeatureDestroy = Symbol('sdk-features:destroyFeature');
6
- export const kStore = Symbol('sdk-store');
7
- export const kStoreSubscribe = Symbol('sdk-store:storeSubscribe');
8
- export const kStoreUnsubscribe = Symbol('sdk-store:storeUnsubscribe');
9
-
10
- //# sourceMappingURL=keys.js.map
package/src/keys.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../packages/sdk-web/src/keys.ts"],"sourcesContent":["export const kAuth = Symbol('sdk-auth')\n\nexport const kFeatures = Symbol('sdk-features')\nexport const kFeatureInit = Symbol('sdk-features:initFeature')\nexport const kFeatureUpdate = Symbol('sdk-features:updateFeature')\nexport const kFeatureDestroy = Symbol('sdk-features:destroyFeature')\n\nexport const kStore = Symbol('sdk-store')\nexport const kStoreSubscribe = Symbol('sdk-store:storeSubscribe')\nexport const kStoreUnsubscribe = Symbol('sdk-store:storeUnsubscribe')\n"],"names":["kAuth","Symbol","kFeatures","kFeatureInit","kFeatureUpdate","kFeatureDestroy","kStore","kStoreSubscribe","kStoreUnsubscribe"],"mappings":"AAAA,OAAO,MAAMA,QAAQC,OAAO,YAAW;AAEvC,OAAO,MAAMC,YAAYD,OAAO,gBAAe;AAC/C,OAAO,MAAME,eAAeF,OAAO,4BAA2B;AAC9D,OAAO,MAAMG,iBAAiBH,OAAO,8BAA6B;AAClE,OAAO,MAAMI,kBAAkBJ,OAAO,+BAA8B;AAEpE,OAAO,MAAMK,SAASL,OAAO,aAAY;AACzC,OAAO,MAAMM,kBAAkBN,OAAO,4BAA2B;AACjE,OAAO,MAAMO,oBAAoBP,OAAO,8BAA6B"}