linguist-js 2.9.2 → 3.0.0-pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/bin/index.js +1 -1
  2. package/dist/analyser/classifiers/byAttributes.d.ts +3 -0
  3. package/dist/analyser/classifiers/byAttributes.js +13 -0
  4. package/dist/analyser/classifiers/byExtension.d.ts +3 -0
  5. package/dist/analyser/classifiers/byExtension.js +31 -0
  6. package/dist/analyser/classifiers/byFilename.d.ts +3 -0
  7. package/dist/analyser/classifiers/byFilename.js +10 -0
  8. package/dist/analyser/classifiers/byHeuristics.d.ts +3 -0
  9. package/dist/analyser/classifiers/byHeuristics.js +67 -0
  10. package/dist/analyser/classifiers/byModeline.d.ts +3 -0
  11. package/dist/analyser/classifiers/byModeline.js +22 -0
  12. package/dist/analyser/classifiers/byShebang.d.ts +3 -0
  13. package/dist/analyser/classifiers/byShebang.js +27 -0
  14. package/dist/analyser/index.d.ts +3 -0
  15. package/dist/analyser/index.js +12 -0
  16. package/dist/analyser/pipeline/aggregate.d.ts +2 -0
  17. package/dist/analyser/pipeline/aggregate.js +98 -0
  18. package/dist/analyser/pipeline/classify.d.ts +3 -0
  19. package/dist/analyser/pipeline/classify.js +31 -0
  20. package/dist/analyser/pipeline/filter.d.ts +2 -0
  21. package/dist/analyser/pipeline/filter.js +14 -0
  22. package/dist/analyser/pipeline/heuristics.d.ts +3 -0
  23. package/dist/analyser/pipeline/heuristics.js +12 -0
  24. package/dist/analyser/pipeline/normalise.d.ts +2 -0
  25. package/dist/analyser/pipeline/normalise.js +9 -0
  26. package/dist/cli/output/default.d.ts +3 -0
  27. package/dist/cli/output/default.js +106 -0
  28. package/dist/cli/output/tree.d.ts +3 -0
  29. package/dist/cli/output/tree.js +11 -0
  30. package/dist/cli/runCliAnalysis.d.ts +2 -0
  31. package/dist/cli/runCliAnalysis.js +26 -0
  32. package/dist/cli/utils.d.ts +2 -0
  33. package/dist/cli/utils.js +9 -0
  34. package/dist/cli.js +14 -143
  35. package/dist/entry/analyseFs.d.ts +2 -0
  36. package/dist/entry/analyseFs.js +11 -0
  37. package/dist/entry/analyseRaw.d.ts +4 -0
  38. package/dist/entry/analyseRaw.js +11 -0
  39. package/dist/index.d.ts +19 -4
  40. package/dist/index.js +18 -483
  41. package/dist/input/fromFilesystem.d.ts +4 -0
  42. package/dist/input/fromFilesystem.js +115 -0
  43. package/dist/input/fromRawContent.d.ts +2 -0
  44. package/dist/input/fromRawContent.js +19 -0
  45. package/dist/input/normaliseOpts.d.ts +2 -0
  46. package/dist/input/normaliseOpts.js +13 -0
  47. package/dist/program/classes/attributes.d.ts +11 -0
  48. package/dist/program/classes/attributes.js +37 -0
  49. package/dist/{helpers/load-data.d.ts → program/data/loadDataFiles.d.ts} +1 -1
  50. package/dist/program/data/loadDataFiles.js +32 -0
  51. package/dist/program/data/retrieveData.d.ts +12 -0
  52. package/dist/program/data/retrieveData.js +27 -0
  53. package/dist/{helpers/norm-path.d.ts → program/fs/normalisedPath.d.ts} +1 -0
  54. package/dist/program/fs/normalisedPath.js +17 -0
  55. package/dist/program/fs/readFile.js +17 -0
  56. package/dist/{helpers/walk-tree.d.ts → program/fs/walkTree.d.ts} +1 -1
  57. package/dist/{helpers/walk-tree.js → program/fs/walkTree.js} +22 -30
  58. package/dist/{helpers/parse-gitattributes.d.ts → program/parsing/parseGitattributes.d.ts} +2 -2
  59. package/dist/{helpers/parse-gitattributes.js → program/parsing/parseGitattributes.js} +4 -8
  60. package/dist/{helpers/parse-gitignore.js → program/parsing/parseGitignore.js} +1 -4
  61. package/dist/program/processFiles.d.ts +9 -0
  62. package/dist/program/processFiles.js +111 -0
  63. package/dist/{helpers/convert-pcre.js → program/utils/pcre.js} +1 -4
  64. package/dist/{schema.d.ts → types/schema.d.ts} +1 -1
  65. package/dist/types/schema.js +1 -0
  66. package/dist/{types.d.ts → types/types.d.ts} +35 -24
  67. package/dist/types/types.js +1 -0
  68. package/ext/generated.rb +6 -0
  69. package/ext/heuristics.yml +102 -11
  70. package/ext/languages.yml +518 -88
  71. package/ext/vendor.yml +1 -0
  72. package/package.json +14 -13
  73. package/readme.md +82 -87
  74. package/dist/helpers/load-data.js +0 -37
  75. package/dist/helpers/norm-path.js +0 -15
  76. package/dist/helpers/read-file.js +0 -23
  77. package/dist/schema.js +0 -2
  78. package/dist/types.js +0 -2
  79. /package/dist/{helpers/read-file.d.ts → program/fs/readFile.d.ts} +0 -0
  80. /package/dist/{helpers/parse-gitignore.d.ts → program/parsing/parseGitignore.d.ts} +0 -0
  81. /package/dist/{helpers/convert-pcre.d.ts → program/utils/pcre.d.ts} +0 -0
