Skip to content

Commit ad56372

Browse files
committed
respect google closure syntax (properly)
1 parent b46e436 commit ad56372

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

index.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -201,17 +201,23 @@ exports.astNodeVisitor = {
201201
node.comments.forEach(comment => {
202202
// Replace local types with the full `module:` path
203203
Object.keys(identifiers).forEach(key => {
204-
const regex = new RegExp(`@(event |fires |.*[{<|,] ?!?)${key}([}>|,\\s])`, 'g');
204+
const eventRegex = new RegExp(`@(event |fires )${key}(\\s*)`, 'g');
205+
replace(eventRegex);
205206

206-
if (regex.test(comment.value)) {
207-
const identifier = identifiers[key];
208-
const absolutePath = path.resolve(path.dirname(currentSourceName), identifier.value);
209-
const moduleId = path.relative(path.join(process.cwd(), moduleRoot), absolutePath).replace(/\.js$/, '');
210-
if (getModuleInfo(moduleId, parser)) {
211-
const exportName = identifier.defaultImport ? getDefaultExportName(moduleId, parser) : key;
212-
const delimiter = identifier.defaultImport ? '~' : getDelimiter(moduleId, exportName, parser);
213-
const replacement = `module:${moduleId.replace(slashRegEx, '/')}${exportName ? delimiter + exportName : ''}`;
214-
comment.value = comment.value.replace(regex, '@$1' + replacement + '$2');
207+
const typeRegex = new RegExp(`@(.*[{<|,]\\s*[!?]?)${key}(=?\\s*[}>|,])`, 'g');
208+
replace(typeRegex);
209+
210+
function replace(regex) {
211+
if (regex.test(comment.value)) {
212+
const identifier = identifiers[key];
213+
const absolutePath = path.resolve(path.dirname(currentSourceName), identifier.value);
214+
const moduleId = path.relative(path.join(process.cwd(), moduleRoot), absolutePath).replace(/\.js$/, '');
215+
if (getModuleInfo(moduleId, parser)) {
216+
const exportName = identifier.defaultImport ? getDefaultExportName(moduleId, parser) : key;
217+
const delimiter = identifier.defaultImport ? '~' : getDelimiter(moduleId, exportName, parser);
218+
let replacement = `module:${moduleId.replace(slashRegEx, '/')}${exportName ? delimiter + exportName : ''}`;
219+
comment.value = comment.value.replace(regex, '@$1' + replacement + '$2');
220+
}
215221
}
216222
}
217223
});

0 commit comments

Comments
 (0)