@streamlayer/sdk-web-core
Advanced tools
Comparing version 0.15.1 to 0.16.0
@@ -12,12 +12,39 @@ import { AbstractAuthenticationProvider } from '@streamlayer/sdk-web-interfaces'; | ||
private readonly transport; | ||
private readonly $bypassLogin; | ||
private readonly bypassLogin; | ||
constructor(store: CoreStore, transport: Transport); | ||
me: () => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User | undefined>; | ||
login: (schema: string, userKey: string) => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User | undefined>; | ||
/** | ||
* Login user by token and schema. | ||
* On success, save the user and update the token to the Transport, UserStore and cache. | ||
* @param schema - schema created by the host app and provided to the StreamLayer SDK. | ||
* @param userKey - user token received from the host app. | ||
*/ | ||
login: (schema: string, userKey: string) => Promise<string>; | ||
isAuthenticated: () => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User | undefined>; | ||
/** | ||
* Logout user. Clears the all user data from the store. | ||
*/ | ||
logout: () => void; | ||
/** | ||
* subscribe to user store and set auth header to the Transport on user update | ||
* Soft logout, only clears the StreamLayer user data from the store. | ||
* Does not clear the external token. And automatically tries to re-login by external token. | ||
*/ | ||
private subscribe; | ||
softLogout: () => void; | ||
/** | ||
* Try to re-login. | ||
* - If the user has an token, then try to login by it, by calling the me() method. | ||
* - If the user has an external token, then try to login by it, by calling the login() method. On failure, logout. | ||
* - | ||
* - If no one of the above is true, then logout. | ||
*/ | ||
reLogin: () => Promise<import("@streamlayer/sl-eslib/users/users_common_pb").User | undefined> | undefined; | ||
/** | ||
* Write token to the Transport and UserStore | ||
*/ | ||
private saveToken; | ||
/** | ||
* Add interceptor to the Transport to handle 401 and 403 errors. | ||
* If the user is logged in (auth header is set), then make a soft logout. | ||
*/ | ||
private connect; | ||
} |
import { AbstractAuthenticationProvider } from '@streamlayer/sdk-web-interfaces'; | ||
import { queries } from '@streamlayer/sdk-web-api'; | ||
import { UserStorage } from '../../storage'; | ||
/** | ||
@@ -11,3 +12,3 @@ * An authorization service manages user access by providing login, logout, | ||
transport; | ||
$bypassLogin; | ||
bypassLogin; | ||
constructor(store, transport) { | ||
@@ -17,13 +18,26 @@ super(); | ||
this.transport = transport; | ||
this.$bypassLogin = queries.$bypassLogin(this.transport); | ||
this.subscribe(); | ||
this.bypassLogin = queries.bypassLogin(this.transport); | ||
this.connect(); | ||
} | ||
me = async () => { | ||
this.$coreStore.getValues().user.invalidate(); | ||
const res = await this.$coreStore.getValues().user.getValue(); | ||
return res?.data; | ||
}; | ||
/** | ||
* Login user by token and schema. | ||
* On success, save the user and update the token to the Transport, UserStore and cache. | ||
* @param schema - schema created by the host app and provided to the StreamLayer SDK. | ||
* @param userKey - user token received from the host app. | ||
*/ | ||
login = async (schema, userKey) => { | ||
this.$coreStore.getValues().userKey.setValue(userKey); | ||
await this.$bypassLogin.mutate({ schema, userKey, init: false }); | ||
return this.me(); | ||
const user = await this.bypassLogin({ schema, userKey, init: false }); | ||
const token = user.meta?.jwt; | ||
if (!token) { | ||
throw new Error('internal: token missing'); | ||
} | ||
this.$coreStore.getValues().user.getStore().mutate(user); | ||
this.saveToken(token); | ||
return token; | ||
}; | ||
@@ -33,2 +47,5 @@ isAuthenticated = () => { | ||
}; | ||
/** | ||
* Logout user. Clears the all user data from the store. | ||
*/ | ||
logout = () => { | ||
@@ -39,14 +56,74 @@ this.$coreStore.getValues().user.setValue(); | ||
this.transport.setAuth(''); | ||
const storage = new UserStorage(); | ||
storage.clear(); | ||
}; | ||
/** | ||
* subscribe to user store and set auth header to the Transport on user update | ||
* Soft logout, only clears the StreamLayer user data from the store. | ||
* Does not clear the external token. And automatically tries to re-login by external token. | ||
*/ | ||
subscribe = () => { | ||
this.$bypassLogin.subscribe((user, key) => { | ||
if (key === 'data') { | ||
this.transport.setAuth(user?.data?.meta?.jwt); | ||
this.$coreStore.getValues().userToken.setValue(user?.data?.meta?.jwt); | ||
softLogout = () => { | ||
const storage = new UserStorage(); | ||
this.$coreStore.getValues().user.setValue(); | ||
this.$coreStore.getValues().userToken.setValue(); | ||
this.transport.setAuth(''); | ||
storage.setToken(''); | ||
void this.reLogin(); | ||
}; | ||
/** | ||
* Try to re-login. | ||
* - If the user has an token, then try to login by it, by calling the me() method. | ||
* - If the user has an external token, then try to login by it, by calling the login() method. On failure, logout. | ||
* - | ||
* - If no one of the above is true, then logout. | ||
*/ | ||
reLogin = () => { | ||
const storage = new UserStorage(); | ||
const prevUserToken = storage.getToken(); | ||
const prevUserExternalToken = storage.getExternalToken(); | ||
this.$coreStore.getValues().userKey.setValue(prevUserExternalToken); | ||
this.$coreStore.getValues().userToken.setValue(prevUserToken); | ||
if (prevUserToken) { | ||
this.saveToken(prevUserToken); | ||
return this.me(); | ||
} | ||
if (prevUserExternalToken && !prevUserToken) { | ||
const prevUserSchema = storage.getSchema(); | ||
if (prevUserSchema && prevUserExternalToken) { | ||
this.login(prevUserSchema, prevUserExternalToken).catch(() => { | ||
this.logout(); | ||
}); | ||
} | ||
} | ||
return undefined; | ||
}; | ||
/** | ||
* Write token to the Transport and UserStore | ||
*/ | ||
saveToken = (token) => { | ||
this.transport.setAuth(token); | ||
this.$coreStore.getValues().userToken.setValue(token); | ||
const storage = new UserStorage(); | ||
storage.setToken(token); | ||
}; | ||
/** | ||
* Add interceptor to the Transport to handle 401 and 403 errors. | ||
* If the user is logged in (auth header is set), then make a soft logout. | ||
*/ | ||
connect = () => { | ||
this.transport.registerInterceptor((next) => async (req) => { | ||
try { | ||
return await next(req); | ||
} | ||
catch (err) { | ||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment | ||
// @ts-ignore | ||
if (err.code && (err.code === 7 || err.code === 16)) { | ||
if (this.transport.getHeader('authorization')) { | ||
this.softLogout(); | ||
} | ||
} | ||
throw err; | ||
} | ||
}); | ||
}; | ||
} |
@@ -15,2 +15,6 @@ import { StreamLayerContext } from '@streamlayer/sdk-web-interfaces'; | ||
} | ||
/** | ||
* Bypass authorization, used for login with external token. | ||
* Automatically login user if SDK initialized and READY. | ||
*/ | ||
export declare const bypass: (instance: StreamLayerContext, opts: unknown, done: () => void) => void; |
import { CoreStatus } from '../store/store'; | ||
import { UserStorage } from '../storage'; | ||
import { BypassAuth } from './bypass'; | ||
const storage = new UserStorage(); | ||
/** | ||
* Bypass authorization, used for login with external token. | ||
* Automatically login user if SDK initialized and READY. | ||
*/ | ||
export const bypass = (instance, opts, done) => { | ||
instance.auth = new BypassAuth(instance.store, instance.transport); | ||
const storage = new UserStorage(); | ||
instance.stores.status.listen(async (status) => { | ||
instance.stores.status.listen((status) => { | ||
if (status === CoreStatus.READY) { | ||
const prevUserSchema = storage.getSchema(); | ||
const prevUserToken = storage.getToken(); | ||
if (prevUserSchema && prevUserToken) { | ||
await instance.auth.login(prevUserSchema, prevUserToken); | ||
} | ||
void instance.auth.reLogin(); | ||
} | ||
@@ -18,7 +18,8 @@ }); | ||
await instance.auth.login(schema, userKey); | ||
// ToDo: implement right cache user keys | ||
storage.setSchema('streamlayer:streamlayer'); | ||
storage.setSchema(schema); | ||
storage.setExternalToken(userKey); | ||
}; | ||
instance.sdk.logout = () => { | ||
instance.auth.logout(); | ||
storage.clear(); | ||
}; | ||
@@ -25,0 +26,0 @@ instance.sdk.getUserStore = () => { |
@@ -8,4 +8,5 @@ import { Storage } from '@streamlayer/sdk-web-storage'; | ||
getToken: () => string | undefined; | ||
setExternalToken: (value: string) => void; | ||
getExternalToken: () => string | undefined; | ||
removeToken: () => void; | ||
clearNotification: () => void; | ||
} |
@@ -5,2 +5,3 @@ import { Storage } from '@streamlayer/sdk-web-storage'; | ||
KEY_PREFIX["SCHEMA"] = "schema"; | ||
KEY_PREFIX["EXTERNAL_TOKEN"] = "eToken"; | ||
KEY_PREFIX["TOKEN"] = "token"; | ||
@@ -26,8 +27,12 @@ })(KEY_PREFIX || (KEY_PREFIX = {})); | ||
}; | ||
// External Token | ||
setExternalToken = (value) => { | ||
this.write(KEY_PREFIX.EXTERNAL_TOKEN, value); | ||
}; | ||
getExternalToken = () => { | ||
return this.read(KEY_PREFIX.EXTERNAL_TOKEN); | ||
}; | ||
removeToken = () => { | ||
this.remove(KEY_PREFIX.TOKEN); | ||
}; | ||
clearNotification = () => { | ||
this.clear(); | ||
}; | ||
} |
import type { OrganizationAdvertising, StreamSettings, OrganizationSettings, User, UserSettings } from '@streamlayer/sdk-web-types'; | ||
import { AbstractStore, SingleStore, ApiStore } from '@streamlayer/sdk-web-interfaces'; | ||
import { AbstractStore } from '@streamlayer/sdk-web-interfaces'; | ||
import { Transport } from '@streamlayer/sdk-web-api'; | ||
import { ReadableAtom } from 'nanostores'; | ||
import { FetcherValue } from '@nanostores/query'; | ||
export declare enum CoreStatus { | ||
DISABLED = "disabled", | ||
INITIALIZATION = "initialization", | ||
READY = "ready", | ||
FAILED = "failed", | ||
SUSPENDED = "suspended" | ||
} | ||
import { initializeStore, CoreStatus } from './init'; | ||
export { CoreStatus }; | ||
export interface CoreStoreInterface { | ||
@@ -28,47 +23,2 @@ enabled?: 'on'; | ||
} | ||
declare const initializeStore: (transport: Transport) => { | ||
readonly enabled: SingleStore<unknown, import("nanostores").WritableAtom<"on" | undefined>>; | ||
readonly status: SingleStore<unknown, import("nanostores").WritableAtom<CoreStatus>>; | ||
readonly providerStreamId: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>; | ||
readonly slStreamId: ApiStore<string | undefined, import("@nanostores/query").FetcherStore<string | undefined, any>>; | ||
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, any>>; | ||
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, any>>; | ||
readonly userKey: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>; | ||
readonly userToken: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>; | ||
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, any>>; | ||
readonly organizationSettings: ApiStore<{ | ||
id: string; | ||
overlays?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[] | undefined; | ||
buttonIcon?: string | undefined; | ||
tinodeHost?: string | undefined; | ||
audience?: string | undefined; | ||
name?: string | undefined; | ||
provider?: string | undefined; | ||
primaryColor?: string | undefined; | ||
secondaryColor?: string | undefined; | ||
moderationPrimaryColor?: string | undefined; | ||
linkShareIcon?: string | undefined; | ||
linkShareText?: string | undefined; | ||
brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults | undefined; | ||
pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK | undefined; | ||
getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient | undefined; | ||
} | undefined, import("@nanostores/query").FetcherStore<{ | ||
id: string; | ||
overlays?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[] | undefined; | ||
buttonIcon?: string | undefined; | ||
tinodeHost?: string | undefined; | ||
audience?: string | undefined; | ||
name?: string | undefined; | ||
provider?: string | undefined; | ||
primaryColor?: string | undefined; | ||
secondaryColor?: string | undefined; | ||
moderationPrimaryColor?: string | undefined; | ||
linkShareIcon?: string | undefined; | ||
linkShareText?: string | undefined; | ||
brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults | undefined; | ||
pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK | undefined; | ||
getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient | undefined; | ||
} | undefined, any>>; | ||
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, any>>; | ||
}; | ||
export type StoreObj = ReturnType<typeof initializeStore>; | ||
@@ -83,3 +33,15 @@ export type CoreStores = { | ||
/** | ||
* @description main app store | ||
* @description `CoreStore` is a store that contains all the necessary data for the SDK to work. | ||
* `CoreStore` is a singleton and is created when the SDK is initialized. It includes the following stores: | ||
* - `enabled` - the status of the SDK. The SDK is enabled when the `on` value is set. | ||
* - `status` - the status of the SDK. Can be one of the following values: `disabled`, `initialization`, `ready`, `failed`, `suspended`. | ||
* - `userKey` - the user key provided by the host. | ||
* - `userToken` - the user token received from the StreamLayer after login. | ||
* - `organizationSettings` - the organization settings. | ||
* - `organizationAdvertising` - the organization advertising. | ||
* - `streamSettings` - the stream settings. | ||
* - `user` - the user data. | ||
* - `userSettings` - the user settings. | ||
* - `providerStreamId` - the event id provided by the host. | ||
* - `slStreamId` - the event id received from the StreamLayer, resolved by the `providerStreamId`. | ||
*/ | ||
@@ -91,12 +53,12 @@ export declare class CoreStore extends AbstractStore<CoreStoreInstance> { | ||
getValues(): { | ||
readonly enabled: SingleStore<unknown, import("nanostores").WritableAtom<"on" | undefined>>; | ||
readonly status: SingleStore<unknown, import("nanostores").WritableAtom<CoreStatus>>; | ||
readonly providerStreamId: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>; | ||
readonly slStreamId: ApiStore<string | undefined, import("@nanostores/query").FetcherStore<string | undefined, any>>; | ||
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, any>>; | ||
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, any>>; | ||
readonly userKey: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>; | ||
readonly userToken: SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>; | ||
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, any>>; | ||
readonly organizationSettings: ApiStore<{ | ||
readonly enabled: import("@streamlayer/sdk-web-interfaces").SingleStore<unknown, import("nanostores").WritableAtom<"on" | undefined>>; | ||
readonly status: import("@streamlayer/sdk-web-interfaces").SingleStore<unknown, import("nanostores").WritableAtom<CoreStatus>>; | ||
readonly providerStreamId: import("@streamlayer/sdk-web-interfaces").SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>; | ||
readonly slStreamId: import("@streamlayer/sdk-web-interfaces").ApiStore<string | undefined, import("@nanostores/query").FetcherStore<string | undefined, any>>; | ||
readonly streamSettings: import("@streamlayer/sdk-web-interfaces").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, any>>; | ||
readonly user: import("@streamlayer/sdk-web-interfaces").ApiStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse | undefined, import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse | undefined, any>>; | ||
readonly userKey: import("@streamlayer/sdk-web-interfaces").SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>; | ||
readonly userToken: import("@streamlayer/sdk-web-interfaces").SingleStore<unknown, import("nanostores").WritableAtom<string | undefined>>; | ||
readonly userSettings: import("@streamlayer/sdk-web-interfaces").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, any>>; | ||
readonly organizationSettings: import("@streamlayer/sdk-web-interfaces").ApiStore<{ | ||
id: string; | ||
@@ -134,3 +96,3 @@ overlays?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[] | undefined; | ||
} | undefined, any>>; | ||
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, any>>; | ||
readonly organizationAdvertising: import("@streamlayer/sdk-web-interfaces").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, any>>; | ||
}; | ||
@@ -144,2 +106,1 @@ setValue(): void; | ||
}; | ||
export {}; |
@@ -1,65 +0,18 @@ | ||
import { AbstractStore, createSingleStore, SingleStore, mergeStores, ApiStore } from '@streamlayer/sdk-web-interfaces'; | ||
import { queries } from '@streamlayer/sdk-web-api'; | ||
import { UserStorage } from '../storage'; | ||
export var CoreStatus; | ||
(function (CoreStatus) { | ||
CoreStatus["DISABLED"] = "disabled"; | ||
CoreStatus["INITIALIZATION"] = "initialization"; | ||
CoreStatus["READY"] = "ready"; | ||
CoreStatus["FAILED"] = "failed"; | ||
CoreStatus["SUSPENDED"] = "suspended"; | ||
})(CoreStatus || (CoreStatus = {})); | ||
const initializeStore = (transport) => { | ||
// sdk toggle | ||
const enabled = new SingleStore(createSingleStore(undefined), 'enabled'); | ||
// sdk status | ||
const status = new SingleStore(createSingleStore(CoreStatus.DISABLED), 'status'); | ||
// host user key | ||
const userKey = new SingleStore(createSingleStore(undefined), 'userKey'); | ||
// sl user key | ||
const userToken = new SingleStore(createSingleStore(undefined), 'userToken'); | ||
const storage = new UserStorage(); | ||
userToken.listen((token) => { | ||
if (token) { | ||
storage.setToken(token); | ||
} | ||
else { | ||
storage.removeToken(); | ||
} | ||
}); | ||
// host event id | ||
const providerStreamId = new SingleStore(createSingleStore(undefined), 'providerStreamId'); | ||
// sl event id | ||
const slStreamId = new ApiStore(queries.$retrieveEventId(providerStreamId.getStore(), transport), 'slStreamId', (data) => data?.data); | ||
// sl user data | ||
const user = new ApiStore(queries.$user(userToken.getStore(), transport), 'user', (data) => data?.data?.data?.id); | ||
// sl user settings | ||
const userSettings = new ApiStore(queries.$userSettings(userToken.getStore(), transport), 'userSettings'); | ||
// sl stream settings | ||
const streamSettings = new ApiStore(queries.$streamSettings(slStreamId.getAtomStore(), transport), 'streamSettings'); | ||
slStreamId.getAtomStore().listen((eventId) => { | ||
if (eventId === '' || eventId === undefined) { | ||
streamSettings.getStore().mutate(undefined); | ||
} | ||
}); | ||
// sl organization settings | ||
const organizationSettings = new ApiStore(queries.$organizationSettings(enabled.getStore(), transport), 'organizationSettings', (data) => data?.data?.id); | ||
// sl organization advertising | ||
const organizationAdvertising = new ApiStore(queries.$organizationAdvertising(organizationSettings.getAtomStore(), transport), 'organizationAdvertising'); | ||
return { | ||
enabled, | ||
status, | ||
providerStreamId, | ||
slStreamId, | ||
streamSettings, | ||
user, | ||
userKey, | ||
userToken, | ||
userSettings, | ||
organizationSettings, | ||
organizationAdvertising, | ||
}; | ||
}; | ||
import { AbstractStore, mergeStores } from '@streamlayer/sdk-web-interfaces'; | ||
import { initializeStore, CoreStatus } from './init'; | ||
export { CoreStatus }; | ||
/** | ||
* @description main app store | ||
* @description `CoreStore` is a store that contains all the necessary data for the SDK to work. | ||
* `CoreStore` is a singleton and is created when the SDK is initialized. It includes the following stores: | ||
* - `enabled` - the status of the SDK. The SDK is enabled when the `on` value is set. | ||
* - `status` - the status of the SDK. Can be one of the following values: `disabled`, `initialization`, `ready`, `failed`, `suspended`. | ||
* - `userKey` - the user key provided by the host. | ||
* - `userToken` - the user token received from the StreamLayer after login. | ||
* - `organizationSettings` - the organization settings. | ||
* - `organizationAdvertising` - the organization advertising. | ||
* - `streamSettings` - the stream settings. | ||
* - `user` - the user data. | ||
* - `userSettings` - the user settings. | ||
* - `providerStreamId` - the event id provided by the host. | ||
* - `slStreamId` - the event id received from the StreamLayer, resolved by the `providerStreamId`. | ||
*/ | ||
@@ -66,0 +19,0 @@ export class CoreStore extends AbstractStore { |
@@ -12,3 +12,3 @@ { | ||
"@streamlayer/sdk-web-storage": "^0.3.7", | ||
"@streamlayer/sdk-web-api": "^0.0.7", | ||
"@streamlayer/sdk-web-api": "^0.1.0", | ||
"@streamlayer/sdk-web-types": "^0.16.5" | ||
@@ -43,3 +43,3 @@ }, | ||
}, | ||
"version": "0.15.1", | ||
"version": "0.16.0", | ||
"type": "module", | ||
@@ -46,0 +46,0 @@ "main": "./lib/index.js", |
32576
20
690