Skip to content

Commit 448800f

Browse files
committed
- Change exports->esm, modules->cjs for greater clarity
- Testing: Add more tests checking difference between `esm` and `cjs` options - Testing: Ensure set other property to `false` to avoid potential interference
1 parent 2b4ef2e commit 448800f

File tree

5 files changed

+195
-14
lines changed

5 files changed

+195
-14
lines changed

.README/rules/require-jsdoc.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ be checked by the rule.
2020
otherwise noted):
2121

2222
- `ancestorsOnly` - Only check node ancestors to check if node is exported
23-
- `exports` - ESM exports are checked for JSDoc comments (Defaults to `true`)
24-
- `modules` - CommonJS exports are checked for JSDoc comments (Defaults to `true`)
23+
- `esm` - ESM exports are checked for JSDoc comments (Defaults to `true`)
24+
- `cjs` - CommonJS exports are checked for JSDoc comments (Defaults to `true`)
2525
- `browserEnv` - Window global exports are checked for JSDoc comments
2626

2727
- `require` - An object with the following optional boolean keys which all

README.md

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3434,8 +3434,8 @@ be checked by the rule.
34343434
otherwise noted):
34353435

34363436
- `ancestorsOnly` - Only check node ancestors to check if node is exported
3437-
- `exports` - ESM exports are checked for JSDoc comments (Defaults to `true`)
3438-
- `modules` - CommonJS exports are checked for JSDoc comments (Defaults to `true`)
3437+
- `esm` - ESM exports are checked for JSDoc comments (Defaults to `true`)
3438+
- `cjs` - CommonJS exports are checked for JSDoc comments (Defaults to `true`)
34393439
- `browserEnv` - Window global exports are checked for JSDoc comments
34403440

34413441
- `require` - An object with the following optional boolean keys which all
@@ -3713,6 +3713,24 @@ function test () {
37133713
}
37143714
// Options: [{"publicOnly":{"browserEnv":true}}]
37153715
// Message: Missing JSDoc comment.
3716+
3717+
module.exports = function() {
3718+
3719+
}
3720+
// Options: [{"publicOnly":{"browserEnv":false,"cjs":true,"esm":false},"require":{"FunctionExpression":true}}]
3721+
// Message: Missing JSDoc comment.
3722+
3723+
export function someMethod() {
3724+
3725+
}
3726+
// Options: [{"publicOnly":{"browserEnv":false,"cjs":false,"esm":true},"require":{"FunctionDeclaration":true}}]
3727+
// Message: Missing JSDoc comment.
3728+
3729+
export function someMethod() {
3730+
3731+
}
3732+
// Options: [{"publicOnly":{"browserEnv":false,"cjs":false,"esm":true},"require":{"FunctionDeclaration":true}}]
3733+
// Message: Missing JSDoc comment.
37163734
````
37173735

