Skip to content

Commit 03f9c29

Browse files
committed
fixvalid-types): require or disallow names and types per tag; part of gajus#233
1. Make `constructs` disallow type (but optional name) 2. Require namepath and disallow type for `emits`; 3. Disallow type on `exports` except in closure/permissive modes; 4. Disallow type on `external` and `host` 5. Disallow type on `fires` but require name 6. Specify name as optional but type required on `function` 7. `listens`: should not have a type but must have a name 8. Make `miixin` name optional but disallow type 9. `requires` must have name but not have a type 10. `exports` must have a name in jsdoc mode 11. `interface`: disallow type
1 parent eb92080 commit 03f9c29

File tree

3 files changed

+292
-4
lines changed

3 files changed

+292
-4
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21275,7 +21275,7 @@ function quux() {
2127521275

2127621276
/**
2127721277
*
21278-
* @fires {module:namespace.SomeClass#event:ext_anevent}
21278+
* @fires module:namespace.SomeClass#event:ext_anevent
2127921279
*/
2128021280
function quux() {
2128121281

src/getDefaultTagStructureForMode.js

Lines changed: 106 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ const getDefaultTagStructureForMode = (mode) => {
150150
'nameContents', 'namepath-defining',
151151
],
152152

153+
// Not in use, but should be this value if using to power `empty-tags`
154+
[
155+
'nameAllowed', true,
156+
],
157+
153158
[
154159
'typeAllowed', true,
155160
],
@@ -193,6 +198,23 @@ const getDefaultTagStructureForMode = (mode) => {
193198
]),
194199
],
195200

201+
[
202+
'constructs', new Map([
203+
// Allows for "name"'s in signature, but indicated as optional
204+
[
205+
'nameContents', 'namepath-defining',
206+
],
207+
208+
[
209+
'nameRequired', false,
210+
],
211+
212+
[
213+
'typeAllowed', false,
214+
],
215+
]),
216+
],
217+
196218
[
197219
'define', new Map([
198220
[
@@ -207,6 +229,14 @@ const getDefaultTagStructureForMode = (mode) => {
207229
[
208230
'nameContents', 'namepath-referencing',
209231
],
232+
233+
[
234+
'nameRequired', true,
235+
],
236+
237+
[
238+
'typeAllowed', false,
239+
],
210240
]),
211241
],
212242

@@ -244,6 +274,7 @@ const getDefaultTagStructureForMode = (mode) => {
244274
]),
245275
],
246276

277+
// Closure
247278
[
248279
'export', new Map([
249280
[
@@ -252,6 +283,22 @@ const getDefaultTagStructureForMode = (mode) => {
252283
]),
253284
],
254285

286+
[
287+
'exports', new Map([
288+
[
289+
'nameContents', 'namepath-defining',
290+
],
291+
292+
[
293+
'nameRequired', isJsdoc,
294+
],
295+
296+
[
297+
'typeAllowed', isClosureOrPermissive,
298+
],
299+
]),
300+
],
301+
255302
[
256303
'extends', new Map([
257304
// Signature seems to require a "namepath" (and no counter-examples)
@@ -288,6 +335,10 @@ const getDefaultTagStructureForMode = (mode) => {
288335
[
289336
'nameRequired', true,
290337
],
338+
339+
[
340+
'typeAllowed', false,
341+
],
291342
]),
292343
],
293344

@@ -298,6 +349,14 @@ const getDefaultTagStructureForMode = (mode) => {
298349
[
299350
'nameContents', 'namepath-referencing',
300351
],
352+
353+
[
354+
'nameRequired', true,
355+
],
356+
357+
[
358+
'typeAllowed', false,
359+
],
301360
]),
302361
],
303362

@@ -307,6 +366,14 @@ const getDefaultTagStructureForMode = (mode) => {
307366
[
308367
'nameContents', 'namepath-defining',
309368
],
369+
370+
[
371+
'nameRequired', false,
372+
],
373+
374+
[
375+
'typeAllowed', false,
376+
],
310377
]),
311378
],
312379
[
@@ -332,9 +399,8 @@ const getDefaultTagStructureForMode = (mode) => {
332399
'nameRequired', true,
333400
],
334401

335-
// "namepath"
336402
[
337-
'typeOrNameRequired', true,
403+
'typeAllowed', false,
338404
],
339405
]),
340406
],
@@ -346,6 +412,15 @@ const getDefaultTagStructureForMode = (mode) => {
346412
'nameContents',
347413
isJsdocTypescriptOrPermissive ? 'namepath-defining' : false,
348414
],
415+
416+
// Not in use, but should be this value if using to power `empty-tags`
417+
[
418+
'nameAllowed', isClosure,
419+
],
420+
421+
[
422+
'typeAllowed', false,
423+
],
349424
]),
350425
],
351426

@@ -380,6 +455,14 @@ const getDefaultTagStructureForMode = (mode) => {
380455
[
381456
'nameContents', 'namepath-referencing',
382457
],
458+
459+
[
460+
'nameRequired', true,
461+
],
462+
463+
[
464+
'typeAllowed', false,
465+
],
383466
]),
384467
],
385468

@@ -455,6 +538,14 @@ const getDefaultTagStructureForMode = (mode) => {
455538
[
456539
'nameContents', 'namepath-defining',
457540
],
541+
542+
[
543+
'nameRequired', false,
544+
],
545+
546+
[
547+
'typeAllowed', false,
548+
],
458549
]),
459550
],
460551

@@ -618,6 +709,19 @@ const getDefaultTagStructureForMode = (mode) => {
618709
]),
619710
],
620711

712+
[
713+
'requires', new Map([
714+
// <someModuleName>
715+
[
716+
'nameRequired', true,
717+
],
718+
719+
[
720+
'typeAllowed', false,
721+
],
722+
]),
723+
],
724+
621725
[
622726
'returns', new Map([
623727
// Shows curly brackets in the signature and in the examples

0 commit comments

Comments
 (0)