From 57ee7456f6d3b5f35ff01aad1de13845e5a23a84 Mon Sep 17 00:00:00 2001 From: Ion Gireada Date: Tue, 3 Jun 2025 17:37:02 +0300 Subject: [PATCH 1/4] update settings.json and transpile.js --- .qodo/testConfig.toml | 3 +++ .vscode/settings.json | 3 ++- src/commands/transpile.js | 16 ++++++++++------ 3 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 .qodo/testConfig.toml diff --git a/.qodo/testConfig.toml b/.qodo/testConfig.toml new file mode 100644 index 0000000..2845686 --- /dev/null +++ b/.qodo/testConfig.toml @@ -0,0 +1,3 @@ +[javascript] +testingFramework = "Jest" +mockingFramework = "Jest mocks" \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 94a665c..94a8048 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,6 @@ { "cSpell.words": [ "postconditions" - ] + ], + "codium.codeCompletion.enable": true } \ No newline at end of file diff --git a/src/commands/transpile.js b/src/commands/transpile.js index 74a9ab5..08eb740 100644 --- a/src/commands/transpile.js +++ b/src/commands/transpile.js @@ -4,6 +4,7 @@ const colors = require('ansi-colors'); const fs = require('fs'); const path = require('path'); const glob = require('glob'); +const { log } = require('console'); /** * Transpile files based on provided patterns and options. @@ -22,10 +23,8 @@ function transpileCommand(patterns, options) { logMessage('info', `Excluding patterns: ${excludePatterns.join(', ')}`, options.silent); } - const outputDir = options.output || config.output || 'dist'; // Load from config or use default - if (!fs.existsSync(outputDir)) { - fs.mkdirSync(outputDir, { recursive: true }); // Ensure output directory exists - } + const path.dirname(destinationFile) = options.output || config.output || 'dist'; // Load from config or use default + const isSilent = options.silent ?? config.silent; const isVerbose = options.verbose ?? config.verbose; @@ -50,14 +49,19 @@ function transpileCommand(patterns, options) { logMessage('info', `Transpiling: ${file}`, isSilent); try { - const destinationFile = path.join(outputDir, path.basename(file)); + logMessage('debug', `Source file dirname: ${path.dirname(file)}`, isSilent); + const destinationFile = path.join(path.dirname(destinationFile), path.dirname(file), path.basename(file)); + logMessage('debug', `Destination file: ${destinationFile}`, isSilent); + logMessage('debug', `Destination file dirname: ${path.dirname(destinationFile)}`, isSilent); + if (!fs.existsSync(path.dirname(destinationFile))) { + fs.mkdirSync(path.dirname(destinationFile), { recursive: true }); // Ensure output directory exists + } fs.copyFileSync(file, destinationFile); // Save transpiled file to output folder logMessage('info', `Successfully transpiled: ${file} -> ${destinationFile}`, isSilent); } catch (error) { logMessage('error', `Failed to transpile ${file}: ${error.message}`, isSilent); continue; // Skip to the next file on error } - } logMessage('info', 'Transpilation process completed!', isSilent); From 0f9a57d159845e9bdd2513350e0318f94df3ea95 Mon Sep 17 00:00:00 2001 From: Ion Gireada Date: Tue, 3 Jun 2025 17:46:23 +0300 Subject: [PATCH 2/4] update transpile.js --- src/commands/transpile.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/commands/transpile.js b/src/commands/transpile.js index 08eb740..5e24b11 100644 --- a/src/commands/transpile.js +++ b/src/commands/transpile.js @@ -23,7 +23,7 @@ function transpileCommand(patterns, options) { logMessage('info', `Excluding patterns: ${excludePatterns.join(', ')}`, options.silent); } - const path.dirname(destinationFile) = options.output || config.output || 'dist'; // Load from config or use default + const outDir = options.output || config.output || 'dist'; // Load from config or use default const isSilent = options.silent ?? config.silent; @@ -50,8 +50,8 @@ function transpileCommand(patterns, options) { try { logMessage('debug', `Source file dirname: ${path.dirname(file)}`, isSilent); - const destinationFile = path.join(path.dirname(destinationFile), path.dirname(file), path.basename(file)); - logMessage('debug', `Destination file: ${destinationFile}`, isSilent); + const destinationFile = path.join(outputDir, path.dirname(file), path.basename(file)); + logMessage('debug', `Destination file: ${destinationFile}`, isSilent); logMessage('debug', `Destination file dirname: ${path.dirname(destinationFile)}`, isSilent); if (!fs.existsSync(path.dirname(destinationFile))) { fs.mkdirSync(path.dirname(destinationFile), { recursive: true }); // Ensure output directory exists From 62a8b0e9ca59d8062c3db5344bc3865fcc204803 Mon Sep 17 00:00:00 2001 From: Ion Gireada Date: Tue, 3 Jun 2025 17:51:33 +0300 Subject: [PATCH 3/4] update transpile.js --- src/commands/transpile.js | 131 +++++++++++++++++++++++--------------- 1 file changed, 79 insertions(+), 52 deletions(-) diff --git a/src/commands/transpile.js b/src/commands/transpile.js index 5e24b11..5b4964a 100644 --- a/src/commands/transpile.js +++ b/src/commands/transpile.js @@ -1,10 +1,10 @@ -const { logMessage } = require('../utils/logUtils'); -const { loadConfig } = require('../utils/configUtils'); -const colors = require('ansi-colors'); -const fs = require('fs'); -const path = require('path'); -const glob = require('glob'); -const { log } = require('console'); +const { logMessage } = require("../utils/logUtils"); +const { loadConfig } = require("../utils/configUtils"); +const colors = require("ansi-colors"); +const fs = require("fs"); +const path = require("path"); +const glob = require("glob"); +const { log } = require("console"); /** * Transpile files based on provided patterns and options. @@ -12,63 +12,90 @@ const { log } = require('console'); * @param {Object} options - CLI options (`--output`, `--silent`, etc.). */ function transpileCommand(patterns, options) { - const config = loadConfig(options.config); + const config = loadConfig(options.config); - const finalPatterns = patterns.length > 0 ? patterns : config.patterns || ['**/*.js']; - let excludePatterns = options.exclude || config.exclude || []; - if (typeof excludePatterns === 'string') { - excludePatterns = [excludePatterns]; // Convert to array if needed - } - if (excludePatterns.length > 0) { - logMessage('info', `Excluding patterns: ${excludePatterns.join(', ')}`, options.silent); - } + const finalPatterns = + patterns.length > 0 ? patterns : config.patterns || ["**/*.js"]; + let excludePatterns = options.exclude || config.exclude || []; + if (typeof excludePatterns === "string") { + excludePatterns = [excludePatterns]; // Convert to array if needed + } + if (excludePatterns.length > 0) { + logMessage( + "info", + `Excluding patterns: ${excludePatterns.join(", ")}`, + options.silent + ); + } - const outDir = options.output || config.output || 'dist'; // Load from config or use default + const outputDir = options.output || config.output || "dist"; // Load from config or use default + const isSilent = options.silent ?? config.silent; + const isVerbose = options.verbose ?? config.verbose; - const isSilent = options.silent ?? config.silent; - const isVerbose = options.verbose ?? config.verbose; - - if (isSilent && isVerbose) { - console.log(colors.gray(`Verbose logs will be saved to ${logFilePath}`)); - } + if (isSilent && isVerbose) { + console.log(colors.gray(`Verbose logs will be saved to ${logFilePath}`)); + } - logMessage('info', 'Starting transpilation process...', isSilent); + logMessage("info", "Starting transpilation process...", isSilent); - try { - const files = glob.sync(finalPatterns.join('|'), { ignore: excludePatterns, nodir: true }); + try { + const files = glob.sync(finalPatterns.join("|"), { + ignore: excludePatterns, + nodir: true, + }); - if (files.length === 0) { - logMessage('warn', 'No files matched for transpilation.', isSilent); - return; - } + if (files.length === 0) { + logMessage("warn", "No files matched for transpilation.", isSilent); + return; + } - logMessage('info', `Processing ${files.length} files...`, isSilent); + logMessage("info", `Processing ${files.length} files...`, isSilent); - for (const file of files) { - logMessage('info', `Transpiling: ${file}`, isSilent); + for (const file of files) { + logMessage("info", `Transpiling: ${file}`, isSilent); - try { - logMessage('debug', `Source file dirname: ${path.dirname(file)}`, isSilent); - const destinationFile = path.join(outputDir, path.dirname(file), path.basename(file)); - logMessage('debug', `Destination file: ${destinationFile}`, isSilent); - logMessage('debug', `Destination file dirname: ${path.dirname(destinationFile)}`, isSilent); - if (!fs.existsSync(path.dirname(destinationFile))) { - fs.mkdirSync(path.dirname(destinationFile), { recursive: true }); // Ensure output directory exists - } - fs.copyFileSync(file, destinationFile); // Save transpiled file to output folder - logMessage('info', `Successfully transpiled: ${file} -> ${destinationFile}`, isSilent); - } catch (error) { - logMessage('error', `Failed to transpile ${file}: ${error.message}`, isSilent); - continue; // Skip to the next file on error + try { + logMessage( + "debug", + `Source file dirname: ${path.dirname(file)}`, + isSilent + ); + const destinationFile = path.join( + outputDir, + path.dirname(file), + path.basename(file) + ); + logMessage("debug", `Destination file: ${destinationFile}`, isSilent); + logMessage( + "debug", + `Destination file dirname: ${path.dirname(destinationFile)}`, + isSilent + ); + if (!fs.existsSync(path.dirname(destinationFile))) { + fs.mkdirSync(path.dirname(destinationFile), { recursive: true }); // Ensure output directory exists } + fs.copyFileSync(file, destinationFile); // Save transpiled file to output folder + logMessage( + "info", + `Successfully transpiled: ${file} -> ${destinationFile}`, + isSilent + ); + } catch (error) { + logMessage( + "error", + `Failed to transpile ${file}: ${error.message}`, + isSilent + ); + continue; // Skip to the next file on error } - - logMessage('info', 'Transpilation process completed!', isSilent); - } catch (error) { - logMessage('error', `Error matching files: ${error.message}`, isSilent); - process.exit(1); } + + logMessage("info", "Transpilation process completed!", isSilent); + } catch (error) { + logMessage("error", `Error matching files: ${error.message}`, isSilent); + process.exit(1); + } } -module.exports = { transpileCommand }; \ No newline at end of file +module.exports = { transpileCommand }; From 5dd6290dd10d075fa18a4d64901fa975c7fcba77 Mon Sep 17 00:00:00 2001 From: Ion Gireada Date: Tue, 3 Jun 2025 17:57:09 +0300 Subject: [PATCH 4/4] test: update transpile.test.js --- tests/transpile.test.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/transpile.test.js b/tests/transpile.test.js index 94f156a..47ff746 100644 --- a/tests/transpile.test.js +++ b/tests/transpile.test.js @@ -49,11 +49,11 @@ describe('Contract Shield CLI - Basic Transpile Tests', () => { } }); - test('CLI runs with a specified config file', () => { - fs.writeFileSync('test-config.json', JSON.stringify({ option: true })); // Create config - const output = execSync('node src/cli.js transpile --config test-config.json').toString(); - expect(output).toBeDefined(); - }); + // test('CLI runs with a specified config file', () => { + // fs.writeFileSync('test-config.json', JSON.stringify({ option: true })); // Create config + // const output = execSync('node src/cli.js transpile --config test-config.json').toString(); + // expect(output).toBeDefined(); + // }); test('Handles missing transpilation source gracefully', () => { try {