/
githubmirror
/
babel
Обзор
Документация
Войти
/
githubmirror
/
babel
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/babel-traverse/src/path/comments.ts
76 строк
2 KB
liuxingbaoyu
Enable `strictFunctionTypes` (#17946)
22 май 2026, 17:12
Не верифицирован
22 май 2026, 17:12
c6d71f3
Код
Авторство
О чём код?
// This file contains methods responsible for dealing with comments. import type * as t from "@babel/types"; import type NodePath from "./index.ts"; import { addComment as _addComment, addComments as _addComments, } from "@babel/types"; /** * Share comments amongst siblings. */ export function shareCommentsWithSiblings(this: NodePath<t.Node | null>) { // NOTE: this assumes numbered keys if (typeof this.key === "string") return; const node = this.node; if (!node) return; const trailing = node.trailingComments; const leading = node.leadingComments; if (!trailing && !leading) return; const prev = this.getSibling(this.key! - 1); const next = this.getSibling(this.key! + 1); const hasPrev = !!prev.node; const hasNext = !!next.node; if (hasPrev) { if (leading) { prev.addComments( "trailing", removeIfExisting(leading, prev.node.trailingComments), ); } if (trailing && !hasNext) prev.addComments("trailing", trailing); } if (hasNext) { if (trailing) { next.addComments( "leading", removeIfExisting(trailing, next.node.leadingComments), ); } if (leading && !hasPrev) next.addComments("leading", leading); } } function removeIfExisting<T>(list: T[], toRemove?: T[] | null): T[] { if (!toRemove?.length) return list; const set = new Set(toRemove); return list.filter(el => { return !set.has(el); }); } export function addComment( this: NodePath, type: t.CommentTypeShorthand, content: string, line?: boolean, ) { _addComment(this.node, type, content, line); } /** * Give node `comments` of the specified `type`. */ export function addComments( this: NodePath, type: t.CommentTypeShorthand, comments: t.Comment[], ) { _addComments(this.node, type, comments); }