code: def generate_navigator_js(os=None, navigator=None, platform=None,
                            device_type=None):
      
  
      config = generate_navigator(os=os, navigator=navigator,
                                  platform=platform,
                                  device_type=device_type)
      return {
          'appCodeName': config['app_code_name'],
          'appName': config['app_name'],
          'appVersion': config['app_version'],
          'platform': config['platform'],
          'userAgent': config['user_agent'],
          'oscpu': config['oscpu'],
          'product': config['product'],
          'productSub': config['product_sub'],
          'vendor': config['vendor'],
          'vendorSub': config['vendor_sub'],
          'buildID': config['build_id'],
      }
docs: Generates web navigator's config with keys corresponding
      to keys of `windows.navigator` JavaScript object.
  
      :param os: limit list of oses for generation
      :type os: string or list/tuple or None
      :param navigator: limit list of browser engines for generation
      :type navigator: string or list/tuple or None
      :param device_type: limit possible oses by device type
      :type device_type: list/tuple or None, possible values:
          "desktop", "smartphone", "tablet", "all"
      :return: User-Agent config
      :rtype: dict with keys (TODO)
      :raises InvalidOption: if could not generate user-agent for
          any combination of allowed oses and navigators
      :raise InvalidOption: if any of passed options is invalid