## API Report File for "@backstage/plugin-catalog-backend-module-ldap"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts
import { CatalogProcessor } from '@backstage/plugin-catalog-backend';
import { CatalogProcessorEmit } from '@backstage/plugin-catalog-backend';
import { Client } from 'ldapjs';
import { Config } from '@backstage/config';
import { EntityProvider } from '@backstage/plugin-catalog-backend';
import { EntityProviderConnection } from '@backstage/plugin-catalog-backend';
import { GroupEntity } from '@backstage/catalog-model';
import { JsonValue } from '@backstage/config';
import { LocationSpec } from '@backstage/catalog-model';
import { Logger as Logger_2 } from 'winston';
import { SearchEntry } from 'ldapjs';
import { SearchOptions } from 'ldapjs';
import { UserEntity } from '@backstage/catalog-model';

// Warning: (ae-missing-release-tag) "defaultGroupTransformer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function defaultGroupTransformer(
  vendor: LdapVendor,
  config: GroupConfig,
  entry: SearchEntry,
): Promise<GroupEntity | undefined>;

// Warning: (ae-missing-release-tag) "defaultUserTransformer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function defaultUserTransformer(
  vendor: LdapVendor,
  config: UserConfig,
  entry: SearchEntry,
): Promise<UserEntity | undefined>;

// Warning: (ae-missing-release-tag) "GroupConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type GroupConfig = {
  dn: string;
  options: SearchOptions;
  set?: {
    [path: string]: JsonValue;
  };
  map: {
    rdn: string;
    name: string;
    description: string;
    type: string;
    displayName: string;
    email?: string;
    picture?: string;
    memberOf: string;
    members: string;
  };
};

// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-undefined-tag) The TSDoc tag "@return" is not defined in this configuration
// Warning: (ae-missing-release-tag) "GroupTransformer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type GroupTransformer = (
  vendor: LdapVendor,
  config: GroupConfig,
  group: SearchEntry,
) => Promise<GroupEntity | undefined>;

// Warning: (ae-missing-release-tag) "LDAP_DN_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export const LDAP_DN_ANNOTATION = 'backstage.io/ldap-dn';

// Warning: (ae-missing-release-tag) "LDAP_RDN_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export const LDAP_RDN_ANNOTATION = 'backstage.io/ldap-rdn';

// Warning: (ae-missing-release-tag) "LDAP_UUID_ANNOTATION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export const LDAP_UUID_ANNOTATION = 'backstage.io/ldap-uuid';

// Warning: (ae-missing-release-tag) "LdapClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class LdapClient {
  constructor(client: Client, logger: Logger_2);
  // Warning: (ae-forgotten-export) The symbol "BindConfig" needs to be exported by the entry point index.d.ts
  //
  // (undocumented)
  static create(
    logger: Logger_2,
    target: string,
    bind?: BindConfig,
  ): Promise<LdapClient>;
  getRootDSE(): Promise<SearchEntry | undefined>;
  getVendor(): Promise<LdapVendor>;
  // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
  // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
  search(dn: string, options: SearchOptions): Promise<SearchEntry[]>;
  // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
  // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
  // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
  // Warning: (ae-forgotten-export) The symbol "SearchCallback" needs to be exported by the entry point index.d.ts
  searchStreaming(
    dn: string,
    options: SearchOptions,
    f: SearchCallback,
  ): Promise<void>;
}

// Warning: (ae-missing-release-tag) "LdapOrgEntityProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class LdapOrgEntityProvider implements EntityProvider {
  constructor(options: {
    id: string;
    provider: LdapProviderConfig;
    logger: Logger_2;
    userTransformer?: UserTransformer;
    groupTransformer?: GroupTransformer;
  });
  // (undocumented)
  connect(connection: EntityProviderConnection): Promise<void>;
  // (undocumented)
  static fromConfig(
    configRoot: Config,
    options: {
      id: string;
      target: string;
      userTransformer?: UserTransformer;
      groupTransformer?: GroupTransformer;
      logger: Logger_2;
    },
  ): LdapOrgEntityProvider;
  // (undocumented)
  getProviderName(): string;
  // (undocumented)
  read(): Promise<void>;
}

// Warning: (ae-missing-release-tag) "LdapOrgReaderProcessor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class LdapOrgReaderProcessor implements CatalogProcessor {
  constructor(options: {
    providers: LdapProviderConfig[];
    logger: Logger_2;
    groupTransformer?: GroupTransformer;
    userTransformer?: UserTransformer;
  });
  // (undocumented)
  static fromConfig(
    config: Config,
    options: {
      logger: Logger_2;
      groupTransformer?: GroupTransformer;
      userTransformer?: UserTransformer;
    },
  ): LdapOrgReaderProcessor;
  // (undocumented)
  readLocation(
    location: LocationSpec,
    _optional: boolean,
    emit: CatalogProcessorEmit,
  ): Promise<boolean>;
}

// Warning: (ae-missing-release-tag) "LdapProviderConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type LdapProviderConfig = {
  target: string;
  bind?: BindConfig;
  users: UserConfig;
  groups: GroupConfig;
};

// Warning: (ae-missing-release-tag) "LdapVendor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type LdapVendor = {
  dnAttributeName: string;
  uuidAttributeName: string;
  decodeStringAttribute: (entry: SearchEntry, name: string) => string[];
};

// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (ae-missing-release-tag) "mapStringAttr" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function mapStringAttr(
  entry: SearchEntry,
  vendor: LdapVendor,
  attributeName: string | undefined,
  setter: (value: string) => void,
): void;

// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (ae-missing-release-tag) "readLdapConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function readLdapConfig(config: Config): LdapProviderConfig[];

// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (ae-missing-release-tag) "readLdapOrg" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function readLdapOrg(
  client: LdapClient,
  userConfig: UserConfig,
  groupConfig: GroupConfig,
  options: {
    groupTransformer?: GroupTransformer;
    userTransformer?: UserTransformer;
    logger: Logger_2;
  },
): Promise<{
  users: UserEntity[];
  groups: GroupEntity[];
}>;

// Warning: (ae-missing-release-tag) "UserConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type UserConfig = {
  dn: string;
  options: SearchOptions;
  set?: {
    [path: string]: JsonValue;
  };
  map: {
    rdn: string;
    name: string;
    description?: string;
    displayName: string;
    email: string;
    picture?: string;
    memberOf: string;
  };
};

// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-undefined-tag) The TSDoc tag "@return" is not defined in this configuration
// Warning: (ae-missing-release-tag) "UserTransformer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type UserTransformer = (
  vendor: LdapVendor,
  config: UserConfig,
  user: SearchEntry,
) => Promise<UserEntity | undefined>;

// Warnings were encountered during analysis:
//
// src/ldap/vendors.d.ts:17:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// src/ldap/vendors.d.ts:18:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
```
