export function module()

in src/module-utils.ts [33:54]


export function module(type: reflect.Type): ImportedModule {
  const parts = analyzeTypeName(type);

  if (parts.submoduleNameParts.length > 0) {
    const specialNameKey = [parts.assemblyName, ...parts.submoduleNameParts].join('.');

    const importName = SPECIAL_NAMESPACE_IMPORT_NAMES[specialNameKey] ?? parts.submoduleNameParts.join('.');
    return {
      importName: escapeIdentifier(importName.replace(/^aws_/g, '').replace(/[^a-z0-9_]/g, '_')),
      moduleName: parts.assemblyName,
      submoduleName: parts.submoduleNameParts.join('.'),
    };
  }

  // Split '@aws-cdk/aws-s3' into ['@aws-cdk', 'aws-s3']
  const slashParts = type.assembly.name.split('/');
  const nonNamespacedPart = SPECIAL_PACKAGE_ROOT_IMPORT_NAMES[parts.assemblyName] ?? slashParts[1] ?? slashParts[0];
  return {
    importName: escapeIdentifier(nonNamespacedPart.replace(/^aws-/g, '').replace(/[^a-z0-9_]/g, '_')),
    moduleName: type.assembly.name,
  };
}