constructor()

in lex-web-ui/src/lex-web-ui.js [112:178]


  constructor(config = {}) {
    const mergedConfig = mergeConfig(defaultConfig, config);

    const VueConstructor = (window.Vue) ? window.Vue : Vue;
    if (!VueConstructor) {
      throw new Error('unable to find Vue');
    }

    const VuexConstructor = (window.Vuex) ? window.Vuex : Vuex;
    if (!VuexConstructor) {
      throw new Error('unable to find Vuex');
    }

    const AWSConfigConstructor = (window.AWS && window.AWS.Config) ?
      window.AWS.Config :
      AWSConfig;

    const CognitoConstructor =
      (window.AWS && window.AWS.CognitoIdentityCredentials) ?
        window.AWS.CognitoIdentityCredentials :
        CognitoIdentityCredentials;

    const PollyConstructor = (window.AWS && window.AWS.Polly) ?
      window.AWS.Polly :
      Polly;

    const LexRuntimeConstructor = (window.AWS && window.AWS.LexRuntime) ?
      window.AWS.LexRuntime :
      LexRuntime;

    const LexRuntimeConstructorV2 = (window.AWS && window.AWS.LexRuntimeV2) ?
      window.AWS.LexRuntimeV2 :
      LexRuntimeV2;

    if (!AWSConfigConstructor || !CognitoConstructor || !PollyConstructor
        || !LexRuntimeConstructor || !LexRuntimeConstructorV2) {
      throw new Error('unable to find AWS SDK');
    }

    const credentials = new CognitoConstructor(
      { IdentityPoolId: mergedConfig.cognito.poolId },
      { region: mergedConfig.region || mergedConfig.cognito.poolId.split(':')[0] || 'us-east-1' },
    );

    const awsConfig = new AWSConfigConstructor({
      region: mergedConfig.region || mergedConfig.cognito.poolId.split(':')[0] || 'us-east-1',
      credentials,
    });

    const lexRuntimeClient = new LexRuntimeConstructor(awsConfig);
    const lexRuntimeV2Client = new LexRuntimeConstructorV2(awsConfig);
    /* eslint-disable no-console */
    const pollyClient = (
      typeof mergedConfig.recorder === 'undefined' ||
      (mergedConfig.recorder && mergedConfig.recorder.enable !== false)
    ) ? new PollyConstructor(awsConfig) : null;

    this.store = new VuexConstructor.Store({ ...VuexStore });

    VueConstructor.use(Plugin, {
      config: mergedConfig,
      awsConfig,
      lexRuntimeClient,
      lexRuntimeV2Client,
      pollyClient,
    });
  }