From 77e737728f8981c56b1d7000c68947a842bce7e0 Mon Sep 17 00:00:00 2001 From: Prajwal Kulkarni Date: Tue, 16 Jan 2024 00:26:38 +0530 Subject: [PATCH 01/12] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 38 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 20 ++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..dd84ea7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..bbcbbe7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From 196ae1a6fa7477c599a7321599301dd19bacaa4c Mon Sep 17 00:00:00 2001 From: Prajwal Kulkarni Date: Tue, 16 Jan 2024 21:34:21 +0530 Subject: [PATCH 02/12] Fix: start issue Update package.json --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index c8a887f..dd4bb31 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,8 @@ "zealit": "^2.4.1" }, "scripts": { - "start": "react-scripts start", + "start": "export NODE_OPTIONS=--openssl-legacy-provider && react-scripts start", + "start:windows": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start", "build": "react-scripts build", "build-localhost": "PUBLIC_URL=/ react-scripts build", "test": "react-scripts test", From 8c8368beaeb484c12e36bf97405cd5621d478706 Mon Sep 17 00:00:00 2001 From: Pradeeban Kathiravelu Date: Wed, 19 Mar 2025 22:03:09 -0800 Subject: [PATCH 03/12] Potential fix for code scanning alert no. 3: XML internal entity expansion Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- server/controller/workflow.py | 2 +- server/requirements.txt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/server/controller/workflow.py b/server/controller/workflow.py index 5e42470..77237c9 100644 --- a/server/controller/workflow.py +++ b/server/controller/workflow.py @@ -1,6 +1,6 @@ from model.workflows import * from flask import request, make_response, Blueprint -import xml.etree.ElementTree as ET +import defusedxml.ElementTree as ET workFlow = Blueprint('workflow', __name__) workFlowModel = WorkFlowModel() diff --git a/server/requirements.txt b/server/requirements.txt index eaa3bf6..57602f7 100644 --- a/server/requirements.txt +++ b/server/requirements.txt @@ -3,4 +3,5 @@ Flask==2.0.1 python-dotenv==0.19.0 pymongo==3.12.0 gunicorn==20.0.4 -flask-cors==3.0.10 \ No newline at end of file +flask-cors==3.0.10 +defusedxml==0.7.1 \ No newline at end of file From 1f21c606344fbd9ffe51983fc200655e06585bfc Mon Sep 17 00:00:00 2001 From: Pradeeban Kathiravelu Date: Wed, 19 Mar 2025 22:05:16 -0800 Subject: [PATCH 04/12] Potential fix for code scanning alert no. 2: XML internal entity expansion Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- server/controller/workflow.py | 2 +- server/requirements.txt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/server/controller/workflow.py b/server/controller/workflow.py index 5e42470..77237c9 100644 --- a/server/controller/workflow.py +++ b/server/controller/workflow.py @@ -1,6 +1,6 @@ from model.workflows import * from flask import request, make_response, Blueprint -import xml.etree.ElementTree as ET +import defusedxml.ElementTree as ET workFlow = Blueprint('workflow', __name__) workFlowModel = WorkFlowModel() diff --git a/server/requirements.txt b/server/requirements.txt index eaa3bf6..57602f7 100644 --- a/server/requirements.txt +++ b/server/requirements.txt @@ -3,4 +3,5 @@ Flask==2.0.1 python-dotenv==0.19.0 pymongo==3.12.0 gunicorn==20.0.4 -flask-cors==3.0.10 \ No newline at end of file +flask-cors==3.0.10 +defusedxml==0.7.1 \ No newline at end of file From f33c389f41810986cec5df84b68d6ea9f26b62f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Mar 2025 06:14:12 +0000 Subject: [PATCH 05/12] Bump tar in the npm_and_yarn group across 1 directory Bumps the npm_and_yarn group with 1 update in the / directory: [tar](https://github.com/isaacs/node-tar). Updates `tar` from 6.1.0 to 6.2.1 - [Release notes](https://github.com/isaacs/node-tar/releases) - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/node-tar/compare/v6.1.0...v6.2.1) --- updated-dependencies: - dependency-name: tar dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- package-lock.json | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2bb739..75b1d69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16526,19 +16526,29 @@ } }, "node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" } }, "node_modules/tar/node_modules/mkdirp": { @@ -33337,18 +33347,23 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", From e4173b0de3b76a256e611c2b089befa542e895a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Mar 2025 06:16:39 +0000 Subject: [PATCH 06/12] Bump eventsource from 1.1.0 to 1.1.2 Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.1.0 to 1.1.2. - [Release notes](https://github.com/EventSource/eventsource/releases) - [Changelog](https://github.com/EventSource/eventsource/blob/main/CHANGELOG.md) - [Commits](https://github.com/EventSource/eventsource/compare/v1.1.0...v1.1.2) --- updated-dependencies: - dependency-name: eventsource dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2bb739..9abf275 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6938,12 +6938,10 @@ } }, "node_modules/eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "dependencies": { - "original": "^1.0.0" - }, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -11968,14 +11966,6 @@ "node": ">= 0.8.0" } }, - "node_modules/original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dependencies": { - "url-parse": "^1.4.3" - } - }, "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -25509,12 +25499,9 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "requires": { - "original": "^1.0.0" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==" }, "evp_bytestokey": { "version": "1.0.3", @@ -29511,14 +29498,6 @@ } } }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "requires": { - "url-parse": "^1.4.3" - } - }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", From 840836d648d68680b002399f6d3b9b1c7cae63d6 Mon Sep 17 00:00:00 2001 From: Saksham Gera Date: Sat, 22 Mar 2025 01:26:20 +0530 Subject: [PATCH 07/12] Integrated Monaco Code Editor, Completing Issue #192 --- package.json | 3 +- src/component/modals/FileEdit.jsx | 108 +++++++++++------------------- 2 files changed, 42 insertions(+), 69 deletions(-) diff --git a/package.json b/package.json index dd4bb31..14aa892 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "private": true, "homepage": "https://controlcore-project.github.io/concore-editor", "dependencies": { + "@monaco-editor/react": "^4.4.5", "@szhsin/react-menu": "^1.10.0", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", @@ -20,7 +21,7 @@ "konva": "^7.0.3", "md5": "^2.3.0", "moment": "^2.29.4", - "prismjs": "^1.29.0", + "prismjs": "^1.30.0", "rc-slider": "^9.7.2", "rc-switch": "^3.2.2", "react": "^17.0.2", diff --git a/src/component/modals/FileEdit.jsx b/src/component/modals/FileEdit.jsx index ef91956..1f3de18 100644 --- a/src/component/modals/FileEdit.jsx +++ b/src/component/modals/FileEdit.jsx @@ -1,24 +1,15 @@ import React, { useState, useEffect } from 'react'; -import Editor from 'react-simple-code-editor'; -import { highlight, languages } from 'prismjs/components/prism-core'; +import Editor from '@monaco-editor/react'; import { saveAs } from 'file-saver'; import Modal from './ParentModal'; import './file-edit.css'; -import 'prismjs/components/prism-bash'; -import 'prismjs/components/prism-clike'; -import 'prismjs/components/prism-c'; -import 'prismjs/components/prism-cpp'; -import 'prismjs/components/prism-matlab'; -import 'prismjs/components/prism-verilog'; -import 'prismjs/components/prism-python'; -import 'prismjs/components/prism-javascript'; -import 'prismjs/themes/prism.css'; import { actionType as T } from '../../reducer'; const FileEditModal = ({ superState, dispatcher }) => { const [codeStuff, setCodeStuff] = useState(''); const [fileName, setFileName] = useState(''); const [dirButton, setDirButton] = useState(false); + const [language, setLanguage] = useState('plaintext'); useEffect(() => { if (navigator.userAgent.indexOf('Edg') !== -1 || navigator.userAgent.indexOf('Chrome') !== -1) { @@ -38,7 +29,6 @@ const FileEditModal = ({ superState, dispatcher }) => { await stream.write(codeStuff); await stream.close(); } else { - // eslint-disable-next-line no-alert alert('Switch to Edge/Chrome!'); } dispatcher({ type: T.EDIT_TEXTFILE, payload: { show: false } }); @@ -59,48 +49,45 @@ const FileEditModal = ({ superState, dispatcher }) => { fileHandle: handle, }]); dispatcher({ type: T.SET_FILE_STATE, payload: fS }); - // dispatcher({ type: T.EDIT_TEXTFILE, payload: { show: false } }); } async function saveSubmit() { - // eslint-disable-next-line no-alert const newFileName = prompt('Filename:'); const bytes = new TextEncoder().encode(codeStuff); const blob = new Blob([bytes], { type: 'application/json;charset=utf-8' }); saveAs(blob, newFileName); - // dispatcher({ type: T.EDIT_TEXTFILE, payload: { show: false } }); } - useEffect(async () => { - if (superState.fileObj) { - setFileName(superState.fileObj.name); - const fr = new FileReader(); - fr.onload = (x) => { - setCodeStuff(x.target.result); - }; - if (superState.fileHandle) fr.readAsText(await superState.fileHandle.getFile()); - else fr.readAsText(superState.fileObj); + useEffect(() => { + async function loadFile() { + if (superState.fileObj) { + setFileName(superState.fileObj.name); + const fr = new FileReader(); + fr.onload = (x) => { + setCodeStuff(x.target.result); + }; + if (superState.fileHandle) fr.readAsText(await superState.fileHandle.getFile()); + else fr.readAsText(superState.fileObj); + } } + loadFile(); }, [superState.fileObj]); - function highlightSyntax(code) { - const extensions = ['v', 'c', 'h', 'hpp', 'cpp', 'py', 'm', 'sh']; + useEffect(() => { + if (!fileName) return; const fileEx = fileName.split('.').pop(); - if (extensions.includes(fileEx)) { - switch (fileEx) { - case 'v': return highlight(code, languages.verilog, 'verilog'); - case 'c': return highlight(code, languages.c, 'c'); - case 'h': return highlight(code, languages.c, 'c'); - case 'hpp': return highlight(code, languages.c, 'c'); - case 'cpp': return highlight(code, languages.cpp, 'cpp'); - case 'py': return highlight(code, languages.python, 'python'); - case 'm': return highlight(code, languages.matlab, 'matlab'); - case 'sh': return highlight(code, languages.bash, 'bash'); - default: return highlight(code, languages.plaintext); - } - } - return highlight(code, languages.plaintext); - } + const langMap = { + v: 'verilog', + c: 'c', + h: 'c', + hpp: 'cpp', + cpp: 'cpp', + py: 'python', + m: 'matlab', + sh: 'bash', + }; + setLanguage(langMap[fileEx] || 'plaintext'); + }, [fileName]); return ( { title={fileName} >
-
- {fileName - && ( - - )} - {dirButton && ( - - )} - {!dirButton && ( - - )} -
setCodeStuff(e)} - highlight={(code) => highlightSyntax(code)} - padding={10} - style={{ - fontFamily: '"Arial", "Helvetica", sans-serif', + onChange={(value) => setCodeStuff(value)} + options={{ + inlineSuggest: true, fontSize: 16, - minHeight: '100vh', - minWidth: '90vw', - border: '1px solid black', + formatOnType: true, + autoClosingBrackets: true, + minimap: { enabled: true }, }} />
- {fileName - && ( - - )} + {fileName && ( + + )} {dirButton && ( )} From c55d9de4041ebfef7b97943fc565bdfcbc79c7b3 Mon Sep 17 00:00:00 2001 From: Saksham Gera Date: Sat, 22 Mar 2025 01:28:47 +0530 Subject: [PATCH 08/12] Fixing Issue #209, label must contain some text --- src/component/modals/OptionsModal.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/component/modals/OptionsModal.jsx b/src/component/modals/OptionsModal.jsx index 1e4ec31..9c5fa3f 100644 --- a/src/component/modals/OptionsModal.jsx +++ b/src/component/modals/OptionsModal.jsx @@ -75,8 +75,8 @@ const OptionsModal = ({ superState, dispatcher }) => {

- Library Path:   - ) } + )} {dirButton && (