@gitsense/gscb-git-tools 0.2.0 → 0.3.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 (75) hide show
  1. package/dist/cjs/common/logger.js +97 -0
  2. package/dist/cjs/common/logger.js.map +1 -0
  3. package/dist/cjs/common/metadata-manager.js +196 -0
  4. package/dist/cjs/common/metadata-manager.js.map +1 -0
  5. package/dist/cjs/importer/chat-manager/chat-creator.js +90 -0
  6. package/dist/cjs/importer/chat-manager/chat-creator.js.map +1 -0
  7. package/dist/cjs/importer/chat-manager/chat-manager.js +179 -0
  8. package/dist/cjs/importer/chat-manager/chat-manager.js.map +1 -0
  9. package/dist/cjs/importer/chat-manager/constants.js +66 -0
  10. package/dist/cjs/importer/chat-manager/constants.js.map +1 -0
  11. package/dist/cjs/importer/chat-manager/group-manager.js +56 -0
  12. package/dist/cjs/importer/chat-manager/group-manager.js.map +1 -0
  13. package/dist/cjs/importer/chat-manager/hierarchy-manager.js +115 -0
  14. package/dist/cjs/importer/chat-manager/hierarchy-manager.js.map +1 -0
  15. package/dist/cjs/importer/chat-manager/message-manager.js +126 -0
  16. package/dist/cjs/importer/chat-manager/message-manager.js.map +1 -0
  17. package/dist/cjs/importer/constants.js +30 -0
  18. package/dist/cjs/importer/constants.js.map +1 -0
  19. package/dist/cjs/importer/core/directory-processor.js +343 -0
  20. package/dist/cjs/importer/core/directory-processor.js.map +1 -0
  21. package/dist/cjs/importer/core/error-handler.js +64 -0
  22. package/dist/cjs/importer/core/error-handler.js.map +1 -0
  23. package/dist/cjs/importer/core/import-processor.js +167 -0
  24. package/dist/cjs/importer/core/import-processor.js.map +1 -0
  25. package/dist/cjs/importer/core/importer.js +135 -0
  26. package/dist/cjs/importer/core/importer.js.map +1 -0
  27. package/dist/cjs/importer/core/utils.js +66 -0
  28. package/dist/cjs/importer/core/utils.js.map +1 -0
  29. package/dist/cjs/importer/file-processor.js +199 -0
  30. package/dist/cjs/importer/file-processor.js.map +1 -0
  31. package/dist/cjs/importer/language-utils.js +286 -0
  32. package/dist/cjs/importer/language-utils.js.map +1 -0
  33. package/dist/cjs/importer/tree-processor.js +119 -0
  34. package/dist/cjs/importer/tree-processor.js.map +1 -0
  35. package/dist/cjs/index.js +12 -0
  36. package/dist/cjs/index.js.map +1 -0
  37. package/dist/cjs/package.json +3 -0
  38. package/dist/esm/common/logger.js +95 -0
  39. package/dist/esm/common/logger.js.map +1 -0
  40. package/dist/esm/common/metadata-manager.js +194 -0
  41. package/dist/esm/common/metadata-manager.js.map +1 -0
  42. package/dist/esm/importer/chat-manager/chat-creator.js +88 -0
  43. package/dist/esm/importer/chat-manager/chat-creator.js.map +1 -0
  44. package/dist/esm/importer/chat-manager/chat-manager.js +177 -0
  45. package/dist/esm/importer/chat-manager/chat-manager.js.map +1 -0
  46. package/dist/esm/importer/chat-manager/constants.js +48 -0
  47. package/dist/esm/importer/chat-manager/constants.js.map +1 -0
  48. package/dist/esm/importer/chat-manager/group-manager.js +54 -0
  49. package/dist/esm/importer/chat-manager/group-manager.js.map +1 -0
  50. package/dist/esm/importer/chat-manager/hierarchy-manager.js +113 -0
  51. package/dist/esm/importer/chat-manager/hierarchy-manager.js.map +1 -0
  52. package/dist/esm/importer/chat-manager/message-manager.js +124 -0
  53. package/dist/esm/importer/chat-manager/message-manager.js.map +1 -0
  54. package/dist/esm/importer/constants.js +28 -0
  55. package/dist/esm/importer/constants.js.map +1 -0
  56. package/dist/esm/importer/core/directory-processor.js +337 -0
  57. package/dist/esm/importer/core/directory-processor.js.map +1 -0
  58. package/dist/esm/importer/core/error-handler.js +62 -0
  59. package/dist/esm/importer/core/error-handler.js.map +1 -0
  60. package/dist/esm/importer/core/import-processor.js +165 -0
  61. package/dist/esm/importer/core/import-processor.js.map +1 -0
  62. package/dist/esm/importer/core/importer.js +133 -0
  63. package/dist/esm/importer/core/importer.js.map +1 -0
  64. package/dist/esm/importer/core/utils.js +64 -0
  65. package/dist/esm/importer/core/utils.js.map +1 -0
  66. package/dist/esm/importer/file-processor.js +193 -0
  67. package/dist/esm/importer/file-processor.js.map +1 -0
  68. package/dist/esm/importer/language-utils.js +279 -0
  69. package/dist/esm/importer/language-utils.js.map +1 -0
  70. package/dist/esm/importer/tree-processor.js +113 -0
  71. package/dist/esm/importer/tree-processor.js.map +1 -0
  72. package/dist/esm/index.js +4 -0
  73. package/dist/esm/index.js.map +1 -0
  74. package/dist/index.d.ts +215 -0
  75. package/package.json +1 -1
