@manojkmfsi/monodog 1.1.1 → 1.1.3

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 (41) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +12 -0
  3. package/dist/config-loader.js +7 -8
  4. package/dist/controllers/commit-controller.js +5 -4
  5. package/dist/controllers/config-controller.js +4 -3
  6. package/dist/controllers/health-controller.js +2 -1
  7. package/dist/controllers/package-controller.js +4 -3
  8. package/dist/middleware/logger.js +8 -2
  9. package/dist/middleware/server-startup.js +2 -2
  10. package/dist/middleware/swagger-middleware.js +3 -2
  11. package/dist/repositories/commit-repository.js +4 -3
  12. package/dist/repositories/dependency-repository.js +4 -3
  13. package/dist/services/commit-service.js +7 -7
  14. package/dist/services/config-service.js +12 -11
  15. package/dist/services/git-service.js +9 -8
  16. package/dist/services/health-service.js +5 -4
  17. package/dist/services/package-service.js +8 -8
  18. package/dist/utils/ci-status.js +3 -2
  19. package/dist/utils/db-utils.js +87 -0
  20. package/dist/utils/monorepo-scanner.js +8 -7
  21. package/dist/utils/utilities.js +21 -18
  22. package/package.json +1 -1
  23. package/src/config-loader.ts +9 -11
  24. package/src/controllers/commit-controller.ts +5 -4
  25. package/src/controllers/config-controller.ts +4 -3
  26. package/src/controllers/health-controller.ts +2 -1
  27. package/src/controllers/package-controller.ts +4 -3
  28. package/src/middleware/logger.ts +9 -2
  29. package/src/middleware/server-startup.ts +2 -2
  30. package/src/middleware/swagger-middleware.ts +3 -2
  31. package/src/repositories/commit-repository.ts +4 -3
  32. package/src/repositories/dependency-repository.ts +4 -3
  33. package/src/services/commit-service.ts +7 -7
  34. package/src/services/config-service.ts +12 -11
  35. package/src/services/git-service.ts +9 -8
  36. package/src/services/health-service.ts +5 -4
  37. package/src/services/package-service.ts +8 -7
  38. package/src/utils/ci-status.ts +3 -2
  39. package/src/utils/db-utils.ts +92 -0
  40. package/src/utils/monorepo-scanner.ts +8 -10
  41. package/src/utils/utilities.ts +22 -20
@@ -1,4 +1,4 @@
1
1
 
2
- > @manojkmfsi/monodog@1.1.1 build /home/runner/work/monodog/monodog/packages/monoapp
2
+ > @manojkmfsi/monodog@1.1.3 build /home/runner/work/monodog/monodog/packages/monoapp
3
3
  > rm -rf dist && tsc
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @manojkmfsi/monoapp
2
2
 
3
+ ## 1.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - comment console log in dashboard
8
+
9
+ ## 1.1.2
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated logging - replace console logs with morgan
14
+
3
15
  ## 1.1.1
4
16
 
5
17
  ### Patch Changes
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.appConfig = void 0;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
+ const logger_1 = require("./middleware/logger");
39
40
  // Global variable to hold the loaded config
40
41
  let config = null;
