all files / src/ plugin.ts

96.3% Statements 26/27
87.5% Branches 7/8
100% Functions 2/2
96.3% Lines 26/27
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71                                                                                          
import { FrameworkConfiguration, PLATFORM } from 'aurelia-framework';
import { UserManager } from 'oidc-client';
import OpenIdConnectConfiguration from './open-id-connect-configuration';
import OpenIdConnectConfigurationManager from './open-id-connect-configuration-manager';
import OpenIdConnectFactory from './open-id-connect-factory';
import OpenIdConnectLogger from './open-id-connect-logger';
 
export interface CallbackV19 extends Function {
  (): OpenIdConnectConfiguration;
}
 
export interface CallbackV18 extends Function {
  (config: OpenIdConnectConfiguration): void;
}
 
export type PluginCallback = CallbackV18 | CallbackV19;
 
const retrieveUserlandConfig = (callback?: PluginCallback): OpenIdConnectConfiguration => {
  let config = new OpenIdConnectConfiguration();
 
  if (!callback || callback.length > 1) {
    return config;
  }
 
  if (callback.length === 0) {
    config = (callback as CallbackV19)();
    return config;
  }
 
  (callback as CallbackV18)(config);
  return config;
};
 
export default function (
  frameworkConfig: FrameworkConfiguration,
  callback?: PluginCallback,
  factory?: OpenIdConnectFactory) {
 
  Iif (!factory) {
    factory = new OpenIdConnectFactory();
  }
 
  // register global resources
  frameworkConfig.globalResources([
    PLATFORM.moduleName('./open-id-connect-user-block'),
    PLATFORM.moduleName('./open-id-connect-user-debug'),
    PLATFORM.moduleName('./open-id-connect-navigation-filter'),
  ]);
 
  // retrieve user-land configuration
  const userConfig = retrieveUserlandConfig(callback);
 
  // register configuration
  const configManager = factory.createOpenIdConnectConfiguration(userConfig);
  frameworkConfig.container
    .registerInstance(OpenIdConnectConfigurationManager, configManager);
 
  // register logger
  const openIdConnectLogger = factory.createOpenIdConnectLogger(configManager.logLevel);
  frameworkConfig.container
    .registerInstance(OpenIdConnectLogger, openIdConnectLogger);
 
  // register userManager
  const userManager = factory.createUserManager(configManager.userManagerSettings);
  frameworkConfig.container
    .registerInstance(UserManager, userManager);
 
  // register window
  frameworkConfig.container.registerInstance(Window, window);
}