@@ -13,6 +13,7 @@ disambiguations:
13
13
  - named_pattern: man-heading
14
14
  - language: Roff
15
15
  pattern: '^\.(?:[A-Za-z]{2}(?:\s|$)|\\")'
16
+ - language: Text
16
17
  - extensions: ['.1in', '.1m', '.1x', '.3in', '.3m', '.3p', '.3pm', '.3qt', '.3x', '.man', '.mdoc']
17
18
  rules:
18
19
  - language: Roff Manpage
@@ -25,12 +26,27 @@ disambiguations:
25
26
  - named_pattern: man-title
26
27
  - named_pattern: man-heading
27
28
  - language: Roff
29
+ - extensions: ['.action']
30
+ rules:
31
+ - language: ROS Interface
32
+ and:
33
+ - pattern: '(?i)^[a-z]\w*(?:\/[a-z]\w*)?(?:<=\d+)?(?:\[(?:<=\d+)?\])?\s+\w+\b'
34
+ - pattern: '^---\s*$'
35
+ - negative_pattern: '^\s*[^\s@#\w-]'
28
36
  - extensions: ['.al']
29
37
  rules:
30
38
  - language: AL
31
39
  and:
32
40
  - pattern: '\b(?i:(CODEUNIT|PAGE|PAGEEXTENSION|PAGECUSTOMIZATION|DOTNET|ENUM|ENUMEXTENSION|VALUE|QUERY|REPORT|TABLE|TABLEEXTENSION|XMLPORT|PROFILE|CONTROLADDIN|REPORTEXTENSION|INTERFACE|PERMISSIONSET|PERMISSIONSETEXTENSION|ENTITLEMENT))\b'
33
41
  - language: Perl
42
+ - extensions: ['.alg']
43
+ rules:
44
+ - language: ALGOL
45
+ pattern:
46
+ - '(?i)^comment\b.*(;|comment)'
47
+ - '^#[^#\r\n]+#$'
48
+ - '(?i)\b(integer|real|boolean|string)\b\s+\w+\s*:=\s*'
49
+ - '(?i)^begin[\s\S]*^end'
34
50
  - extensions: ['.app']
35
51
  rules:
36
52
  - language: Erlang
@@ -102,6 +118,8 @@ disambiguations:
102
118
  and:
103
119
  - pattern: '(?i)^[ \t]*return '
104
120
  - negative_pattern: '(?i)[ \t]*gosub '
