oidc-client-rx
Version:
ReactiveX enhanced OIDC and OAuth2 protocol support for browser-based JavaScript applications
30 lines (29 loc) • 1.05 kB
JavaScript
import { createContext, createMemo, mergeProps, splitProps, useContext } from "solid-js";
import { OidcSecurityService } from "../../oidc.security.service.js";
const InjectorContextVoidInjector = {
get: (_token, _notFoundValue)=>{
throw new Error("Please wrap with a InjectorContext.Provider first");
}
};
const InjectorContext = createContext(InjectorContextVoidInjector);
function InjectorProvider(props) {
const [local, others] = splitProps(props, [
"injector"
]);
const providerProps = mergeProps(others, {
value: local.injector
});
return InjectorContext.Provider(providerProps);
}
function useInjector() {
return useContext(InjectorContext);
}
function useOidcClient() {
const injector = useInjector();
const oidcSecurityService = createMemo(()=>injector.get(OidcSecurityService));
return {
injector,
oidcSecurityService: oidcSecurityService()
};
}
export { InjectorContext, InjectorContextVoidInjector, InjectorProvider, useInjector, useOidcClient };