import path from 'path' ; const NAMESPACE_REGEX = /^@.*\//iu ; const prefix = 'commitlint-plugin' ; function convertPathToPosix ( filepath ) { const normalizedFilepath = path . normalize ( filepath ) ; const posixFilepath = normalizedFilepath . replace ( /\\/gu , '/' ) ; return posixFilepath ; } param { string } name returns { string } private export function normalizePackageName ( name ) { let normalizedName = name ; /**
     * On Windows, name can come in with Windows slashes instead of Unix slashes.
     * Normalize to Unix first to avoid errors later on.
     * https://github.com/eslint/eslint/issues/5644
     */ if ( normalizedName . indexOf ( '\\' ) > - 1 ) { normalizedName = convertPathToPosix ( normalizedName ) ; } if ( normalizedName . charAt ( 0 ) === '@' ) { /**
         * it's a scoped package
         * package name is the prefix, or just a username
         */ const scopedPackageShortcutRegex = new RegExp ( `^(@[^/]+)(?:/(?:${ prefix })?)?$` , 'u' ) , scopedPackageNameRegex = new RegExp ( `^${ prefix }(-|$)` , 'u' ) ; if ( scopedPackageShortcutRegex . test ( normalizedName ) ) { normalizedName = normalizedName . replace ( scopedPackageShortcutRegex , `$1/${ prefix }` ) ; } else if ( ! scopedPackageNameRegex . test ( normalizedName . split ( '/' ) [ 1 ] ) ) { /**
             * for scoped packages, insert the prefix after the first / unless
             * the path is already @scope/eslint or @scope/eslint-xxx-yyy
             */ normalizedName = normalizedName . replace ( /^@([^/]+)\/(.*)$/u , `@$1/${ prefix }-$2` ) ; } } else if ( normalizedName . indexOf ( `${ prefix }-` ) !== 0 ) { normalizedName = `${ prefix }-${ normalizedName }` ; } return normalizedName ; } param { string } fullname returns { string } export function getShorthandName ( fullname ) { if ( fullname [ 0 ] === '@' ) { let matchResult = new RegExp ( `^(@[^/]+)/${ prefix }$` , 'u' ) . exec ( fullname ) ; if ( matchResult ) { return matchResult [ 1 ] ; } matchResult = new RegExp ( `^(@[^/]+)/${ prefix }-(.+)$` , 'u' ) . exec ( fullname ) ; if ( matchResult ) { return `${ matchResult [ 1 ] }/${ matchResult [ 2 ] }` ; } } else if ( fullname . startsWith ( `${ prefix }-` ) ) { return fullname . slice ( prefix . length + 1 ) ; } return fullname ; } param { string } term returns { string } export function getNamespaceFromTerm ( term ) { const match = term . match ( NAMESPACE_REGEX ) ; return match ? match [ 0 ] : '' ; }