diff --git a/package.json b/package.json index 7e675c4..f64131d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "typescript-plugin-css-modules", - "version": "4.2.1", + "version": "4.2.2", "main": "dist/index.js", "author": "Brody McKee ", "license": "MIT", diff --git a/src/helpers/createDtsExports.ts b/src/helpers/createDtsExports.ts index 1e56210..faddecc 100644 --- a/src/helpers/createDtsExports.ts +++ b/src/helpers/createDtsExports.ts @@ -76,16 +76,30 @@ export default classes; .filter(([classname]) => isValidVariable(classname)); filteredClasses.forEach(([classname, originalClassname]) => { - const classRegexp = new RegExp(`${originalClassname}[\\s{]`, 'g'); - - const matchedLine = cssLines.findIndex((line) => classRegexp.test(line)); - const matchedColumn = - matchedLine && cssLines[matchedLine].indexOf(originalClassname); + let matchedLine; + let matchedColumn; + + for (let i = 0; i < cssLines.length; i++) { + const match = new RegExp( + // NOTE: This excludes any match not starting with: + // - `.` for classnames, + // - `:` or ` ` for animation names, + // and any matches followed by valid CSS selector characters. + `[:.\\s]${originalClassname}(?![_a-zA-Z0-9-])`, + 'g', + ).exec(cssLines[i]); + + if (match) { + matchedLine = i; + matchedColumn = match.index; + break; + } + } const { line: lineNumber } = smc.originalPositionFor({ // Lines start at 1, not 0. - line: matchedLine >= 0 ? matchedLine + 1 : 1, - column: matchedColumn >= 0 ? matchedColumn : 0, + line: matchedLine ? matchedLine + 1 : 1, + column: matchedColumn ? matchedColumn : 0, }); dtsLines[lineNumber ? lineNumber - 1 : 0] +=