@juspay/neurolink 9.1.1 → 9.2.0

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 (237) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +54 -7
  3. package/dist/agent/directTools.d.ts +3 -3
  4. package/dist/cli/commands/config.d.ts +6 -6
  5. package/dist/image-gen/ImageGenService.d.ts +143 -0
  6. package/dist/image-gen/ImageGenService.js +345 -0
  7. package/dist/image-gen/imageGenTools.d.ts +126 -0
  8. package/dist/image-gen/imageGenTools.js +304 -0
  9. package/dist/image-gen/index.d.ts +46 -0
  10. package/dist/image-gen/index.js +48 -0
  11. package/dist/image-gen/types.d.ts +237 -0
  12. package/dist/image-gen/types.js +24 -0
  13. package/dist/lib/agent/directTools.d.ts +3 -3
  14. package/dist/lib/image-gen/ImageGenService.d.ts +143 -0
  15. package/dist/lib/image-gen/ImageGenService.js +346 -0
  16. package/dist/lib/image-gen/imageGenTools.d.ts +126 -0
  17. package/dist/lib/image-gen/imageGenTools.js +305 -0
  18. package/dist/lib/image-gen/index.d.ts +46 -0
  19. package/dist/lib/image-gen/index.js +49 -0
  20. package/dist/lib/image-gen/types.d.ts +237 -0
  21. package/dist/lib/image-gen/types.js +25 -0
  22. package/dist/lib/processors/base/BaseFileProcessor.d.ts +273 -0
  23. package/dist/lib/processors/base/BaseFileProcessor.js +614 -0
  24. package/dist/lib/processors/base/index.d.ts +14 -0
  25. package/dist/lib/processors/base/index.js +20 -0
  26. package/dist/lib/processors/base/types.d.ts +593 -0
  27. package/dist/lib/processors/base/types.js +77 -0
  28. package/dist/lib/processors/cli/fileProcessorCli.d.ts +163 -0
  29. package/dist/lib/processors/cli/fileProcessorCli.js +389 -0
  30. package/dist/lib/processors/cli/index.d.ts +37 -0
  31. package/dist/lib/processors/cli/index.js +50 -0
  32. package/dist/lib/processors/code/ConfigProcessor.d.ts +171 -0
  33. package/dist/lib/processors/code/ConfigProcessor.js +401 -0
  34. package/dist/lib/processors/code/SourceCodeProcessor.d.ts +174 -0
  35. package/dist/lib/processors/code/SourceCodeProcessor.js +305 -0
  36. package/dist/lib/processors/code/index.d.ts +44 -0
  37. package/dist/lib/processors/code/index.js +61 -0
  38. package/dist/lib/processors/config/fileTypes.d.ts +283 -0
  39. package/dist/lib/processors/config/fileTypes.js +521 -0
  40. package/dist/lib/processors/config/index.d.ts +32 -0
  41. package/dist/lib/processors/config/index.js +93 -0
  42. package/dist/lib/processors/config/languageMap.d.ts +66 -0
  43. package/dist/lib/processors/config/languageMap.js +411 -0
  44. package/dist/lib/processors/config/mimeTypes.d.ts +376 -0
  45. package/dist/lib/processors/config/mimeTypes.js +339 -0
  46. package/dist/lib/processors/config/sizeLimits.d.ts +194 -0
  47. package/dist/lib/processors/config/sizeLimits.js +247 -0
  48. package/dist/lib/processors/data/JsonProcessor.d.ts +122 -0
  49. package/dist/lib/processors/data/JsonProcessor.js +204 -0
  50. package/dist/lib/processors/data/XmlProcessor.d.ts +160 -0
  51. package/dist/lib/processors/data/XmlProcessor.js +284 -0
  52. package/dist/lib/processors/data/YamlProcessor.d.ts +163 -0
  53. package/dist/lib/processors/data/YamlProcessor.js +295 -0
  54. package/dist/lib/processors/data/index.d.ts +49 -0
  55. package/dist/lib/processors/data/index.js +77 -0
  56. package/dist/lib/processors/document/ExcelProcessor.d.ts +238 -0
  57. package/dist/lib/processors/document/ExcelProcessor.js +520 -0
  58. package/dist/lib/processors/document/OpenDocumentProcessor.d.ts +69 -0
  59. package/dist/lib/processors/document/OpenDocumentProcessor.js +211 -0
  60. package/dist/lib/processors/document/RtfProcessor.d.ts +152 -0
  61. package/dist/lib/processors/document/RtfProcessor.js +362 -0
  62. package/dist/lib/processors/document/WordProcessor.d.ts +168 -0
  63. package/dist/lib/processors/document/WordProcessor.js +354 -0
  64. package/dist/lib/processors/document/index.d.ts +54 -0
  65. package/dist/lib/processors/document/index.js +91 -0
  66. package/dist/lib/processors/errors/FileErrorCode.d.ts +98 -0
  67. package/dist/lib/processors/errors/FileErrorCode.js +256 -0
  68. package/dist/lib/processors/errors/errorHelpers.d.ts +151 -0
  69. package/dist/lib/processors/errors/errorHelpers.js +379 -0
  70. package/dist/lib/processors/errors/errorSerializer.d.ts +139 -0
  71. package/dist/lib/processors/errors/errorSerializer.js +508 -0
  72. package/dist/lib/processors/errors/index.d.ts +46 -0
  73. package/dist/lib/processors/errors/index.js +50 -0
  74. package/dist/lib/processors/index.d.ts +76 -0
  75. package/dist/lib/processors/index.js +113 -0
  76. package/dist/lib/processors/integration/FileProcessorIntegration.d.ts +244 -0
  77. package/dist/lib/processors/integration/FileProcessorIntegration.js +273 -0
  78. package/dist/lib/processors/integration/index.d.ts +42 -0
  79. package/dist/lib/processors/integration/index.js +45 -0
  80. package/dist/lib/processors/markup/HtmlProcessor.d.ts +169 -0
  81. package/dist/lib/processors/markup/HtmlProcessor.js +250 -0
  82. package/dist/lib/processors/markup/MarkdownProcessor.d.ts +165 -0
  83. package/dist/lib/processors/markup/MarkdownProcessor.js +245 -0
  84. package/dist/lib/processors/markup/SvgProcessor.d.ts +156 -0
  85. package/dist/lib/processors/markup/SvgProcessor.js +241 -0
  86. package/dist/lib/processors/markup/TextProcessor.d.ts +135 -0
  87. package/dist/lib/processors/markup/TextProcessor.js +189 -0
  88. package/dist/lib/processors/markup/index.d.ts +66 -0
  89. package/dist/lib/processors/markup/index.js +103 -0
  90. package/dist/lib/processors/registry/ProcessorRegistry.d.ts +334 -0
  91. package/dist/lib/processors/registry/ProcessorRegistry.js +609 -0
  92. package/dist/lib/processors/registry/index.d.ts +12 -0
  93. package/dist/lib/processors/registry/index.js +17 -0
  94. package/dist/lib/processors/registry/types.d.ts +53 -0
  95. package/dist/lib/processors/registry/types.js +11 -0
  96. package/dist/lib/providers/sagemaker/language-model.d.ts +2 -2
  97. package/dist/lib/server/utils/validation.d.ts +6 -6
  98. package/dist/lib/types/fileTypes.d.ts +1 -1
  99. package/dist/lib/types/index.d.ts +25 -24
  100. package/dist/lib/types/index.js +21 -20
  101. package/dist/lib/types/modelTypes.d.ts +18 -18
  102. package/dist/lib/types/pptTypes.d.ts +14 -2
  103. package/dist/lib/types/pptTypes.js +16 -0
  104. package/dist/lib/utils/async/delay.d.ts +40 -0
  105. package/dist/lib/utils/async/delay.js +43 -0
  106. package/dist/lib/utils/async/index.d.ts +23 -0
  107. package/dist/lib/utils/async/index.js +24 -0
  108. package/dist/lib/utils/async/retry.d.ts +141 -0
  109. package/dist/lib/utils/async/retry.js +172 -0
  110. package/dist/lib/utils/async/withTimeout.d.ts +73 -0
  111. package/dist/lib/utils/async/withTimeout.js +97 -0
  112. package/dist/lib/utils/fileDetector.d.ts +7 -1
  113. package/dist/lib/utils/fileDetector.js +91 -18
  114. package/dist/lib/utils/json/extract.d.ts +103 -0
  115. package/dist/lib/utils/json/extract.js +249 -0
  116. package/dist/lib/utils/json/index.d.ts +36 -0
  117. package/dist/lib/utils/json/index.js +37 -0
  118. package/dist/lib/utils/json/safeParse.d.ts +137 -0
  119. package/dist/lib/utils/json/safeParse.js +191 -0
  120. package/dist/lib/utils/messageBuilder.d.ts +2 -2
  121. package/dist/lib/utils/messageBuilder.js +15 -7
  122. package/dist/lib/utils/sanitizers/filename.d.ts +137 -0
  123. package/dist/lib/utils/sanitizers/filename.js +366 -0
  124. package/dist/lib/utils/sanitizers/html.d.ts +170 -0
  125. package/dist/lib/utils/sanitizers/html.js +326 -0
  126. package/dist/lib/utils/sanitizers/index.d.ts +26 -0
  127. package/dist/lib/utils/sanitizers/index.js +30 -0
  128. package/dist/lib/utils/sanitizers/svg.d.ts +81 -0
  129. package/dist/lib/utils/sanitizers/svg.js +483 -0
  130. package/dist/processors/base/BaseFileProcessor.d.ts +273 -0
  131. package/dist/processors/base/BaseFileProcessor.js +613 -0
  132. package/dist/processors/base/index.d.ts +14 -0
  133. package/dist/processors/base/index.js +19 -0
  134. package/dist/processors/base/types.d.ts +593 -0
  135. package/dist/processors/base/types.js +76 -0
  136. package/dist/processors/cli/fileProcessorCli.d.ts +163 -0
  137. package/dist/processors/cli/fileProcessorCli.js +388 -0
  138. package/dist/processors/cli/index.d.ts +37 -0
  139. package/dist/processors/cli/index.js +49 -0
  140. package/dist/processors/code/ConfigProcessor.d.ts +171 -0
  141. package/dist/processors/code/ConfigProcessor.js +400 -0
  142. package/dist/processors/code/SourceCodeProcessor.d.ts +174 -0
  143. package/dist/processors/code/SourceCodeProcessor.js +304 -0
  144. package/dist/processors/code/index.d.ts +44 -0
  145. package/dist/processors/code/index.js +60 -0
  146. package/dist/processors/config/fileTypes.d.ts +283 -0
  147. package/dist/processors/config/fileTypes.js +520 -0
  148. package/dist/processors/config/index.d.ts +32 -0
  149. package/dist/processors/config/index.js +92 -0
  150. package/dist/processors/config/languageMap.d.ts +66 -0
  151. package/dist/processors/config/languageMap.js +410 -0
  152. package/dist/processors/config/mimeTypes.d.ts +376 -0
  153. package/dist/processors/config/mimeTypes.js +338 -0
  154. package/dist/processors/config/sizeLimits.d.ts +194 -0
  155. package/dist/processors/config/sizeLimits.js +246 -0
  156. package/dist/processors/data/JsonProcessor.d.ts +122 -0
  157. package/dist/processors/data/JsonProcessor.js +203 -0
  158. package/dist/processors/data/XmlProcessor.d.ts +160 -0
  159. package/dist/processors/data/XmlProcessor.js +283 -0
  160. package/dist/processors/data/YamlProcessor.d.ts +163 -0
  161. package/dist/processors/data/YamlProcessor.js +294 -0
  162. package/dist/processors/data/index.d.ts +49 -0
  163. package/dist/processors/data/index.js +76 -0
  164. package/dist/processors/document/ExcelProcessor.d.ts +238 -0
  165. package/dist/processors/document/ExcelProcessor.js +519 -0
  166. package/dist/processors/document/OpenDocumentProcessor.d.ts +69 -0
  167. package/dist/processors/document/OpenDocumentProcessor.js +210 -0
  168. package/dist/processors/document/RtfProcessor.d.ts +152 -0
  169. package/dist/processors/document/RtfProcessor.js +361 -0
  170. package/dist/processors/document/WordProcessor.d.ts +168 -0
  171. package/dist/processors/document/WordProcessor.js +353 -0
  172. package/dist/processors/document/index.d.ts +54 -0
  173. package/dist/processors/document/index.js +90 -0
  174. package/dist/processors/errors/FileErrorCode.d.ts +98 -0
  175. package/dist/processors/errors/FileErrorCode.js +255 -0
  176. package/dist/processors/errors/errorHelpers.d.ts +151 -0
  177. package/dist/processors/errors/errorHelpers.js +378 -0
  178. package/dist/processors/errors/errorSerializer.d.ts +139 -0
  179. package/dist/processors/errors/errorSerializer.js +507 -0
  180. package/dist/processors/errors/index.d.ts +46 -0
  181. package/dist/processors/errors/index.js +49 -0
  182. package/dist/processors/index.d.ts +76 -0
  183. package/dist/processors/index.js +112 -0
  184. package/dist/processors/integration/FileProcessorIntegration.d.ts +244 -0
  185. package/dist/processors/integration/FileProcessorIntegration.js +272 -0
  186. package/dist/processors/integration/index.d.ts +42 -0
  187. package/dist/processors/integration/index.js +44 -0
  188. package/dist/processors/markup/HtmlProcessor.d.ts +169 -0
  189. package/dist/processors/markup/HtmlProcessor.js +249 -0
  190. package/dist/processors/markup/MarkdownProcessor.d.ts +165 -0
  191. package/dist/processors/markup/MarkdownProcessor.js +244 -0
  192. package/dist/processors/markup/SvgProcessor.d.ts +156 -0
  193. package/dist/processors/markup/SvgProcessor.js +240 -0
  194. package/dist/processors/markup/TextProcessor.d.ts +135 -0
  195. package/dist/processors/markup/TextProcessor.js +188 -0
  196. package/dist/processors/markup/index.d.ts +66 -0
  197. package/dist/processors/markup/index.js +102 -0
  198. package/dist/processors/registry/ProcessorRegistry.d.ts +334 -0
  199. package/dist/processors/registry/ProcessorRegistry.js +608 -0
  200. package/dist/processors/registry/index.d.ts +12 -0
  201. package/dist/processors/registry/index.js +16 -0
  202. package/dist/processors/registry/types.d.ts +53 -0
  203. package/dist/processors/registry/types.js +10 -0
  204. package/dist/server/utils/validation.d.ts +6 -6
  205. package/dist/types/fileTypes.d.ts +1 -1
  206. package/dist/types/index.d.ts +25 -24
  207. package/dist/types/index.js +21 -20
  208. package/dist/types/modelTypes.d.ts +10 -10
  209. package/dist/types/pptTypes.d.ts +14 -2
  210. package/dist/types/pptTypes.js +16 -0
  211. package/dist/utils/async/delay.d.ts +40 -0
  212. package/dist/utils/async/delay.js +42 -0
  213. package/dist/utils/async/index.d.ts +23 -0
  214. package/dist/utils/async/index.js +23 -0
  215. package/dist/utils/async/retry.d.ts +141 -0
  216. package/dist/utils/async/retry.js +171 -0
  217. package/dist/utils/async/withTimeout.d.ts +73 -0
  218. package/dist/utils/async/withTimeout.js +96 -0
  219. package/dist/utils/fileDetector.d.ts +7 -1
  220. package/dist/utils/fileDetector.js +91 -18
  221. package/dist/utils/json/extract.d.ts +103 -0
  222. package/dist/utils/json/extract.js +248 -0
  223. package/dist/utils/json/index.d.ts +36 -0
  224. package/dist/utils/json/index.js +36 -0
  225. package/dist/utils/json/safeParse.d.ts +137 -0
  226. package/dist/utils/json/safeParse.js +190 -0
  227. package/dist/utils/messageBuilder.d.ts +2 -2
  228. package/dist/utils/messageBuilder.js +15 -7
  229. package/dist/utils/sanitizers/filename.d.ts +137 -0
  230. package/dist/utils/sanitizers/filename.js +365 -0
  231. package/dist/utils/sanitizers/html.d.ts +170 -0
  232. package/dist/utils/sanitizers/html.js +325 -0
  233. package/dist/utils/sanitizers/index.d.ts +26 -0
  234. package/dist/utils/sanitizers/index.js +29 -0
  235. package/dist/utils/sanitizers/svg.d.ts +81 -0
  236. package/dist/utils/sanitizers/svg.js +482 -0
  237. package/package.json +2 -2
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Language Detection Map
3
+ * Maps file extensions and filenames to programming language names
4
+ *
5
+ * @module processors/config/languageMap
6
+ */
7
+ /**
8
+ * Maps file extensions to their programming language names
9
+ * Used for syntax highlighting, code analysis, and display purposes
10
+ */
11
+ export declare const LANGUAGE_MAP: Record<string, string>;
12
+ /**
13
+ * Maps exact filenames (without extension) to their language/type
14
+ * Used for special files like Dockerfile, Makefile, etc.
15
+ */
16
+ export declare const EXACT_FILENAME_MAP: Record<string, string>;
17
+ /**
18
+ * Detects the programming language from a filename
19
+ *
20
+ * @param filename - The filename to detect language from
21
+ * @returns The detected language name or 'Unknown'
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * detectLanguageFromFilename('app.ts') // Returns 'TypeScript'
26
+ * detectLanguageFromFilename('Dockerfile') // Returns 'Dockerfile'
27
+ * detectLanguageFromFilename('unknown.xyz') // Returns 'Unknown'
28
+ * ```
29
+ */
30
+ export declare function detectLanguageFromFilename(filename: string): string;
31
+ /**
32
+ * Gets the lowercase language identifier for syntax highlighting
33
+ *
34
+ * @param filename - The filename to get language identifier from
35
+ * @returns The lowercase language identifier suitable for syntax highlighting
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * getLanguageIdentifier('app.ts') // Returns 'typescript'
40
+ * getLanguageIdentifier('Dockerfile') // Returns 'dockerfile'
41
+ * ```
42
+ */
43
+ export declare function getLanguageIdentifier(filename: string): string;
44
+ /**
45
+ * Checks if a file is a source code file based on its extension
46
+ *
47
+ * @param filename - The filename to check
48
+ * @returns True if the file is a source code file
49
+ */
50
+ export declare function isSourceCodeFile(filename: string): boolean;
51
+ /**
52
+ * Gets all supported file extensions
53
+ *
54
+ * @returns Array of all supported file extensions
55
+ */
56
+ export declare function getSupportedExtensions(): string[];
57
+ /**
58
+ * Gets all supported exact filenames
59
+ *
60
+ * @returns Array of all supported exact filenames
61
+ */
62
+ export declare function getSupportedFilenames(): string[];
63
+ /** Type for the LANGUAGE_MAP object */
64
+ export type LanguageMap = typeof LANGUAGE_MAP;
65
+ /** Type for the EXACT_FILENAME_MAP object */
66
+ export type ExactFilenameMap = typeof EXACT_FILENAME_MAP;
@@ -0,0 +1,410 @@
1
+ /**
2
+ * Language Detection Map
3
+ * Maps file extensions and filenames to programming language names
4
+ *
5
+ * @module processors/config/languageMap
6
+ */
7
+ import { basename as pathBasename } from "node:path";
8
+ // =============================================================================
9
+ // EXTENSION TO LANGUAGE MAP
10
+ // =============================================================================
11
+ /**
12
+ * Maps file extensions to their programming language names
13
+ * Used for syntax highlighting, code analysis, and display purposes
14
+ */
15
+ export const LANGUAGE_MAP = {
16
+ // JavaScript/TypeScript
17
+ ".js": "JavaScript",
18
+ ".jsx": "JavaScript (JSX)",
19
+ ".mjs": "JavaScript (ESM)",
20
+ ".cjs": "JavaScript (CommonJS)",
21
+ ".ts": "TypeScript",
22
+ ".tsx": "TypeScript (TSX)",
23
+ // Python
24
+ ".py": "Python",
25
+ ".pyw": "Python",
26
+ ".pyi": "Python (Stub)",
27
+ // Java/Kotlin
28
+ ".java": "Java",
29
+ ".kt": "Kotlin",
30
+ ".kts": "Kotlin (Script)",
31
+ // Go
32
+ ".go": "Go",
33
+ // Rust
34
+ ".rs": "Rust",
35
+ // C/C++
36
+ ".c": "C",
37
+ ".h": "C Header",
38
+ ".cpp": "C++",
39
+ ".hpp": "C++ Header",
40
+ ".cc": "C++",
41
+ ".cxx": "C++",
42
+ ".hxx": "C++ Header",
43
+ // C#
44
+ ".cs": "C#",
45
+ // Ruby
46
+ ".rb": "Ruby",
47
+ ".rake": "Ruby (Rake)",
48
+ // PHP
49
+ ".php": "PHP",
50
+ ".phtml": "PHP (HTML)",
51
+ ".php3": "PHP",
52
+ ".php4": "PHP",
53
+ ".php5": "PHP",
54
+ ".phps": "PHP",
55
+ // Shell
56
+ ".sh": "Shell",
57
+ ".bash": "Bash",
58
+ ".zsh": "Zsh",
59
+ ".fish": "Fish",
60
+ ".ksh": "Ksh",
61
+ // SQL
62
+ ".sql": "SQL",
63
+ // Swift
64
+ ".swift": "Swift",
65
+ // Dart
66
+ ".dart": "Dart",
67
+ // Objective-C
68
+ ".m": "Objective-C",
69
+ ".mm": "Objective-C++",
70
+ // Scala
71
+ ".scala": "Scala",
72
+ ".sc": "Scala (Script)",
73
+ // Haskell
74
+ ".hs": "Haskell",
75
+ ".lhs": "Literate Haskell",
76
+ // Lua
77
+ ".lua": "Lua",
78
+ // R
79
+ ".r": "R",
80
+ ".R": "R",
81
+ ".rmd": "R Markdown",
82
+ ".Rmd": "R Markdown",
83
+ // Perl
84
+ ".pl": "Perl",
85
+ ".pm": "Perl (Module)",
86
+ ".pod": "Perl (Documentation)",
87
+ ".t": "Perl (Test)",
88
+ // Elixir/Erlang
89
+ ".ex": "Elixir",
90
+ ".exs": "Elixir (Script)",
91
+ ".erl": "Erlang",
92
+ ".hrl": "Erlang (Header)",
93
+ // Clojure
94
+ ".clj": "Clojure",
95
+ ".cljs": "ClojureScript",
96
+ ".cljc": "Clojure (Common)",
97
+ ".edn": "Clojure (EDN)",
98
+ // F#
99
+ ".fs": "F#",
100
+ ".fsx": "F# (Script)",
101
+ ".fsi": "F# (Signature)",
102
+ // OCaml
103
+ ".ml": "OCaml",
104
+ ".mli": "OCaml (Interface)",
105
+ // Lisp/Scheme
106
+ ".lisp": "Lisp",
107
+ ".lsp": "Lisp",
108
+ ".cl": "Common Lisp",
109
+ ".scm": "Scheme",
110
+ ".ss": "Scheme",
111
+ // Groovy
112
+ ".groovy": "Groovy",
113
+ ".gvy": "Groovy",
114
+ ".gy": "Groovy",
115
+ ".gsh": "Groovy (Script)",
116
+ // PowerShell
117
+ ".ps1": "PowerShell",
118
+ ".psm1": "PowerShell (Module)",
119
+ ".psd1": "PowerShell (Data)",
120
+ // Nim
121
+ ".nim": "Nim",
122
+ ".nims": "Nim (Script)",
123
+ // Zig
124
+ ".zig": "Zig",
125
+ // V
126
+ ".v": "V",
127
+ // Julia
128
+ ".jl": "Julia",
129
+ // Crystal
130
+ ".cr": "Crystal",
131
+ // D
132
+ ".d": "D",
133
+ // Assembly
134
+ ".asm": "Assembly",
135
+ ".s": "Assembly",
136
+ ".S": "Assembly",
137
+ // Fortran
138
+ ".f": "Fortran",
139
+ ".f90": "Fortran 90",
140
+ ".f95": "Fortran 95",
141
+ ".f03": "Fortran 2003",
142
+ ".for": "Fortran",
143
+ // COBOL
144
+ ".cob": "COBOL",
145
+ ".cbl": "COBOL",
146
+ ".cobol": "COBOL",
147
+ // Pascal
148
+ ".pas": "Pascal",
149
+ ".pp": "Pascal",
150
+ ".p": "Pascal",
151
+ // Ada
152
+ ".ada": "Ada",
153
+ ".adb": "Ada (Body)",
154
+ ".ads": "Ada (Spec)",
155
+ // Web frameworks/templates
156
+ ".vue": "Vue",
157
+ ".svelte": "Svelte",
158
+ ".hbs": "Handlebars",
159
+ ".handlebars": "Handlebars",
160
+ ".ejs": "EJS",
161
+ ".pug": "Pug",
162
+ ".jade": "Jade",
163
+ // Stylesheets
164
+ ".css": "CSS",
165
+ ".scss": "SCSS",
166
+ ".sass": "Sass",
167
+ ".less": "Less",
168
+ ".styl": "Stylus",
169
+ ".stylus": "Stylus",
170
+ // Markup/Data
171
+ ".html": "HTML",
172
+ ".htm": "HTML",
173
+ ".xhtml": "XHTML",
174
+ ".xml": "XML",
175
+ ".json": "JSON",
176
+ ".yaml": "YAML",
177
+ ".yml": "YAML",
178
+ ".toml": "TOML",
179
+ ".md": "Markdown",
180
+ ".markdown": "Markdown",
181
+ ".rst": "reStructuredText",
182
+ ".tex": "LaTeX",
183
+ ".latex": "LaTeX",
184
+ // Build/Config
185
+ ".dockerfile": "Dockerfile",
186
+ ".mk": "Makefile",
187
+ ".cmake": "CMake",
188
+ ".gradle": "Gradle",
189
+ ".sbt": "SBT",
190
+ // Config files
191
+ ".env": "Environment",
192
+ ".ini": "INI",
193
+ ".cfg": "Configuration",
194
+ ".conf": "Configuration",
195
+ ".config": "Configuration",
196
+ ".properties": "Properties",
197
+ // Logs
198
+ ".log": "Log",
199
+ // Plain text
200
+ ".txt": "Plain Text",
201
+ };
202
+ // =============================================================================
203
+ // EXACT FILENAME MAP
204
+ // =============================================================================
205
+ /**
206
+ * Maps exact filenames (without extension) to their language/type
207
+ * Used for special files like Dockerfile, Makefile, etc.
208
+ */
209
+ export const EXACT_FILENAME_MAP = {
210
+ // Docker
211
+ Dockerfile: "Dockerfile",
212
+ "Dockerfile.dev": "Dockerfile",
213
+ "Dockerfile.prod": "Dockerfile",
214
+ "docker-compose.yml": "Docker Compose",
215
+ "docker-compose.yaml": "Docker Compose",
216
+ // Build tools
217
+ Makefile: "Makefile",
218
+ makefile: "Makefile",
219
+ GNUmakefile: "Makefile",
220
+ CMakeLists: "CMake",
221
+ Rakefile: "Ruby",
222
+ Gemfile: "Ruby",
223
+ "Gemfile.lock": "Ruby",
224
+ Podfile: "Ruby",
225
+ "Podfile.lock": "Ruby",
226
+ Fastfile: "Ruby",
227
+ Appfile: "Ruby",
228
+ Matchfile: "Ruby",
229
+ Guardfile: "Ruby",
230
+ Vagrantfile: "Ruby",
231
+ Berksfile: "Ruby",
232
+ Thorfile: "Ruby",
233
+ Puppetfile: "Ruby",
234
+ Brewfile: "Ruby",
235
+ Buildfile: "Ruby",
236
+ // Node.js
237
+ "package.json": "JSON (npm)",
238
+ "package-lock.json": "JSON (npm)",
239
+ "yarn.lock": "YAML (Yarn)",
240
+ "pnpm-lock.yaml": "YAML (pnpm)",
241
+ "tsconfig.json": "JSON (TypeScript)",
242
+ "jsconfig.json": "JSON (JavaScript)",
243
+ ".npmrc": "npm Config",
244
+ ".yarnrc": "Yarn Config",
245
+ ".nvmrc": "nvm Config",
246
+ // Python
247
+ Pipfile: "TOML (Pipenv)",
248
+ "Pipfile.lock": "JSON (Pipenv)",
249
+ "pyproject.toml": "TOML (Python)",
250
+ "setup.py": "Python",
251
+ "setup.cfg": "INI (Python)",
252
+ "requirements.txt": "Plain Text (pip)",
253
+ "constraints.txt": "Plain Text (pip)",
254
+ "tox.ini": "INI (tox)",
255
+ ".python-version": "Plain Text",
256
+ // CI/CD
257
+ Jenkinsfile: "Groovy",
258
+ ".travis.yml": "YAML (Travis CI)",
259
+ ".gitlab-ci.yml": "YAML (GitLab CI)",
260
+ "azure-pipelines.yml": "YAML (Azure)",
261
+ "bitbucket-pipelines.yml": "YAML (Bitbucket)",
262
+ "circle.yml": "YAML (CircleCI)",
263
+ "appveyor.yml": "YAML (AppVeyor)",
264
+ // Git
265
+ ".gitignore": "Git Ignore",
266
+ ".gitattributes": "Git Attributes",
267
+ ".gitmodules": "Git Modules",
268
+ ".gitkeep": "Git Keep",
269
+ // Editors/IDE
270
+ ".editorconfig": "EditorConfig",
271
+ ".prettierrc": "JSON (Prettier)",
272
+ ".prettierignore": "Prettier Ignore",
273
+ ".eslintrc": "JSON (ESLint)",
274
+ ".eslintignore": "ESLint Ignore",
275
+ ".stylelintrc": "JSON (Stylelint)",
276
+ ".babelrc": "JSON (Babel)",
277
+ ".browserslistrc": "Browserslist",
278
+ // Misc
279
+ LICENSE: "License",
280
+ "LICENSE.md": "License",
281
+ "LICENSE.txt": "License",
282
+ CHANGELOG: "Changelog",
283
+ "CHANGELOG.md": "Changelog",
284
+ README: "Readme",
285
+ "README.md": "Readme",
286
+ AUTHORS: "Authors",
287
+ CONTRIBUTORS: "Contributors",
288
+ CODEOWNERS: "GitHub CODEOWNERS",
289
+ ".env": "Environment",
290
+ ".env.local": "Environment",
291
+ ".env.development": "Environment",
292
+ ".env.production": "Environment",
293
+ ".env.test": "Environment",
294
+ ".env.example": "Environment",
295
+ Procfile: "Procfile (Heroku)",
296
+ };
297
+ // =============================================================================
298
+ // UTILITY FUNCTIONS
299
+ // =============================================================================
300
+ /**
301
+ * Detects the programming language from a filename
302
+ *
303
+ * @param filename - The filename to detect language from
304
+ * @returns The detected language name or 'Unknown'
305
+ *
306
+ * @example
307
+ * ```typescript
308
+ * detectLanguageFromFilename('app.ts') // Returns 'TypeScript'
309
+ * detectLanguageFromFilename('Dockerfile') // Returns 'Dockerfile'
310
+ * detectLanguageFromFilename('unknown.xyz') // Returns 'Unknown'
311
+ * ```
312
+ */
313
+ export function detectLanguageFromFilename(filename) {
314
+ if (!filename) {
315
+ return "Unknown";
316
+ }
317
+ // Check exact filename matches first (Dockerfile, Makefile, etc.)
318
+ const exactMatch = EXACT_FILENAME_MAP[filename];
319
+ if (exactMatch) {
320
+ return exactMatch;
321
+ }
322
+ // Also check the basename for exact matches (in case full path is passed)
323
+ const basename = pathBasename(filename);
324
+ const basenameMatch = EXACT_FILENAME_MAP[basename];
325
+ if (basenameMatch) {
326
+ return basenameMatch;
327
+ }
328
+ // Get the file extension
329
+ const lastDotIndex = basename.lastIndexOf(".");
330
+ if (lastDotIndex === -1) {
331
+ return "Unknown";
332
+ }
333
+ const extension = basename.slice(lastDotIndex).toLowerCase();
334
+ // Check extension in language map
335
+ const languageMatch = LANGUAGE_MAP[extension];
336
+ if (languageMatch) {
337
+ return languageMatch;
338
+ }
339
+ // Handle case-sensitive extensions (like .R)
340
+ const originalExtension = basename.slice(lastDotIndex);
341
+ const caseSensitiveMatch = LANGUAGE_MAP[originalExtension];
342
+ if (caseSensitiveMatch) {
343
+ return caseSensitiveMatch;
344
+ }
345
+ return "Unknown";
346
+ }
347
+ /**
348
+ * Gets the lowercase language identifier for syntax highlighting
349
+ *
350
+ * @param filename - The filename to get language identifier from
351
+ * @returns The lowercase language identifier suitable for syntax highlighting
352
+ *
353
+ * @example
354
+ * ```typescript
355
+ * getLanguageIdentifier('app.ts') // Returns 'typescript'
356
+ * getLanguageIdentifier('Dockerfile') // Returns 'dockerfile'
357
+ * ```
358
+ */
359
+ export function getLanguageIdentifier(filename) {
360
+ const language = detectLanguageFromFilename(filename);
361
+ // Convert display name to identifier
362
+ return language
363
+ .toLowerCase()
364
+ .replace(/\s*\([^)]*\)\s*/g, "") // Remove parenthetical content
365
+ .replace(/\s+/g, "-") // Replace spaces with hyphens
366
+ .trim();
367
+ }
368
+ /**
369
+ * Checks if a file is a source code file based on its extension
370
+ *
371
+ * @param filename - The filename to check
372
+ * @returns True if the file is a source code file
373
+ */
374
+ export function isSourceCodeFile(filename) {
375
+ const language = detectLanguageFromFilename(filename);
376
+ const nonCodeLanguages = [
377
+ "Unknown",
378
+ "Plain Text",
379
+ "Log",
380
+ "Environment",
381
+ "Configuration",
382
+ "Properties",
383
+ "License",
384
+ "Changelog",
385
+ "Readme",
386
+ "Authors",
387
+ "Contributors",
388
+ "Git Ignore",
389
+ "Git Attributes",
390
+ "Git Modules",
391
+ "Git Keep",
392
+ ];
393
+ return !nonCodeLanguages.includes(language);
394
+ }
395
+ /**
396
+ * Gets all supported file extensions
397
+ *
398
+ * @returns Array of all supported file extensions
399
+ */
400
+ export function getSupportedExtensions() {
401
+ return Object.keys(LANGUAGE_MAP);
402
+ }
403
+ /**
404
+ * Gets all supported exact filenames
405
+ *
406
+ * @returns Array of all supported exact filenames
407
+ */
408
+ export function getSupportedFilenames() {
409
+ return Object.keys(EXACT_FILENAME_MAP);
410
+ }