Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
@es-joy/jsdoccomment
Advanced tools
Maintained replacement for ESLint's deprecated SourceCode#getJSDocComment along with other jsdoc utilities
This project aims to preserve and expand upon the
SourceCode#getJSDocComment
functionality of the deprecated ESLint method.
It also exports a number of functions currently for working with JSDoc:
parseComment
For parsing comment-parser
in a JSDoc-specific manner.
Might wish to have tags with or without tags, etc. derived from a split off
JSON file.
commentParserToESTree
Converts comment-parser AST to ESTree/ESLint/Babel friendly AST. See the "ESLint AST..." section below.
estreeToString
Stringifies. In addition to the node argument, it accepts an optional second
options object with a single preferRawType
key. If you don't need to modify
JSDoc type AST, you might wish to set this to true
to get the benefits of
preserving the raw form, but for AST-based stringification of JSDoc types,
keep it false
(the default).
jsdocVisitorKeys
The VisitorKeys
for JsdocBlock
, JsdocDescriptionLine
, and JsdocTag
. More likely to be
subject to change or dropped in favor of another type parser.
jsdocTypeVisitorKeys
Just a re-export of VisitorKeys
from jsdoc-type-pratt-parser
.
getDefaultTagStructureForMode
Provides info on JSDoc tags:
nameContents
('namepath-referencing'|'namepath-defining'|
'dual-namepath-referencing'|false) - Whether and how a name is allowed
following any type. Tags without a proper name (value false
) may still
have a description (which can appear like a name); descriptionAllowed
in such cases would be true
.
The presence of a truthy nameContents
value is therefore only intended
to signify whether separate parsing should occur for a name vs. a
description, and what its nature should be.nameRequired
(boolean) - Whether a name must be present following any type.descriptionAllowed
(boolean) - Whether a description (following any name)
is allowed.typeAllowed
(boolean) - Whether the tag accepts a curly bracketed portion.
Even without a type, a tag may still have a name and/or description.typeRequired
(boolean) - Whether a curly bracketed type must be present.typeOrNameRequired
(boolean) - Whether either a curly bracketed type is
required or a name, but not necessarily both.Also currently exports these utilities, though they might be removed in the future:
getTokenizers
- Used with parseComment
(its main core)toCamelCase
- Convert to CamelCase.hasSeeWithLink
- A utility to detect if a tag is @see
and has a @link
commentHandler
- Used by eslint-plugin-jsdoc
. Might be removed in future.commentParserToESTree
- Converts comment-parser
AST to ESTree/ESLint/Babel friendly ASTjsdocVisitorKeys
- The VisitorKeys
for JSDocBlock
, JSDocDescriptionLine
, and JSDocTag
. Might change.jsdocTypeVisitorKeys
- VisitorKeys
for jsdoc-type-pratt-parser
.getTokenizers
- A utility. Might be removed in future.toCamelCase
- A utility. Might be removed in future.hasSeeWithLink
- A utility to detect if a tag is @see
and has a @link
defaultNoTypes
= The tags which allow no types by default:
default
, defaultvalue
, see
;defaultNoNames
- The tags which allow no names by default:
access
, author
, default
, defaultvalue
, description
, example
,
exception
, kind
, license
, return
, returns
, since
, summary
,
throws
, version
, variation
comment-parser
nodes (JsdocBlock
, JsdocTag
, and JsdocDescriptionLine
)Note: Although not added in this package, @es-joy/jsdoc-eslint-parser
adds
a jsdoc
property to other ES nodes (using this project's getJSDocComment
to determine the specific comment-block that will be attached as AST).
JsdocBlock
Has two visitable properties:
tags
(an array of JsdocTag
; see below)descriptionLines
(an array of JsdocDescriptionLine
for multiline
descriptions).Has the following custom non-visitable property:
lastDescriptionLine
- A numberendLine
- A number representing the line number with end
/terminal
May also have the following non-visitable properties from comment-parser
:
description
- Same as descriptionLines
but as a string with newlines.delimiter
postDelimiter
lineEnd
initial
(from start
)terminal
(from end
)JsdocTag
Has three visitable properties:
parsedType
(the jsdoc-type-pratt-parser
AST representation of the tag's
type (see the jsdoc-type-pratt-parser
section below)).descriptionLines
(an array of JsdocDescriptionLine
for multiline
descriptions)typeLines
(an array of JsdocTypeLine
for multiline type strings)May also have the following non-visitable properties from comment-parser
(note that all are included from comment-parser
except end
as that is only
for JSDoc blocks and note that type
is renamed to rawType
and start
to
initial
):
description
- Same as descriptionLines
but as a string with newlines.rawType
- comment-parser
has this named as type
, but because of a
conflict with ESTree using type
for Node type, we renamed it to
rawType
. It is otherwise the same as in comment-parser
, i.e., a string
with newlines, though with the initial {
and final }
stripped out.
See typeLines
for the array version of this property.initial
- Renamed from start
to avoid potential conflicts with
Acorn-style parser processing toolsdelimiter
postDelimiter
tag
(this does differ from comment-parser
now in terms of our stripping
the initial @
)postTag
name
postName
postType
JsdocDescriptionLine
No visitable properties.
May also have the following non-visitable properties from comment-parser
:
delimiter
postDelimiter
initial
(from start
)description
JsdocTypeLine
No visitable properties.
May also have the following non-visitable properties from comment-parser
:
delimiter
postDelimiter
initial
(from start
)rawType
- Renamed from comment-parser
to avoid a conflict. See
explanation under JsdocTag
jsdoc-type-pratt-parser
The AST, including type
, remains as is from jsdoc-type-pratt-parser.
The type will always begin with a JsdocType
prefix added, along with a
camel-cased type name, e.g., JsdocTypeUnion
.
The jsdoc-type-pratt-parser
visitor keys are also preserved without change.
npm i @es-joy/jsdoccomment
The changelog can be found on the CHANGES.md.
Brett Zamir and contributors.
MIT License, see the included LICENSE-MIT.txt file.
trailing
for JsdocBlock
to know whether it is followed by a
line break or what not; comment-parser
does not provide, howeverindent
argument (challenging for
eslint-plugin-jsdoc
but needed for jsdoc-eslint-parser
stringifiers
to be more faithful); should also then use the proposed trailing
as well0.31.0
@template
per
https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#templateFAQs
Maintained replacement for ESLint's deprecated SourceCode#getJSDocComment along with other jsdoc utilities
The npm package @es-joy/jsdoccomment receives a total of 405,173 weekly downloads. As such, @es-joy/jsdoccomment popularity was classified as popular.
We found that @es-joy/jsdoccomment demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.