41
42
  /**
@@ -54,7 +55,7 @@ function loadConfig() {
54
55
  const configPath = path.resolve(rootPath, 'monodog-config.json');
55
56
  createConfigFileIfMissing(rootPath);
56
57
  if (!fs.existsSync(configPath)) {
57
- console.error(`ERROR1: Configuration file not found at ${configPath}`);
58
+ logger_1.AppLogger.error(`Configuration file not found at ${configPath}`);
58
59
  process.exit(1);
59
60
  }
60
61
  try {
@@ -63,12 +64,10 @@ function loadConfig() {
63
64
  const parsedConfig = JSON.parse(fileContent);
64
65
  // Cache and return
65
66
  config = parsedConfig;
66
- process.stderr.write('[Config] Loaded configuration from: ...\n');
67
67
  return config;
68
68
  }
69
69
  catch (error) {
70
- console.error('ERROR: Failed to read or parse monodog-config.json.');
71
- console.error(error);
70
+ logger_1.AppLogger.error('Failed to read or parse monodog-config.json.', error);
72
71
  process.exit(1);
73
72
  }
74
73
  }
@@ -93,20 +92,20 @@ function createConfigFileIfMissing(rootPath) {
93
92
  };
94
93
  const contentString = JSON.stringify(defaultContent, null, 2);
95
94
  // ---------------------
96
- process.stderr.write(`\n[monodog] Checking for ${configFileName}...`);
95
+ logger_1.AppLogger.info(`\n[monodog] Checking for ${configFileName}...`);
97
96
  if (fs.existsSync(configFilePath)) {
98
- process.stderr.write(`[monodog] ${configFileName} already exists at ${configFilePath}. Skipping creation.`);
97
+ logger_1.AppLogger.info(`\n[monodog] ${configFileName} already exists at ${configFilePath}. Skipping creation.`);
99
98
  }
100
99
  else {
101
100
  try {
102
101
  // Write the default content to the file
103
102
  fs.writeFileSync(configFilePath, contentString, 'utf-8');
104
- process.stderr.write(`[monodog] Successfully generated default ${configFileName} in the workspace root.`);
103
+ logger_1.AppLogger.info(`[monodog] Successfully generated default ${configFileName} in the workspace root.`);
105
104
  process.stderr.write('[monodog] Please review and update settings like "host" and "port".');
106
105
  }
107
106
  catch (err) {
108
107
  const message = err instanceof Error ? err.message : String(err);
109
- console.error(`[monodog Error] Failed to generate ${configFileName}:`, message);
108
+ logger_1.AppLogger.error(`Failed to generate ${configFileName}: ${message}`);
110
109
  process.exit(1);
111
110
  }
112
111
  }
@@ -1,20 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCommitsByPath = void 0;
4
+ const logger_1 = require("../middleware/logger");
4
5
  const commit_service_1 = require("../services/commit-service");
5
6
  const getCommitsByPath = async (_req, res) => {
6
7
  try {
7
8
  const { packagePath } = _req.params;
8
9
  const decodedPath = decodeURIComponent(packagePath);
9
- console.log('Fetching commits for path:', decodedPath);
10
- console.log('Current working directory:', process.cwd());
10
+ logger_1.AppLogger.debug('Fetching commits for path: ' + decodedPath);
11
+ logger_1.AppLogger.debug('Current working directory: ' + process.cwd());
11
12
  const commits = await (0, commit_service_1.getCommitsByPathService)(decodedPath);
12
- console.log(`Successfully fetched ${commits.length} commits for ${decodedPath}`);
13
+ logger_1.AppLogger.info(`Successfully fetched ${commits.length} commits for ${decodedPath}`);
13
14
  res.json(commits);
14
15
  }
15
16
  catch (error) {
16
17
  const err = error;
17
- console.error('Error fetching commit details:', error);
18
+ logger_1.AppLogger.error('Error fetching commit details', err);
18
19
  res.status(500).json({
19
20
  error: 'Failed to fetch commit details',
20
21
  message: err?.message,
@@ -1,16 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.updateConfigFile = exports.getConfigurationFiles = void 0;
4
+ const logger_1 = require("../middleware/logger");
4
5
  const config_service_1 = require("../services/config-service");
5
6
  const getConfigurationFiles = async (_req, res) => {
6
7
  try {
7
8
  const rootDir = _req.app.locals.rootPath;
8
- console.log('Monorepo root directory:', rootDir);
9
+ logger_1.AppLogger.debug('Monorepo root directory: ' + rootDir);
9
10
  const configFiles = await (0, config_service_1.getConfigurationFilesService)(rootDir);
10
11
  res.json(configFiles);
11
12
  }
12
13
  catch (error) {
13
- console.error('Error fetching configuration files:', error);
14
+ logger_1.AppLogger.error('Error fetching configuration files', error);
14
15
  res.status(500).json({
15
16
  success: false,
16
17
  error: 'Failed to fetch configuration files',
@@ -33,7 +34,7 @@ const updateConfigFile = async (_req, res) => {
33
34
  res.json(result);
34
35
  }
35
36
  catch (error) {
36
- console.error('Error saving configuration file:', error);
37
+ logger_1.AppLogger.error('Error saving configuration file', error);
37
38
  res.status(500).json({
38
39
  success: false,
39
40
  error: 'Failed to save configuration file',
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.refreshHealth = exports.getPackagesHealth = void 0;
4
+ const logger_1 = require("../middleware/logger");
4
5
  const health_service_1 = require("../services/health-service");
5
6
  const getPackagesHealth = async (_req, res) => {
6
7
  try {
@@ -8,7 +9,7 @@ const getPackagesHealth = async (_req, res) => {
8
9
  res.json(health);
9
10
  }
10
11
  catch (error) {
11
- console.error('Error fetching health data from database:', error);
12
+ logger_1.AppLogger.error('Error fetching health data from database:', error);
12
13
  res
13
14
  .status(500)
14
15
  .json({ error: 'Failed to fetch health data from database' });
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.updatePackageConfig = exports.getPackageDetail = exports.refreshPackages = exports.getPackages = void 0;
4
+ const logger_1 = require("../middleware/logger");
4
5
  const config_service_1 = require("../services/config-service");
5
6
  const package_service_1 = require("../services/package-service");
6
7
  const getPackages = async (_req, res) => {
@@ -14,7 +15,7 @@ const getPackages = async (_req, res) => {
14
15
  };
15
16
  exports.getPackages = getPackages;
16
17
  const refreshPackages = async (_req, res) => {
17
- console.log('Refreshing packages from source...' + _req.app.locals.rootPath);
18
+ logger_1.AppLogger.info('Refreshing packages from source: ' + _req.app.locals.rootPath);
18
19
  try {
19
20
  const packages = await (0, package_service_1.refreshPackagesService)(_req.app.locals.rootPath);
20
21
  res.json(packages);
@@ -44,8 +45,8 @@ const updatePackageConfig = async (req, res) => {
44
45
  error: 'Package name, configuration, and package path are required',
45
46
  });
46
47
  }
47
- console.log('Updating package configuration for:', packageName);
48
- console.log('Package path:', packagePath);
48
+ logger_1.AppLogger.info('Updating package configuration for: ' + packageName);
49
+ logger_1.AppLogger.debug('Package path: ' + packagePath);
49
50
  const updatedPackage = await (0, config_service_1.updatePackageConfigurationService)(packagePath, packageName, config);
50
51
  return res.json({
51
52
  success: true,
@@ -8,10 +8,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.AppLogger = exports.httpLogger = void 0;
10
10
  const morgan_1 = __importDefault(require("morgan"));
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const accessLogStream = fs_1.default.createWriteStream(path_1.default.join(__dirname, '../../', 'access.log'), { flags: 'a' });
11
14
  /**
12
- * HTTP request logger middleware using Morgan
15
+ * HTTP request logger middleware using Morgan, only log error responses
13
16
  */