@@ -0,0 +1,286 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var path__default = /*#__PURE__*/_interopDefault(path);
8
+
9
+ /**
10
+ * Component: Language Utilities
11
+ * Block-UUID: 6ee96820-231a-4832-ac4d-dc17e6bf5eab
12
+ * Parent-UUID: 27616faf-e61e-4089-89dc-277a29f38ec9
13
+ * Version: 1.2.0
14
+ * Description: Language detection and syntax highlighting
15
+ * Language: TypeScript
16
+ * Created-at: 2025-06-30T20:36:07.802Z
17
+ * Authors: OpenRouter - DeepSeek v3 (v1.0.0), Gemini 2.5 Flash Thinking (v1.1.0), Claude 3.5 Sonnet (v1.2.0)
18
+ */
19
+ const detectLanguage = (filePath) => {
20
+ const ext = path__default.default.extname(filePath).toLowerCase();
21
+ const languageMap = {
22
+ // Web Technologies
23
+ '.js': 'javascript',
24
+ '.jsx': 'javascript',
25
+ '.ts': 'typescript',
26
+ '.tsx': 'typescript',
27
+ '.html': 'html',
28
+ '.htm': 'html',
29
+ '.xhtml': 'html',
30
+ '.css': 'css',
31
+ '.scss': 'scss',
32
+ '.sass': 'sass',
33
+ '.less': 'less',
34
+ '.styl': 'stylus',
35
+ '.vue': 'vue',
36
+ '.svelte': 'svelte',
37
+ '.astro': 'astro',
38
+ '.wasm': 'wasm',
39
+ '.webmanifest': 'json',
40
+ // System Programming
41
+ '.c': 'c',
42
+ '.h': 'c',
43
+ '.cpp': 'cpp',
44
+ '.hpp': 'cpp',
45
+ '.cc': 'cpp',
46
+ '.cxx': 'cpp',
47
+ '.c++': 'cpp',
48
+ '.rs': 'rust',
49
+ '.go': 'go',
50
+ '.zig': 'zig',
51
+ '.d': 'd',
52
+ // JVM Languages
53
+ '.java': 'java',
54
+ '.kt': 'kotlin',
55
+ '.kts': 'kotlin',
56
+ '.scala': 'scala',
57
+ '.sc': 'scala',
58
+ '.groovy': 'groovy',
59
+ '.clj': 'clojure',
60
+ '.cljs': 'clojure',
61
+ '.cljc': 'clojure',
62
+ // Microsoft Stack
63
+ '.cs': 'csharp',
64
+ '.vb': 'vbnet',
65
+ '.fs': 'fsharp',
66
+ '.fsx': 'fsharp',
67
+ '.fsi': 'fsharp',
68
+ '.fsscript': 'fsharp',
69
+ '.xaml': 'xml',
70
+ '.razor': 'razor',
71
+ '.cshtml': 'razor',
72
+ '.vbhtml': 'razor',
73
+ // Scripting Languages
74
+ '.py': 'python',
75
+ '.pyi': 'python',
76
+ '.rb': 'ruby',
77
+ '.rbw': 'ruby',
78
+ '.rake': 'ruby',
79
+ '.php': 'php',
80
+ '.php4': 'php',
81
+ '.php5': 'php',
82
+ '.phtml': 'php',
83
+ '.perl': 'perl',
84
+ '.pl': 'perl',
85
+ '.pm': 'perl',
86
+ '.t': 'perl',
87
+ '.lua': 'lua',
88
+ '.tcl': 'tcl',
89
+ '.r': 'r',
90
+ '.rmd': 'rmarkdown',
91
+ // Shell Scripts
92
+ '.sh': 'bash',
93
+ '.bash': 'bash',
94
+ '.zsh': 'zsh',
95
+ '.fish': 'fish',
96
+ '.ksh': 'ksh',
97
+ '.csh': 'csh',
98
+ '.ps1': 'powershell',
99
+ '.psm1': 'powershell',
100
+ '.psd1': 'powershell',
101
+ // Functional Languages
102
+ '.hs': 'haskell',
103
+ '.lhs': 'haskell',
104
+ '.elm': 'elm',
105
+ '.erl': 'erlang',
106
+ '.hrl': 'erlang',
107
+ '.ex': 'elixir',
108
+ '.exs': 'elixir',
109
+ '.eex': 'elixir',
110
+ '.leex': 'elixir',
111
+ '.mli': 'ocaml',
112
+ '.re': 'reason',
113
+ '.rei': 'reason',
114
+ // Mobile Development
115
+ '.swift': 'swift',
116
+ '.m': 'objective-c',
117
+ '.mm': 'objective-c',
118
+ '.dart': 'dart',
119
+ '.gradle': 'gradle',
120
+ // Data & Config
121
+ '.json': 'json',
122
+ '.json5': 'json5',
123
+ '.yaml': 'yaml',
124
+ '.yml': 'yaml',
125
+ '.toml': 'toml',
126
+ '.ini': 'ini',
127
+ '.conf': 'conf',
128
+ '.config': 'config',
129
+ '.xml': 'xml',
130
+ '.plist': 'xml',
131
+ '.csv': 'csv',
132
+ '.tsv': 'tsv',
133
+ // Database
134
+ '.sql': 'sql',
135
+ '.mysql': 'sql',
136
+ '.pgsql': 'sql',
137
+ '.sqlite': 'sql',
138
+ '.prisma': 'prisma',
139
+ '.graphql': 'graphql',
140
+ '.gql': 'graphql',
141
+ // Documentation
142
+ '.md': 'markdown',
143
+ '.markdown': 'markdown',
144
+ '.mdown': 'markdown',
145
+ '.mdx': 'mdx',
146
+ '.rst': 'restructuredtext',
147
+ '.asciidoc': 'asciidoc',
148
+ '.adoc': 'asciidoc',
149
+ '.tex': 'latex',
150
+ '.ltx': 'latex',
151
+ // Game Development
152
+ '.gd': 'gdscript',
153
+ '.hlsl': 'hlsl',
154
+ '.glsl': 'glsl',
155
+ '.shader': 'shaderlab',
156
+ // Hardware Description
157
+ '.v': 'verilog',
158
+ '.vh': 'verilog',
159
+ '.sv': 'systemverilog',
160
+ '.svh': 'systemverilog',
161
+ '.vhd': 'vhdl',
162
+ '.vhdl': 'vhdl',
163
+ // Other Languages
164
+ '.jl': 'julia',
165
+ '.cr': 'crystal',
166
+ '.nim': 'nim',
167
+ '.ml': 'ocaml',
168
+ '.f90': 'fortran',
169
+ '.f95': 'fortran',
170
+ '.f03': 'fortran',
171
+ '.f08': 'fortran',
172
+ '.pro': 'prolog',
173
+ '.bas': 'basic',
174
+ '.bi': 'basic',
175
+ '.coffee': 'coffeescript',
176
+ '.litcoffee': 'coffeescript',
177
+ '.imba': 'imba',
178
+ '.rkt': 'racket',
179
+ };
180
+ return languageMap[ext] || 'plaintext';
181
+ };
182
+ const getHighlightSyntax = (filePath) => {
183
+ const highlightMap = {
184
+ // Web Technologies
185
+ '.js': 'javascript',
186
+ '.jsx': 'jsx',
187
+ '.ts': 'typescript',
188
+ '.tsx': 'tsx',
189
+ '.html': 'html',
190
+ '.htm': 'html',
191
+ '.css': 'css',
192
+ '.scss': 'scss',
193
+ '.sass': 'sass',
194
+ '.less': 'less',
195
+ '.vue': 'vue',
196
+ '.svelte': 'svelte',
197
+ '.astro': 'astro',
198
+ // System Programming
199
+ '.c': 'c',
200
+ '.h': 'c',
201
+ '.cpp': 'cpp',
202
+ '.hpp': 'cpp',
203
+ '.cc': 'cpp',
204
+ '.rs': 'rust',
205
+ '.go': 'go',
206
+ '.zig': 'zig',
207
+ // JVM & .NET
208
+ '.java': 'java',
209
+ '.kt': 'kotlin',
210
+ '.cs': 'csharp',
211
+ '.fs': 'fsharp',
212
+ '.scala': 'scala',
213
+ '.groovy': 'groovy',
214
+ // Scripting
215
+ '.py': 'python',
216
+ '.rb': 'ruby',
217
+ '.php': 'php',
218
+ '.pl': 'perl',
219
+ '.lua': 'lua',
220
+ '.r': 'r',
221
+ '.sh': 'bash',
222
+ '.bash': 'bash',
223
+ '.zsh': 'zsh',
224
+ '.fish': 'fish',
225
+ '.ps1': 'powershell',
226
+ // Data & Config
227
+ '.json': 'json',
228
+ '.yaml': 'yaml',
229
+ '.yml': 'yaml',
230
+ '.toml': 'toml',
231
+ '.xml': 'xml',
232
+ '.sql': 'sql',
233
+ '.graphql': 'graphql',
234
+ // Documentation
235
+ '.md': 'markdown',
236
+ '.mdx': 'mdx',
237
+ '.tex': 'latex',
238
+ // Others
239
+ '.dockerfile': 'dockerfile',
240
+ '.makefile': 'makefile',
241
+ '.nim': 'nim',
242
+ '.swift': 'swift',
243
+ '.dart': 'dart',
244
+ };
245
+ const ext = path__default.default.extname(filePath).toLowerCase();
246
+ const filename = path__default.default.basename(filePath).toLowerCase();
247
+ const specialFiles = {
248
+ 'dockerfile': 'dockerfile',
249
+ 'docker-compose.yml': 'yaml',
250
+ 'docker-compose.yaml': 'yaml',
251
+ 'makefile': 'makefile',
252
+ 'gemfile': 'ruby',
253
+ 'rakefile': 'ruby',
254
+ '.gitignore': 'gitignore',
255
+ '.gitattributes': 'gitattributes',
256
+ '.env': 'dotenv',
257
+ '.env.local': 'dotenv',
258
+ '.env.development': 'dotenv',
259
+ '.env.production': 'dotenv',
260
+ 'package.json': 'json',
261
+ 'package-lock.json': 'json',
262
+ 'composer.json': 'json',
263
+ 'tsconfig.json': 'jsonc',
264
+ 'jsconfig.json': 'jsonc',
265
+ '.eslintrc': 'json',
266
+ '.eslintrc.json': 'json',
267
+ '.prettierrc': 'json',
268
+ '.prettierrc.json': 'json',
269
+ 'cargo.toml': 'toml',
270
+ 'go.mod': 'gomod',
271
+ 'go.sum': 'gosum',
272
+ 'requirements.txt': 'pip',
273
+ 'poetry.lock': 'toml',
274
+ 'pyproject.toml': 'toml',
275
+ 'CMakeLists.txt': 'cmake',
276
+ '.editorconfig': 'editorconfig',
277
+ };
278
+ if (specialFiles[filename]) {
279
+ return specialFiles[filename];
280
+ }
281
+ return highlightMap[ext] || detectLanguage(filePath);
282
+ };
283
+
284
+ exports.detectLanguage = detectLanguage;
285
+ exports.getHighlightSyntax = getHighlightSyntax;
286
+ //# sourceMappingURL=language-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-utils.js","sources":["../../../src/importer/language-utils.ts"],"sourcesContent":[null],"names":["path"],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var gscbUtils = require('@gitsense/gscb-utils');
5
+ var utils = require('./core/utils.js');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var path__default = /*#__PURE__*/_interopDefault(path);
10
+
11
+ /**
12
+ * Component: Tree Processor
13
+ * Block-UUID: 5a7b9c3d-2e1f-4a5b-8c7d-6e5f4a3b2c1d
14
+ * Parent-UUID: 628b49b7-ce3d-42ce-b08d-48e7debf399c
15
+ * Version: 4.0.0
16
+ * Purpose: Add support for handling deleted files and directories
17
+ * Language: TypeScript
18
+ * Created-at: 2025-03-11T20:39:00.124Z
19
+ * Updated-at: 2025-03-16T06:45:00.124Z
20
+ * Authors: Claude 3.5 Sonnet (v3.0.0), Bard, Claude 3.5 Sonnet (v3.1.0), together.ai - DeepSeek v3 (v3.3.0), Claude 3.7 Sonnet (v3.4.0), together.ai - DeepSeek v3 (v4.0.0)
21
+ */
22
+ class TreeProcessor {
23
+ gitRepo;
24
+ chatManager;
25
+ fileProcessor;
26
+ repoGroupId;
27
+ logger;
28
+ constructor(gitRepo, chatManager, fileProcessor, repoGroupId, logger) {
29
+ this.gitRepo = gitRepo;
30
+ this.chatManager = chatManager;
31
+ this.fileProcessor = fileProcessor;
32
+ this.repoGroupId = repoGroupId;
33
+ this.logger = logger;
34
+ }
35
+ /**
36
+ * Processes all files and directories in the repository, ensuring a proper parent-child relationship.
37
+ */
38
+ async processFiles(rootChatId) {
39
+ try {
40
+ // Start processing from the root directory. Empty string is root.
41
+ await this.processDirectory('', rootChatId);
42
+ }
43
+ catch (error) {
44
+ throw new Error(`Failed to process files: ${error instanceof Error ? error.message : String(error)}`);
45
+ }
46
+ }
47
+ /**
48
+ * Recursively processes a directory and its contents.
49
+ * Returns the latest GitCommitInfo for the directory.
50
+ */
51
+ async processDirectory(dirPath, parentChatId, treeSha = '') {
52
+ try {
53
+ // Used to define chat order
54
+ let orderWeight = 0;
55
+ // Create a chat for the current directory
56
+ const dirChatId = dirPath === ''
57
+ ? parentChatId
58
+ : await this.createDirectoryChat(dirPath, parentChatId, treeSha, orderWeight);
59
+ // List the contents of the directory
60
+ const entries = await this.gitRepo.listDirectory(dirPath);
61
+ // Separate directories and files, then sort alphabetically
62
+ const directories = entries
63
+ .filter(entry => entry.type === 'tree')
64
+ .sort((a, b) => b.path.localeCompare(a.path));
65
+ const files = entries
66
+ .filter(entry => entry.type === 'blob')
67
+ .sort((a, b) => a.path.localeCompare(b.path));
68
+ // Process directories and files
69
+ const childCommits = [];
70
+ for (const dir of directories) {
71
+ orderWeight += 10;
72
+ const childCommit = await this.processDirectory(dirPath + (dirPath === "" ? "" : "/") + dir.path, dirChatId, dir.oid);
73
+ if (childCommit)
74
+ childCommits.push(childCommit);
75
+ }
76
+ for (const file of files) {
77
+ const { path } = file;
78
+ if (await this.fileProcessor.shouldSkipFile(path))
79
+ continue;
80
+ orderWeight += 10;
81
+ const fileCommit = await this.fileProcessor.processFile(dirPath + (dirPath === "" ? "" : "/") + path, dirChatId, orderWeight);
82
+ if (fileCommit)
83
+ childCommits.push(fileCommit);
84
+ }
85
+ // Determine the latest commit for the directory
86
+ const latestCommit = utils.Utils.getLatestCommit(childCommits);
87
+ await this.chatManager.updateDirectoryMetadata(dirChatId, dirPath, latestCommit);
88
+ return latestCommit;
89
+ }
90
+ catch (error) {
91
+ console.trace();
92
+ throw new Error(`Failed to process directory '${dirPath}': ${error instanceof Error ? error.message : String(error)}`);
93
+ }
94
+ }
95
+ /**
96
+ * Creates a chat for a directory.
97
+ */
98
+ async createDirectoryChat(dirPath, parentChatId, treeSha, orderWeight) {
99
+ const normalizedPath = gscbUtils.PathUtils.normalize(dirPath);
100
+ const now = new Date().toISOString();
101
+ const type = 'git-tree';
102
+ const meta = {
103
+ type,
104
+ tree: treeSha,
105
+ path: normalizedPath,
106
+ name: path__default.default.basename(dirPath),
107
+ tokens: null,
108
+ commit: null,
109
+ status: 'importing',
110
+ importStartedAt: now
111
+ };
112
+ // Use ChatManager to create the chat
113
+ const chatId = await this.chatManager.createChat(type, path__default.default.basename(dirPath), parentChatId, this.repoGroupId, meta, '', orderWeight);
114
+ return chatId;
115
+ }
116
+ }
117
+
118
+ exports.TreeProcessor = TreeProcessor;
119
+ //# sourceMappingURL=tree-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-processor.js","sources":["../../../src/importer/tree-processor.ts"],"sourcesContent":[null],"names":["Utils","PathUtils","path"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var importer = require('./importer/core/importer.js');
4
+ var chatManager = require('./importer/chat-manager/chat-manager.js');
5
+ var logger = require('./common/logger.js');
6
+
7
+
8
+
9
+ exports.GitImporter = importer.GitImporter;
10
+ exports.ChatManager = chatManager.ChatManager;
11
+ exports.Logger = logger.Logger;
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Component: Logger
3
+ * Block-UUID: 8e2a3b1c-9d4f-4a5e-8b6a-7c8d9e0f1a2b
4
+ * Parent-UUID: N/A
5
+ * Version: 1.0.0
6
+ * Purpose: Centralized logging utility for the application.
7
+ * Language: TypeScript
8
+ * Created-at: 2025-03-12T18:06:11.373Z
9
+ * Authors: OpenRouter - Gemini Flash 2.0 (v1.0.0)
10
+ */
11
+ class Logger {
12
+ verbose;
13
+ constructor(verbose = false) {
14
+ this.verbose = verbose;
15
+ }
16
+ /**
17
+ * Logs messages to the console if verbose mode is enabled.
18
+ */
19
+ log(message, details, isError = false) {
20
+ if (this.verbose || isError) {
21
+ const timestamp = new Date().toISOString();
22
+ const logLevel = isError ? 'ERROR' : 'INFO';
23
+ let fullMessage = `${timestamp} [${logLevel}] ${message}`;
24
+ if (details) {
25
+ const detailMessage = details instanceof Error ? details.message : String(details);
26
+ fullMessage += ` ${detailMessage}`;
27
+ if (details instanceof Error && details.stack) {
28
+ fullMessage += `\n${details.stack}`;
29
+ }
30
+ }
31
+ if (isError) {
32
+ console.error(fullMessage);
33
+ }
34
+ else {
35
+ console.log(fullMessage);
36
+ }
37
+ }
38
+ }
39
+ /**
40
+ * Logs a debug message.
41
+ * @param message - The message to log.
42
+ * @param details - Optional details to include in the log.
43
+ */
44
+ debug(message, details) {
45
+ if (this.verbose) {
46
+ const timestamp = new Date().toISOString();
47
+ const fullMessage = `${timestamp} [DEBUG] ${message} ${details instanceof Error ? details.message : String(details)}`;
48
+ console.log(fullMessage);
49
+ }
50
+ }
51
+ /**
52
+ * Logs an info message.
53
+ * @param message - The message to log.
54
+ * @param details - Optional details to include in the log.
55
+ */
56
+ info(message, details) {
57
+ const timestamp = new Date().toISOString();
58
+ const fullMessage = `${timestamp} [INFO] ${message} ${details instanceof Error ? details.message : String(details)}`;
59
+ console.log(fullMessage);
60
+ }
61
+ /**
62
+ * Logs a warning message.
63
+ * @param message - The message to log.
64
+ * @param details - Optional details to include in the log.
65
+ */
66
+ warn(message, details) {
67
+ const timestamp = new Date().toISOString();
68
+ const fullMessage = `${timestamp} [WARN] ${message} ${details instanceof Error ? details.message : String(details)}`;
69
+ console.warn(fullMessage);
70
+ }
71
+ /**
72
+ * Logs an error message.
73
+ * @param message - The message to log.
74
+ * @param error - Optional error object to include in the log.
75
+ */
76
+ error(message, error) {
77
+ const timestamp = new Date().toISOString();
78
+ let fullMessage = `${timestamp} [ERROR] ${message}`;
79
+ if (error) {
80
+ if (error instanceof Error) {
81
+ fullMessage += ` ${error.message}`;
82
+ if (error.stack) {
83
+ fullMessage += `\n${error.stack}`;
84
+ }
85
+ }
86
+ else {
87
+ fullMessage += ` ${String(error)}`;
88
+ }
89
+ }
90
+ console.error(fullMessage);
91
+ }
92
+ }
93
+
94
+ export { Logger };
95
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sources":["../../../src/common/logger.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;AASG;MAGU,MAAM,CAAA;AACE,IAAA,OAAO;AAExB,IAAA,WAAA,CAAY,UAAmB,KAAK,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;AAG1B;;AAEG;AACH,IAAA,GAAG,CAAC,OAAe,EAAE,OAAiB,EAAE,UAAmB,KAAK,EAAA;AAC5D,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC1C,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM;YAC3C,IAAI,WAAW,GAAG,CAAG,EAAA,SAAS,KAAK,QAAQ,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE;YAEzD,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,aAAa,GAAG,OAAO,YAAY,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAClF,gBAAA,WAAW,IAAI,CAAA,CAAA,EAAI,aAAa,CAAA,CAAE;gBAClC,IAAI,OAAO,YAAY,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE;AAC3C,oBAAA,WAAW,IAAI,CAAK,EAAA,EAAA,OAAO,CAAC,KAAK,EAAE;;;YAI3C,IAAI,OAAO,EAAE;AACT,gBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;;iBACvB;AACH,gBAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;;;;AAKpC;;;;AAIG;IACH,KAAK,CAAC,OAAe,EAAE,OAAiB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC1C,MAAM,WAAW,GAAG,CAAA,EAAG,SAAS,CAAA,SAAA,EAAY,OAAO,CAAI,CAAA,EAAA,OAAO,YAAY,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,CAAE;AACrH,YAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;;;AAIhC;;;;AAIG;IACH,IAAI,CAAC,OAAe,EAAE,OAAiB,EAAA;QACnC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC1C,MAAM,WAAW,GAAG,CAAA,EAAG,SAAS,CAAA,QAAA,EAAW,OAAO,CAAI,CAAA,EAAA,OAAO,YAAY,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,CAAE;AACpH,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;;AAG5B;;;;AAIG;IACH,IAAI,CAAC,OAAe,EAAE,OAAiB,EAAA;QACnC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC1C,MAAM,WAAW,GAAG,CAAA,EAAG,SAAS,CAAA,QAAA,EAAW,OAAO,CAAI,CAAA,EAAA,OAAO,YAAY,KAAK,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,CAAE;AACpH,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;;AAG7B;;;;AAIG;IACH,KAAK,CAAC,OAAe,EAAE,KAAe,EAAA;QAClC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC1C,QAAA,IAAI,WAAW,GAAG,CAAA,EAAG,SAAS,CAAY,SAAA,EAAA,OAAO,EAAE;QAEnD,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,KAAK,YAAY,KAAK,EAAE;AACxB,gBAAA,WAAW,IAAI,CAAI,CAAA,EAAA,KAAK,CAAC,OAAO,EAAE;AAClC,gBAAA,IAAI,KAAK,CAAC,KAAK,EAAE;AACb,oBAAA,WAAW,IAAI,CAAK,EAAA,EAAA,KAAK,CAAC,KAAK,EAAE;;;iBAElC;AACH,gBAAA,WAAW,IAAI,CAAI,CAAA,EAAA,MAAM,CAAC,KAAK,CAAC,EAAE;;;AAI1C,QAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;;AAEjC;;;;"}