121
+ - language: QuickBASIC
122
+ named_pattern: quickbasic
105
123
  - extensions: ['.bs']
106
124
  rules:
107
125
  - language: Bikeshed
@@ -114,6 +132,11 @@ disambiguations:
114
132
  - (?i:^\s*(end\sfunction)$)
115
133
  - language: Bluespec BH
116
134
  pattern: '^package\s+[A-Za-z_][A-Za-z0-9_'']*(?:\s*\(|\s+where)'
135
+ - extensions: ['.bst']
136
+ rules:
137
+ - language: BibTeX Style
138
+ pattern: 'ENTRY\s*\{'
139
+ - language: BuildStream
117
140
  - extensions: ['.builds']
118
141
  rules:
119
142
  - language: XML
@@ -147,6 +170,8 @@ disambiguations:
147
170
  pattern: '^\s*\\(?:NeedsTeXFormat|ProvidesClass)\{'
148
171
  - language: ObjectScript
149
172
  pattern: '^Class\s'
173
+ - language: OpenEdge ABL
174
+ pattern: '(?i)^\s*(?:end\s+(?:class|interface)\.|(?:class|interface)\s+[a-z_][a-z0-9_#$%&-]*:)'
150
175
  - extensions: ['.cmp']
151
176
  rules:
152
177
  - language: Gerber Image
@@ -247,6 +272,8 @@ disambiguations:
247
272
  and:
248
273
  - named_pattern: vb-form
249
274
  - pattern: '^\s*Begin\s+VB\.Form\s+'
275
+ - language: INI
276
+ pattern: '\ATYPE=VIEW'
250
277
  - extensions: ['.fs']
251
278
  rules:
252
279
  - language: Forth
@@ -374,6 +401,18 @@ disambiguations:
374
401
  - language: OASv3-json
375
402
  pattern: '"openapi":\s?"3.[0-9.]+"'
376
403
  - language: JSON
404
+ - extensions: ['.k']
405
+ rules:
406
+ - language: KCL
407
+ pattern:
408
+ - '^schema [A-Za-z0-9_-]+'
409
+ - '^\}$'
410
+ - '\s*\}\s*'
411
+ - language: KFramework
412
+ pattern:
413
+ - '^requires\s+"[^"]+"$'
414
+ - '^syntax\s+\w+\s+::=.*'
415
+ - '^endmodule$'
377
416
  - extensions: ['.l']
378
417
  rules:
379
418
  - language: Common Lisp
@@ -392,9 +431,15 @@ disambiguations:
392
431
  pattern: '^import [A-Z]'
393
432
  - extensions: ['.lp']
394
433
  rules:
434
+ - language: Lambdapi
435
+ pattern: '(?:^|\s)symbol(?:$|\s)|(?:^|\s)rule(?:$|\s)'
395
436
  - language: Linear Programming
396
- pattern: '^(?i:minimize|minimum|min|maximize|maximum|max)(?i:\s+multi-objectives)?$'
437
+ pattern: '(?i)^\s*(?:minimize|minimum|min|maximize|maximum|max)(?:\s+multi-objectives)?\s*$'
397
438
  - language: Answer Set Programming
439
+ pattern:
440
+ - '^\s*#(?:include|const|program|script|show|minimize|maximize|heuristic|project|edge|theory|defined)\b'
441
+ - '^\s*(?:[A-Za-z_]\w*(?:\([^)]*\))?\s*:-|:-)\s[^.]*\.'
442
+ - '^\s*[a-z_][a-zA-Z0-9_]*(?:\([^)]*\))?\s*\.\s*$'
398
443
  - extensions: ['.ls']
399
444
  rules:
400
445
  - language: LoomScript
@@ -416,7 +461,7 @@ disambiguations:
416
461
  pattern: '^: '
417
462
  - language: M
418
463
  pattern: '^\s*;'
419
- - language: Mathematica
464
+ - language: Wolfram Language
420
465
  and:
421
466
  - pattern: '\(\*'
422
467
  - pattern: '\*\)$'
@@ -473,6 +518,12 @@ disambiguations:
473
518
  pattern: '^\s*(alias|def|from|fn|import|struct|trait)\s'