37183736
The following patterns are not considered problems:
@@ -3953,7 +3971,7 @@ test = function() {
39533971
module.exports = {
39543972
prop: { prop2: test }
39553973
}
3956-
// Options: [{"publicOnly":{"browserEnv":false,"modules":true},"require":{"FunctionExpression":true}}]
3974+
// Options: [{"publicOnly":{"browserEnv":false,"cjs":true,"esm":false},"require":{"FunctionExpression":true}}]
39573975

39583976
/**
39593977
*
@@ -3965,7 +3983,7 @@ test = function() {
39653983
exports.someMethod = {
39663984
prop: { prop2: test }
39673985
}
3968-
// Options: [{"publicOnly":{"browserEnv":false,"exports":true},"require":{"FunctionExpression":true}}]
3986+
// Options: [{"publicOnly":{"browserEnv":false,"cjs":false,"esm":true},"require":{"FunctionExpression":true}}]
39693987

39703988
/**
39713989
*
@@ -4142,6 +4160,21 @@ let test = function () {
41424160

41434161
}
41444162
// Options: [{"publicOnly":{"browserEnv":true},"require":{"FunctionExpression":true}}]
4163+
4164+
export function someMethod() {
4165+
4166+
}
4167+
// Options: [{"publicOnly":{"browserEnv":false,"cjs":true,"esm":false},"require":{"FunctionDeclaration":true}}]
4168+
4169+
export function someMethod() {
4170+
4171+
}
4172+
// Options: [{"publicOnly":{"browserEnv":false,"cjs":true,"esm":false},"require":{"FunctionDeclaration":true}}]
4173+
4174+
exports.someMethod = function() {
4175+
4176+
}
4177+
// Options: [{"publicOnly":{"browserEnv":false,"cjs":false,"esm":true},"require":{"FunctionExpression":true}}]
41454178
````
41464179

41474180

src/exportParser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ const isNodeExported = function (node, globals, opt) {
316316
}
317317
}
318318

319-
if (opt.exports && findExportedNode(globals, node)) {
319+
if (opt.esm && findExportedNode(globals, node)) {
320320
return true;
321321
}
322322

@@ -337,7 +337,7 @@ const parseRecursive = function (node, globalVars, opts) {
337337
const parse = function (ast, node, opt) {
338338
const opts = opt || {
339339
ancestorsOnly: false,
340-
exports: true,
340+
esm: true,
341341
initModuleExports: true,
342342
initWindow: true
343343
};

src/rules/requireJsdoc.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ const OPTIONS_SCHEMA = {
2424
default: false,
2525
type: 'boolean'
2626
},
27-
exports: {
27+
cjs: {
2828
default: true,
2929
type: 'boolean'
3030
},
31-
modules: {
31+
esm: {
3232
default: true,
3333
type: 'boolean'
3434
}
@@ -142,8 +142,8 @@ export default iterateJsdoc(null, {
142142
if (publicOnly) {
143143
const opt = {
144144
ancestorsOnly: publicOnly.ancestorsOnly,
145-
exports: publicOnly.exports,
146-
initModuleExports: publicOnly.modules,
145+
esm: publicOnly.esm,
146+
initModuleExports: publicOnly.cjs,
147147
initWindow: publicOnly.browserEnv
148148
};
149149
const parseResult = exportParser.parse(sourceCode.ast, node, opt);

test/rules/assertions/requireJsdoc.js

Lines changed: 150 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,86 @@ export default {
728728
parserOptions: {
729729
sourceType: 'module'
730730
}
731+
},
732+
{
733+
code: `
734+
module.exports = function() {
735+
736+
}
737+
`,
738+
env: {
739+
node: true
740+
},
741+
errors: [{
742+
message: 'Missing JSDoc comment.',
743+
type: 'FunctionExpression'
744+
}],
745+
options: [{
746+
publicOnly: {
747+
browserEnv: false,
748+
cjs: true,
749+
esm: false
750+
},
751+
require: {
752+
FunctionExpression: true
753+
}
754+
}]
755+
},
756+
{
757+
code: `
758+
export function someMethod() {
759+
760+
}
761+
`,
762+
env: {
763+
node: true
764+
},
765+
errors: [{
766+
message: 'Missing JSDoc comment.',
767+
type: 'FunctionDeclaration'
768+
}],
769+
options: [{
770+
publicOnly: {
771+
browserEnv: false,
772+
cjs: false,
773+
esm: true
774+
},
775+
require: {
776+
FunctionDeclaration: true
777+
}
778+
}],
779+
parserOptions: {
780+
ecmaVersion: 6,
781+
sourceType: 'module'
782+
}
783+
},
784+
{
785+
code: `
786+
export function someMethod() {
787+
788+
}
789+
`,
790+
env: {
791+
node: true
792+
},
793+
errors: [{
794+
message: 'Missing JSDoc comment.',
795+
type: 'FunctionDeclaration'
796+
}],
797+
options: [{
798+
publicOnly: {
799+
browserEnv: false,
800+
cjs: false,
801+
esm: true
802+
},
803+
require: {
804+
FunctionDeclaration: true
805+
}
806+
}],
807+
parserOptions: {
808+
ecmaVersion: 6,
809+
sourceType: 'module'
810+
}
731811
}
732812
],
733813
valid: [{
@@ -1134,7 +1214,8 @@ export default {
11341214
options: [{
11351215
publicOnly: {
11361216
browserEnv: false,
1137-
modules: true
1217+
cjs: true,
1218+
esm: false
11381219
},
11391220
require: {
11401221
FunctionExpression: true
@@ -1160,7 +1241,8 @@ export default {
11601241
options: [{
11611242
publicOnly: {
11621243
browserEnv: false,
1163-
exports: true
1244+
cjs: false,
1245+
esm: true
11641246
},
11651247
require: {
11661248
FunctionExpression: true
@@ -1554,5 +1636,71 @@ export default {
15541636
parserOptions: {
15551637
sourceType: 'module'
15561638
}
1639+
},
1640+
{
1641+
code: `
1642+
export function someMethod() {
1643+
1644+
}
1645+
`,
1646+
env: {
1647+
node: true
1648+
},
1649+
options: [{
1650+
publicOnly: {
1651+
browserEnv: false,
1652+
cjs: true,
1653+
esm: false
1654+
},
1655+
require: {
1656+
FunctionDeclaration: true
1657+
}
1658+
}],
1659+
parserOptions: {
1660+
ecmaVersion: 6,
1661+
sourceType: 'module'
1662+
}
1663+
}, {
1664+
code: `
1665+
export function someMethod() {
1666+
1667+
}
1668+
`,
1669+
env: {
1670+
node: true
1671+
},
1672+
options: [{
1673+
publicOnly: {
1674+
browserEnv: false,
1675+
cjs: true,
1676+
esm: false
1677+
},
1678+
require: {
1679+
FunctionDeclaration: true
1680+
}
1681+
}],
1682+
parserOptions: {
1683+
ecmaVersion: 6,
1684+
sourceType: 'module'
1685+
}
1686+
}, {
1687+
code: `
1688+
exports.someMethod = function() {
1689+
1690+
}
1691+
`,
1692+
env: {
1693+
node: true
1694+
},
1695+
options: [{
1696+
publicOnly: {
1697+
browserEnv: false,
1698+
cjs: false,
1699+
esm: true
1700+
},
1701+
require: {
1702+
FunctionExpression: true
1703+
}
1704+
}]
15571705
}]
15581706
};

0 commit comments

Comments
 (0)