14
- exports.httpLogger = (0, morgan_1.default)('dev');
17
+ exports.httpLogger = (0, morgan_1.default)('combined', {
18
+ stream: accessLogStream,
19
+ // skip: function (req, res) { return res.statusCode < 400 }
20
+ });
15
21
  /**
16
22
  * Application logger for non-HTTP events
17
23
  */
@@ -75,13 +75,13 @@ function startServer(rootPath) {
75
75
  console.log((0, constants_1.SUCCESS_SERVER_START)(host, validatedPort));
76
76
  logger_1.AppLogger.info('API endpoints available:', {
77
77
  endpoints: [
78
- 'GET /api/health',
79
- 'GET /api/packages/refresh',
78
+ 'POST /api/packages/refresh',
80
79
  'GET /api/packages',
81
80
  'GET /api/packages/:name',
82
81
  'PUT /api/packages/update-config',
83
82
  'GET /api/commits/:packagePath',
84
83
  'GET /api/health/packages',
84
+ 'POST /api/health/refresh',
85
85
  'PUT /api/config/files/:id',
86
86
  'GET /api/config/files',
87
87
  ],
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.setupSwaggerDocs = setupSwaggerDocs;
11
11
  const swagger_ui_express_1 = __importDefault(require("swagger-ui-express"));
12
12
  const swagger_jsdoc_1 = __importDefault(require("swagger-jsdoc"));
13
+ const logger_1 = require("./logger");
13
14
  const swagger_config_1 = require("../config/swagger-config");
14
15
  /**
15
16
  * Setup Swagger documentation endpoint
@@ -46,9 +47,9 @@ function setupSwaggerDocs(app) {
46
47
  `,
47
48
  customCssUrl: 'https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui.min.css',
48
49
  }));
49
- console.log('Swagger documentation available at /api-docs');
50
+ logger_1.AppLogger.info('Swagger documentation available at /api-docs');
50
51
  }
51
52
  catch (error) {
52
- console.error('Failed to setup Swagger documentation:', error);
53
+ logger_1.AppLogger.error('Failed to setup Swagger documentation', error);
53
54
  }
54
55
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CommitRepository = void 0;
4
4
  const prisma_client_1 = require("./prisma-client");
5
+ const logger_1 = require("../middleware/logger");
5
6
  const prisma = (0, prisma_client_1.getPrismaClient)();
6
7
  const Prisma = (0, prisma_client_1.getPrismaErrors)();
7
8
  /**
@@ -61,10 +62,10 @@ class CommitRepository {
61
62
  const err = e;
62
63
  if (err instanceof Prisma.PrismaClientKnownRequestError &&
63
64
  err.code === 'P2002') {
64
- console.warn(`Skipping commit: ${data.hash} (Commit already exists)`);
65
+ logger_1.AppLogger.warn(`Skipping commit: ${data.hash} (Commit already exists)`);
65
66
  }
66
67
  else {
67
- console.error(`Failed to store commit: ${data.hash}`, err);
68
+ logger_1.AppLogger.error(`Failed to store commit: ${data.hash}`, err);
68
69
  throw err;
69
70
  }
70
71
  }
@@ -73,7 +74,7 @@ class CommitRepository {
73
74
  * Store multiple commits
74
75
  */
75
76
  static async storeMany(packageName, commits) {
76
- console.log('Storing commits for: ' + packageName);
77
+ logger_1.AppLogger.debug('Storing commits for: ' + packageName);
77
78
  for (const commit of commits) {
78
79
  await this.upsert({
79
80
  hash: commit.hash,
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DependencyRepository = void 0;
4
4
  const prisma_client_1 = require("./prisma-client");
5
+ const logger_1 = require("../middleware/logger");
5
6
  const prisma = (0, prisma_client_1.getPrismaClient)();
6
7
  const Prisma = (0, prisma_client_1.getPrismaErrors)();
7
8
  /**
@@ -61,10 +62,10 @@ class DependencyRepository {
61
62
  const err = e;
62
63
  if (err instanceof Prisma.PrismaClientKnownRequestError &&
63
64
  err.code === 'P2002') {
64
- console.warn(`Skipping dependency: ${data.name} (Dependency already exists)`);
65
+ logger_1.AppLogger.warn(`Skipping dependency: ${data.name} (Dependency already exists)`);
65
66
  }
66
67
  else {
67
- console.error(`Failed to store dependency: ${data.name}`, err);
68
+ logger_1.AppLogger.error(`Failed to store dependency: ${data.name}`, err);
68
69
  throw err;
69
70
  }
70
71
  }
@@ -73,7 +74,7 @@ class DependencyRepository {
73
74
  * Store multiple dependencies
74
75
  */
75
76
  static async storeMany(packageName, dependencies) {
76
- console.log('Storing Dependencies for: ' + packageName);
77
+ logger_1.AppLogger.debug('Storing Dependencies for: ' + packageName);
77
78
  for (const dep of dependencies) {
78
79
  await this.upsert({
79
80
  name: dep.name,
@@ -7,11 +7,12 @@ exports.getCommitsByPathService = void 0;
7
7
  const git_service_1 = require("./git-service");
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const fs_1 = __importDefault(require("fs"));
10
+ const logger_1 = require("../middleware/logger");
10
11
  const getCommitsByPathService = async (packagePath) => {
11
12
  // Decode the package path
12
13
  const decodedPath = decodeURIComponent(packagePath);
13
- console.log('Fetching commits for path:', decodedPath);
14
- console.log('Current working directory:', process.cwd());
14
+ logger_1.AppLogger.debug('Fetching commits for path: ' + decodedPath);
15
+ logger_1.AppLogger.debug('Current working directory: ' + process.cwd());
15
16
  const gitService = new git_service_1.GitService();
16
17
  // Check if this is an absolute path and convert to relative if needed
17
18
  let relativePath = decodedPath;
@@ -19,23 +20,22 @@ const getCommitsByPathService = async (packagePath) => {
19
20
  // If it's an absolute path, make it relative to project root
20
21
  if (path_1.default.isAbsolute(decodedPath)) {
21
22
  relativePath = path_1.default.relative(projectRoot, decodedPath);
22
- console.log('Converted absolute path to relative:', relativePath);
23
+ logger_1.AppLogger.debug('Converted absolute path to relative: ' + relativePath);
23
24
  }
24
25
  // Check if the path exists
25
26
  try {
26
27
  await fs_1.default.promises.access(relativePath);
27
- console.log('Path exists:', relativePath);
28
+ logger_1.AppLogger.debug('Path exists: ' + relativePath);
28
29
  }
29
30
  catch (fsError) {
30
- console.log('Path does not exist:', relativePath);
31
31
  // Try the original path as well
32
32
  try {
33
33
  await fs_1.default.promises.access(decodedPath);
34
- console.log('Original path exists:', decodedPath);
34
+ logger_1.AppLogger.debug('Original Commit path exists: ' + decodedPath);
35
35
  relativePath = decodedPath; // Use original path if it exists
36
36
  }
37
37
  catch (secondError) {
38
- throw new Error(`Path does not exist: ${decodedPath}`);
38
+ throw new Error(`Commit Path does not exist: ${decodedPath}`);
39
39
  }
40
40
  }
41
41
  const commits = await gitService.getAllCommits(relativePath);
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.updatePackageConfigurationService = exports.updateConfigFileService = exports.getConfigurationFilesService = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
+ const logger_1 = require("../middleware/logger");
9
10
  const repositories_1 = require("../repositories");
10
11
  // Helper function to scan for configuration files
11
12
  async function scanConfigFiles(rootDir) {
@@ -71,14 +72,14 @@ async function scanConfigFiles(rootDir) {
71
72
  });
72
73
  }
73
74
  catch (error) {
74
- console.warn(`Could not read file: ${fullPath}`);
75
+ logger_1.AppLogger.warn(`Could not read file: ${fullPath}`);
75
76
  }
76
77
  }
77
78
  }
78
79
  }
79
80
  }
80
81
  catch (error) {
81
- console.warn(`Could not scan directory: ${dir}`);
82
+ logger_1.AppLogger.warn(`Could not scan directory: ${dir}`);
82
83
  }
83
84
  }
84
85
  function shouldSkipDirectory(dirName, depth) {
@@ -115,20 +116,20 @@ async function scanConfigFiles(rootDir) {
115
116
  return filename.toLowerCase() === pattern.toLowerCase();
116
117
  });
117
118
  }
118
- console.log(`Scanning for config files in: ${rootDir}`);
119
+ logger_1.AppLogger.info(`Scanning for config files in: ${rootDir}`);
119
120
  // Start scanning from root
120
121
  scanDirectory(rootDir);
121
122
  // Sort files by path for consistent ordering
122
123
  configFiles.sort((a, b) => a.path.localeCompare(b.path));
123
- console.log(`Found ${configFiles.length} configuration files`);
124
+ logger_1.AppLogger.info(`Found ${configFiles.length} configuration files`);
124
125
  // Log some sample files for debugging
125
126
  if (configFiles.length > 0) {
126
- console.log('Sample config files found:');
127
+ logger_1.AppLogger.info('Sample config files found');
127
128
  configFiles.slice(0, 5).forEach(file => {
128
- console.log(` - ${file.path} (${file.type})`);
129
+ logger_1.AppLogger.debug(` - ${file.path} (${file.type})`);
129
130
  });
130
131
  if (configFiles.length > 5) {
131
- console.log(` ... and ${configFiles.length - 5} more`);
132
+ logger_1.AppLogger.debug(` ... and ${configFiles.length - 5} more`);
132
133
  }
133
134
  }
134
135
  return configFiles;
@@ -203,8 +204,8 @@ const getConfigurationFilesService = async (rootDir) => {
203
204
  exports.getConfigurationFilesService = getConfigurationFilesService;
204
205
  const updateConfigFileService = async (id, rootDir, content) => {
205
206
  const filePath = path_1.default.join(rootDir, id.startsWith('/') ? id.slice(1) : id);
206
- console.log('Saving file:', filePath);
207
- console.log('Root directory:', rootDir);
207
+ logger_1.AppLogger.debug('Saving file: ' + filePath);
208
+ logger_1.AppLogger.debug('Root directory: ' + rootDir);
208
209
  // Security check: ensure the file is within the project directory
209
210
  if (!filePath.startsWith(rootDir)) {
210
211
  throw new Error('Invalid file path');
@@ -245,7 +246,7 @@ const updatePackageConfigurationService = async (packagePath, packageName, confi
245
246
  newConfig = JSON.parse(config);
246
247
  }
247
248
  catch (error) {
248
- console.error('JSON parsing error:', error);
249
+ logger_1.AppLogger.error('JSON parsing error', error);
249
250
  throw new Error('Invalid JSON format: ' + (error instanceof Error ? error.message : 'Unknown error'));
250
251
  }
251
252
  const packageJsonPath = path_1.default.join(packagePath, 'package.json');
@@ -307,7 +308,7 @@ const updatePackageConfigurationService = async (packagePath, packageName, confi
307
308
  updateData.devDependencies = JSON.stringify(newConfig.devDependencies);
308
309
  if (newConfig.peerDependencies)
309
310
  updateData.peerDependencies = JSON.stringify(newConfig.peerDependencies);
310
- console.log('Updating database with:', updateData);
311
+ logger_1.AppLogger.debug('Updating database with:', updateData);
311
312
  const updatedPackage = await repositories_1.PackageRepository.updateConfig(packageName, updateData);
312
313
  // Transform the response
313
314
  const transformedPackage = {
@@ -13,6 +13,7 @@ exports.GitService = void 0;
13
13
  const child_process_1 = require("child_process");
14
14
  const util_1 = require("util");
15
15
  const path_1 = __importDefault(require("path"));
16
+ const logger_1 = require("../middleware/logger");
16
17
  const types_1 = require("../types");
17
18
  // Promisify the standard 'exec' function for easy async/await usage
18
19
  const execPromise = (0, util_1.promisify)(child_process_1.exec);
@@ -35,19 +36,19 @@ class GitService {
35
36
  }
36
37
  // First, validate we're in a git repo
37
38
  await this.validateGitRepository(pathArgument);
38
- console.log(`Executing Git command in: ${this.repoPath}`);
39
+ logger_1.AppLogger.debug(`Executing Git command in: ${this.repoPath}`);
39
40
  // Use a simpler git log format
40
41
  const command = `git log --pretty=format:"%H|%an|%ad|%s" --date=iso-strict ${pathArgument}`;
41
- console.log(`Git command: ${command}`);
42
+ logger_1.AppLogger.debug(`Git command: ${command}`);
42
43
  const { stdout, stderr } = await execPromise(command, {
43
44
  cwd: this.repoPath,
44
45
  maxBuffer: 1024 * 5000,
45
46
  });
46
47
  if (stderr) {
47
- console.warn('Git stderr:', stderr);
48
+ logger_1.AppLogger.warn('Git stderr: ' + stderr);
48
49
  }
49
50
  if (!stdout.trim()) {
50
- console.log('📭 No commits found for path:', pathFilter);
51
+ logger_1.AppLogger.debug('No commits found for path: ' + pathFilter);
51
52
  return [];
52
53
  }
53
54
  // Parse the output
@@ -67,14 +68,14 @@ class GitService {
67
68
  commits.push(commit);
68
69
  }
69
70
  catch (parseError) {
70
- console.error('Failed to parse commit line:', line, parseError);
71
+ logger_1.AppLogger.error('Failed to parse commit line: ' + line, parseError);
71
72
  }
72
73
  }
73
- console.log(`Successfully parsed ${commits.length} commits`);
74
+ logger_1.AppLogger.debug(`Successfully parsed ${commits.length} commits`);
74
75
  return commits;
75
76
  }
76
77
  catch (error) {
77
- console.error('Error in getAllCommits:', error);
78
+ logger_1.AppLogger.error('Error in getAllCommits', error);
78
79
  throw error;
79
80
  }
80
81
  }
@@ -115,7 +116,7 @@ class GitService {
115
116
  await execPromise('git ' + pathArgument + ' rev-parse --is-inside-work-tree', {
116
117
  cwd: this.repoPath,
117
118
  });
118
- console.log('Valid git repository');
119
+ logger_1.AppLogger.debug('Valid git repository');
119
120
  }
120
121
  catch (error) {
121
122
  throw new Error('Not a git repository (or any of the parent directories)');
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.healthRefreshService = exports.getHealthSummaryService = void 0;
4
4
  const utilities_1 = require("../utils/utilities");
5
5
  const monorepo_scanner_1 = require("../utils/monorepo-scanner");
6
+ const logger_1 = require("../middleware/logger");
6
7
  const repositories_1 = require("../repositories");
7
8
  // Track in-flight health refresh requests to prevent duplicates
8
9
  let inFlightHealthRefresh = null;
9
10
  const getHealthSummaryService = async () => {
10
11
  const packageHealthData = await repositories_1.PackageHealthRepository.findAll();
11
- console.log('packageHealthData -->', packageHealthData.length);
12
+ logger_1.AppLogger.debug('packageHealthData count: ' + packageHealthData.length);
12
13
  // Transform the data to match the expected frontend format
13
14
  const packages = packageHealthData.map((pkg) => {
14
15
  const health = {
@@ -46,14 +47,14 @@ exports.getHealthSummaryService = getHealthSummaryService;
46
47
  const healthRefreshService = async (rootDir) => {
47
48
  // If a health refresh is already in progress, return the in-flight promise
48
49
  if (inFlightHealthRefresh) {
49
- console.log('Health refresh already in progress, returning cached promise');
50
+ logger_1.AppLogger.info('Health refresh already in progress, returning cached promise');
50
51
  return inFlightHealthRefresh;
51
52
  }
52
53
  // Create and store the health refresh promise
53
54
  inFlightHealthRefresh = (async () => {
54
55
  try {
55
56
  const packages = (0, utilities_1.scanMonorepo)(rootDir);
56
- console.log('packages -->', packages.length);
57
+ logger_1.AppLogger.debug('packages count: ' + packages.length);
57
58
  const healthMetrics = await Promise.all(packages.map(async (pkg) => {
58
59
  try {
59
60
  // Await each health check function since they return promises
@@ -75,7 +76,7 @@ const healthRefreshService = async (rootDir) => {
75
76
  : health.overallScore >= 60 && health.overallScore < 80
76
77
  ? 'warning'
77
78
  : 'error';
78
- console.log(pkg.name, '-->', health, packageStatus);
79
+ logger_1.AppLogger.debug(`${pkg.name}: ${packageStatus}`, health);
79
80
  await repositories_1.PackageHealthRepository.upsert({
80
81
  packageName: pkg.name,
81
82
  packageOverallScore: overallScore.overallScore,
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPackageDetailService = exports.refreshPackagesService = exports.getPackagesService = void 0;
4
4
  const utilities_1 = require("../utils/utilities");
5
- const monorepo_scanner_1 = require("../utils/monorepo-scanner");
6
5
  const ci_status_1 = require("../utils/ci-status");
6
+ const logger_1 = require("../middleware/logger");
7
7
  const repositories_1 = require("../repositories");
8
8
  const commit_service_1 = require("./commit-service");
9
9
  /**
@@ -73,7 +73,7 @@ async function storePackage(pkg) {
73
73
  }
74
74
  }
75
75
  catch (error) {
76
- console.warn(` Failed to store report for ${pkg.name}:`, error);
76
+ logger_1.AppLogger.warn(`Failed to store report for ${pkg.name}`);
77
77
  }
78
78
  }
79
79
  const getPackagesService = async (rootPath) => {
@@ -81,9 +81,9 @@ const getPackagesService = async (rootPath) => {
81
81
  if (!dbPackages.length) {
82
82
  try {
83
83
  const rootDir = rootPath;
84
- console.log('rootDir -->', rootDir);
84
+ logger_1.AppLogger.debug('rootDir: ' + rootDir);
85
85
  const packages = (0, utilities_1.scanMonorepo)(rootDir);
86
- console.log('packages --> scan', packages.length);
86
+ logger_1.AppLogger.debug('packages scanned: ' + packages.length);
87
87
  for (const pkg of packages) {
88
88
  await storePackage(pkg);
89
89
  }
@@ -124,7 +124,7 @@ const refreshPackagesService = async (rootPath) => {
124
124
  await repositories_1.PackageRepository.deleteAll();
125
125
  const rootDir = rootPath;
126
126
  const packages = (0, utilities_1.scanMonorepo)(rootDir);
127
- console.log('packages -->', packages.length);
127
+ logger_1.AppLogger.debug('packages count: ' + packages.length);
128
128
  for (const pkg of packages) {
129
129
  await storePackage(pkg);
130
130
  }
@@ -173,11 +173,11 @@ const getPackageDetailService = async (name) => {
173
173
  ? JSON.parse(pkg.peerDependencies)
174
174
  : [];
175
175
  // Get additional package information
176
- const reports = (await (0, monorepo_scanner_1.generateReports)());
177
- const packageReport = reports?.find((r) => r.package?.name === name);
176
+ // const reports = (await generateReports()) as unknown as PackageReport[] | undefined;
177
+ // const packageReport = reports?.find((r: PackageReport) => r.package?.name === name);
178
178
  const result = {
179
179
  ...transformedPkg,
180
- report: packageReport,
180
+ // report: packageReport,
181
181
  ciStatus: await ci_status_1.ciStatusManager.getPackageStatus(name),
182
182
  };
183
183
  return result;
@@ -4,6 +4,7 @@ exports.ciStatusManager = exports.CIStatusManager = void 0;
4
4
  exports.getPackageCIStatus = getPackageCIStatus;
5
5
  exports.getMonorepoCIStatus = getMonorepoCIStatus;
6
6
  exports.triggerPackageBuild = triggerPackageBuild;
7
+ const logger_1 = require("../middleware/logger");
7
8
  class CIStatusManager {
8
9
  constructor() {
9
10
  this.providers = new Map();
@@ -103,7 +104,7 @@ class CIStatusManager {
103
104
  return status;
104
105
  }
105
106
  catch (error) {
106
- console.error(`Error fetching CI status for ${packageName}:`, error);
107
+ logger_1.AppLogger.error(`Error fetching CI status for ${packageName}`, error);
107
108
  return null;
108
109
  }
109
110
  }
@@ -397,7 +398,7 @@ class CIStatusManager {
397
398
  try {
398
399
  // Mock implementation
399
400
  const buildId = `build-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
400
- console.log(`Triggering build for ${packageName} on ${branch} via ${providerName}`);
401
+ logger_1.AppLogger.info(`Triggering build for ${packageName} on ${branch} via ${providerName}`);
401
402
  return {
402
403
  success: true,
403
404
  buildId,