474
519
  - language: XML
475
520
  pattern: '^\s*<\?xml'
521
+ - extensions: ['.mps']
522
+ rules:
523
+ - language: JetBrains MPS
524
+ pattern: '<persistence'
525
+ - language: Mathematical Programming System
526
+ pattern: '(?i)^\s*(ROWS|COLUMNS)\s*$'
476
527
  - extensions: ['.ms']
477
528
  rules:
478
529
  - language: Roff
@@ -486,6 +537,10 @@ disambiguations:
486
537
  rules:
487
538
  - language: OMNeT++ MSG
488
539
  pattern: '^cplusplus\(?[\S]*\)?[\s]*\{?\{?|^namespace[\s]+([^.\s]*\.)*[^.\s]*;|^struct[\s]+[\S]+|^message[\s]+[\S]+(extends )?[\S]*[\s]*|^packet[\s]+[\S]+|^class[\s]+[\S]+(extends )?[\S]*[\s]*|^enum[\s]+[\S]+|^import ([^.\s]*\.)*[^.\s]*;'
540
+ - language: ROS Interface
541
+ and:
542
+ - pattern: '(?i)^[a-z]\w*(?:\/[a-z]\w*)?(?:<=\d+)?(?:\[(?:<=\d+)?\])?\s+\w+\b'
543
+ - negative_pattern: '^\s*[^\s@#\w-]'
489
544
  - extensions: ['.n']
490
545
  rules:
491
546
  - language: Roff
@@ -498,8 +553,19 @@ disambiguations:
498
553
  pattern: '^\s*<\?xml\s+version'
499
554
  - language: Gerber Image
500
555
  pattern: '^[DGMT][0-9]{2}\*(?:\r?\n|\r)'
556
+ - language: Nickel
557
+ pattern:
558
+ - '^let(?:\srec)?(?:\s[a-zA-Z_][a-zA-Z0-9_]*)?'
559
+ - '^import\s"[^"]+"\s+as\s'
560
+ - 'std\.[a-zA-Z_][a-zA-Z0-9_]*\.'
501
561
  - language: Text
502
562
  pattern: 'THE_TITLE'
563
+ - language: NCL
564
+ pattern:
565
+ - '^load "'
566
+ - '^begin$'
567
+ - '[0-9]\.$'
568
+ - '^;'
503
569
  - extensions: ['.nl']
504
570
  rules:
505
571
  - language: NL
@@ -528,6 +594,9 @@ disambiguations:
528
594
  - '^s?plot\b'
529
595
  - '^set\s+(term|terminal|out|output|[xy]tics|[xy]label|[xy]range|style)\b'
530
596
  - language: OpenEdge ABL
597
+ pattern:
598
+ - '(?i)\bDEFINE\s+(?:VARIABLE|TEMP-TABLE|BUFFER|QUERY|INPUT\s+PARAMETER|OUTPUT\s+PARAMETER)\b'
599
+ - '(?i)\bEND(?:\s+(?:PROCEDURE|FUNCTION|DO|FOR\s+EACH))?\.'
531
600
  - extensions: ['.php']
532
601
  rules:
533
602
  - language: Hack
@@ -692,21 +761,23 @@ disambiguations:
692
761
  pattern: '^#+\s+(NAME|SYNOPSIS|DESCRIPTION)'
693
762
  - extensions: ['.scm']
694
763
  rules:
695
- - language: Scheme
696
- pattern:
697
- - '(?:''[\(\*#]|\w->\w|\.\.\.[\s\)]|\([+\-:<>\/=~\)]|~>|[#`]\(|#:\w)'
698
- - '^\s*\((?:define\*?|import|library|lambda)'
699
- negative_pattern:
700
- - '\(#[\w-]+[!\?]'
701
- - '[\)\]"_]\s*(?:[\*\+\?]|@\w)'
702
764
  - language: Tree-sitter Query
703
765
  pattern:
704
766
  - '\(#[\w-]+[!\?]'
705
- - '[\)\]"_]\s*(?:[\*\+\?]|@\w)'
767
+ - '(?:[\)\]]\s*[\*\+\?](?:\s|$))'
706
768
  - '(?:^\s*\w+:\s*[\(\[\"])'
