diff --git a/deno.lock b/deno.lock index ca861f070..e0e71ec3a 100644 --- a/deno.lock +++ b/deno.lock @@ -56,7 +56,6 @@ "npm:qrcode.vue@^3.6.0": "3.6.0_vue@3.5.27__typescript@5.9.3_typescript@5.9.3", "npm:readline-sync@^1.4.10": "1.4.10", "npm:sass-embedded@^1.93.3": "1.97.2", - "npm:sharp@~0.34.5": "0.34.5", "npm:svgo@4": "4.0.0", "npm:typescript@^5.8.3": "5.9.3", "npm:unplugin-vue-components@30": "30.0.0_vue@3.5.27__typescript@5.9.3_typescript@5.9.3", @@ -4199,7 +4198,7 @@ "npm:qrcode.vue@^3.6.0", "npm:readline-sync@^1.4.10", "npm:sass-embedded@^1.93.3", - "npm:sharp@~0.34.5", + "npm:sharp@~0.35.3", "npm:svgo@4", "npm:typescript@^5.8.3", "npm:unplugin-vue-components@30", diff --git a/src/web/components/assembly/MultifileEditor.mjs b/src/web/components/assembly/MultifileEditor.mjs index 80f36471b..2954c4d64 100644 --- a/src/web/components/assembly/MultifileEditor.mjs +++ b/src/web/components/assembly/MultifileEditor.mjs @@ -1,7 +1,11 @@ // Part of monaco editor to allow user create multiple file to edit in assembly import { as } from "@/core/assembler/sailAssembler/web/CNAssambler.mjs"; -import dump64Module, { libtags64 } from "@/core/assembler/sailAssembler/web/wasm/objdump64.js" -import dump32Module, { libtags32 } from "@/core/assembler/sailAssembler/web/wasm/objdump.js" +import dump64Module, { + libtags64, +} from "@/core/assembler/sailAssembler/web/wasm/objdump64.js"; +import dump32Module, { + libtags32, +} from "@/core/assembler/sailAssembler/web/wasm/objdump.js"; import { coreEvents, CoreEventTypes } from "@/core/events.mts"; import { architecture } from "@/core/core.mjs"; @@ -12,22 +16,19 @@ export var currentTab = -1; let libdump = null; function emitAssemblyFilesUpdated() { - coreEvents.emit(CoreEventTypes.ASSEMBLY_FILES_UPDATED, { - files: assembly_files.map(file => ({ ...file })), - currentTab, - }); + coreEvents.emit(CoreEventTypes.ASSEMBLY_FILES_UPDATED, { + files: assembly_files.map(file => ({ ...file })), + currentTab, + }); } -export function createFile(storecode = "", filename ="", newcode = "" ) { - +export function createFile(storecode = "", filename = "", newcode = "") { var filename_prompt; if (filename === "") { filename_prompt = prompt("Name of new File"); - if (filename_prompt === "" || filename_prompt === null) + if (filename_prompt === "" || filename_prompt === null) filename_prompt = "AssemblyFile"; - } - else - filename_prompt = filename; + } else filename_prompt = filename; filename_prompt = filename_prompt.replaceAll(" ", ""); if (filename_prompt.includes(".s")) filename_prompt = filename_prompt.slice(0, -2); @@ -35,37 +36,41 @@ export function createFile(storecode = "", filename ="", newcode = "" ) { var condition = true; var index = 1; while (condition) { - if (assembly_files.findIndex(file => file.filename.slice(0,-2) === filename_prompt) !== -1){ + if ( + assembly_files.findIndex( + file => file.filename.slice(0, -2) === filename_prompt, + ) !== -1 + ) { if (filename_prompt.endsWith(")")) filename_prompt = filename_prompt.split("(")[0]; filename_prompt = filename_prompt + "(" + index + ")"; index += 1; - } - else - condition = false; + } else condition = false; } filename_prompt = filename_prompt + ".s"; // First "close" current file editing let j = assembly_files.findIndex(file => file.editing_now === true); - if (j !== -1){ - + if (j !== -1) { assembly_files[j].code = storecode; assembly_files[j].editing_now = false; } - let newFile = { - filename: filename_prompt, - code: (newcode === "") ? ".section .data\n\n# Declare your data to use here\n\n.section .bss\n.align 8\ntohost:\t.dword 0\n\n.section .text.init\n.globl _main\n\n# Complete your main function here\n_main:" : newcode, - to_compile: true, - editing_now: true, - id: assembly_files.length - }; - assembly_files.push(newFile); - currentTab = assembly_files.length - 1; - emitAssemblyFilesUpdated(); - return newFile.code; -} + let newFile = { + filename: filename_prompt, + code: + newcode === "" + ? ".section .data\n\n# Declare your data to use here\n\n.section .bss\n.align 8\ntohost:\t.dword 0\n\n.section .text.init\n.globl _main\n\n# Complete your main function here\n_main:" + : newcode, + to_compile: true, + editing_now: true, + id: assembly_files.length, + }; + assembly_files.push(newFile); + currentTab = assembly_files.length - 1; + emitAssemblyFilesUpdated(); + return newFile.code; +} export function showFileEditor(filename, code) { let i = assembly_files.findIndex(file => file.editing_now === true); @@ -73,7 +78,7 @@ export function showFileEditor(filename, code) { assembly_files[i].code = code; assembly_files[i].editing_now = false; } - let j = assembly_files.findIndex( file => file.filename === filename); + let j = assembly_files.findIndex(file => file.filename === filename); assembly_files[j].editing_now = true; currentTab = assembly_files[j].id; emitAssemblyFilesUpdated(); @@ -93,84 +98,77 @@ export function DeleteFile(filename) { assembly_files.splice(i, 1); // refresh assembly_files id - for (let j = 0; j < assembly_files.length; j++){ + for (let j = 0; j < assembly_files.length; j++) { assembly_files[j].id = j; } // open an existent file - if (assembly_files.length !== 0){ + if (assembly_files.length !== 0) { currentTab = assembly_files[assembly_files.length - 1].id; assembly_files[assembly_files.length - 1].editing_now = true; - } else - currentTab = -1; + } else currentTab = -1; emitAssemblyFilesUpdated(); } } export async function disassemble_lib(lib) { let depsLeft = Infinity; - if (architecture.config.name === "SRV32"){ + if (architecture.config.name === "SRV32") { libdump = await dump32Module({ - monitorRunDependencies(left) { - depsLeft = left; - console.log('[dump32] deps pendientes:', left); - }, + monitorRunDependencies(left) { + depsLeft = left; + console.log("[dump32] deps pendientes:", left); + }, }); } else { libdump = await dump64Module({ - monitorRunDependencies(left) { - depsLeft = left; - console.log('[dump32] deps pendientes:', left); - }, + monitorRunDependencies(left) { + depsLeft = left; + console.log("[dump32] deps pendientes:", left); + }, }); } - await new Promise((resolve) => { + await new Promise(resolve => { const check = () => { - if (depsLeft === 0) resolve(); - else setTimeout(check, 10); + if (depsLeft === 0) resolve(); + else setTimeout(check, 10); }; check(); }); - libdump.run([lib.library_file, "-D", lib.name]); console.log(libtags64); console.log(libtags32); - } export async function renameFile(oldName, newName) { - - if (newName.endsWith(".s") && newName !== null) - newName = newName.slice(0,-2); + newName = newName.slice(0, -2); // first check new filename - if (newName === "" || newName === null) - newName = "AssemblyFile"; + if (newName === "" || newName === null) newName = "AssemblyFile"; // check if newName and oldName are the same - if (newName === oldName.slice(0,-2)) return; + if (newName === oldName.slice(0, -2)) return; // Then check if there is anyfile with the same name. If it is add and index to diff files var cond = true; var index = 1; while (cond) { - if (assembly_files.findIndex(file => file.filename.slice(0,-2) === newName) !== -1){ - if (newName.endsWith(")")) - newName = newName.split("(")[0]; + if ( + assembly_files.findIndex( + file => file.filename.slice(0, -2) === newName, + ) !== -1 + ) { + if (newName.endsWith(")")) newName = newName.split("(")[0]; newName = newName + "(" + index + ")"; - - if (newName === oldName.slice(0, -2)) - cond = false; - else - index += 1; - } - else - cond = false; + + if (newName === oldName.slice(0, -2)) cond = false; + else index += 1; + } else cond = false; } - newName += ".s"; + newName += ".s"; let i = assembly_files.findIndex(file => file.filename === oldName); assembly_files[i].filename = newName; @@ -178,21 +176,25 @@ export async function renameFile(oldName, newName) { } export function setAssemblyFiles(files) { - assembly_files = Array.isArray(files) ? files.map((file, index) => ({ - ...file, - id: file.id ?? index, - })) : []; - - const editingIndex = assembly_files.findIndex(file => file.editing_now === true); - - if (editingIndex >= 0) { - currentTab = assembly_files[editingIndex].id; - } else if (assembly_files.length > 0) { - assembly_files[0].editing_now = true; - currentTab = assembly_files[0].id; - } else { - currentTab = -1; - } - - emitAssemblyFilesUpdated(); -} \ No newline at end of file + assembly_files = Array.isArray(files) + ? files.map((file, index) => ({ + ...file, + id: file.id ?? index, + })) + : []; + + const editingIndex = assembly_files.findIndex( + file => file.editing_now === true, + ); + + if (editingIndex >= 0) { + currentTab = assembly_files[editingIndex].id; + } else if (assembly_files.length > 0) { + assembly_files[0].editing_now = true; + currentTab = assembly_files[0].id; + } else { + currentTab = -1; + } + + emitAssemblyFilesUpdated(); +} diff --git a/src/web/components/assembly/TextareaAssembly.vue b/src/web/components/assembly/TextareaAssembly.vue index 4fa5bd0c3..2d4a4459a 100644 --- a/src/web/components/assembly/TextareaAssembly.vue +++ b/src/web/components/assembly/TextareaAssembly.vue @@ -17,11 +17,28 @@ You should have received a copy of the GNU Lesser General Public License along with CREATOR. If not, see . --> -