707
769
  - '\(#(?:set!|(?:not-)?(?:any-of|match)\?)'
770
+ - '@[\w.-]+(?:\)\s|$)'
708
771
  negative_pattern:
709
772
  - '\([+\-:<>\/=~\)]'
773
+ - language: Scheme
774
+ pattern:
775
+ - '(?:''[\(\*#]|\w->\w|\.\.\.[\s\)]|\([+\-:<>\/=~\)]|~>|[#`]\(|#:\w)'
776
+ - '^\s*\((?:define\*?|import|library|lambda)'
777
+ negative_pattern:
778
+ - '\(#[\w-]+[!\?]'
779
+ - '(?:[\)\]]\s*[\*\+\?](?:\s|$))'
780
+ - '@[\w.-]+(?:\)\s|$)'
710
781
  - extensions: ['.sol']
711
782
  rules:
712
783
  - language: Solidity
@@ -728,6 +799,13 @@ disambiguations:
728
799
  rules:
729
800
  - language: SubRip Text
730
801
  pattern: '^(\d{2}:\d{2}:\d{2},\d{3})\s*(-->)\s*(\d{2}:\d{2}:\d{2},\d{3})$'
802
+ - extensions: ['.srv']
803
+ rules:
804
+ - language: ROS Interface
805
+ and:
806
+ - pattern: '(?i)^[a-z]\w*(?:\/[a-z]\w*)?(?:<=\d+)?(?:\[(?:<=\d+)?\])?\s+\w+\b'
807
+ - pattern: '^---\s*$'
808
+ - negative_pattern: '^\s*[^\s@#\w-]'
731
809
  - extensions: ['.st']
732
810
  rules:
733
811
  - language: StringTemplate
@@ -773,6 +851,13 @@ disambiguations:
773
851
  rules:
774
852
  - language: Java Server Pages
775
853
  pattern: '<%[@!=\s]?\s*(taglib|tag|include|attribute|variable)\s'
854
+ - extensions: ['.tl']
855
+ rules:
856
+ - language: Teal
857
+ and:
858
+ - pattern: '--.*'
859
+ - pattern: '\b(local|function|end|record|interface|enum)\b'
860
+ - language: Type Language
776
861
  - extensions: ['.tlv']
777
862
  rules:
778
863
  - language: TL-Verilog
@@ -783,6 +868,12 @@ disambiguations:
783
868
  pattern: '^## |@no-lib-strip@'
784
869
  - language: TeX
785
870
  pattern: '^\\(contentsline|defcounter|beamer|boolfalse)'
871
+ - extensions: ['.tpl']
872
+ rules:
873
+ - language: Go Template
874
+ pattern: '\{\{-?\s*(\`?\"\\?\"?|\/\*\s|\w*)\b'
875
+ - language: Smarty
876
+ pattern: '(?<!\{)\{(\*\s|\$|\/)?\w*\b'
786
877
  - extensions: ['.ts']
787
878
  rules:
788
879
  - language: XML
@@ -827,7 +918,7 @@ disambiguations:
827
918
  - language: Rocq Prover
828
919
  pattern: '(?:^|\s)(?:Proof|Qed)\.(?:$|\s)|(?:^|\s)Require[ \t]+(Import|Export)\s'
829
920
  - language: Verilog
830
- pattern: '^[ \t]*module\s+[^\s()]+\s+\#?\(|^[ \t]*`(?:define|ifdef|ifndef|include|timescale)|^[ \t]*always[ \t]+@|^[ \t]*initial[ \t]+(begin|@)'
921
+ pattern: '^[ \t]*module\s+[^\s()]+\s*\#?\(|^[ \t]*`(?:define|ifdef|ifndef|include|timescale|pragma)|^[ \t]*always[ \t]*@|^[ \t]*initial[ \t]*(begin|@)'
831
922
  - language: V
832
923
  pattern: '\$(?:if|else)[ \t]|^[ \t]*fn\s+[^\s()]+\(.*?\).*?\{|^[ \t]*for\s*\{'
833
924
  - extensions: ['.vba']