From 5802aae878cb83778c4ab088f0fd3e8e1f79a561 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Wed, 10 Apr 2024 17:31:04 +0200 Subject: [PATCH 01/27] changed place of the 'nprogress' by few px --- styles/nprogress.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/styles/nprogress.css b/styles/nprogress.css index ec1b9bee..4df7127c 100644 --- a/styles/nprogress.css +++ b/styles/nprogress.css @@ -34,8 +34,8 @@ display: block; position: fixed; z-index: 1031; - top: 15px; - right: 15px; + top: 23px; + right: 10%; } #nprogress .spinner-icon { From 30dc501b3ad7395ec1c1a1c68d4e21dabfc1ac68 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Mon, 9 Sep 2024 16:12:40 +0200 Subject: [PATCH 02/27] trying a configuration to increase 'maxConcurrentTasks' --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 70862d07..58b35a1b 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,9 @@ "buildResources": "resources", "output": "dist" }, + "node": { + "maxConcurrentTasks": 4 + }, "files": [ "main", "renderer/out", From ad4f4eaf48cb8336a093591470d06e958a24bee3 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Mon, 9 Sep 2024 16:54:46 +0200 Subject: [PATCH 03/27] removed @mui/icons-react from deps and let it in devDeps --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 58b35a1b..70862d07 100644 --- a/package.json +++ b/package.json @@ -43,9 +43,6 @@ "buildResources": "resources", "output": "dist" }, - "node": { - "maxConcurrentTasks": 4 - }, "files": [ "main", "renderer/out", From eb714d6b54ce3360fa3bbf7f7a268cebe7c2efac Mon Sep 17 00:00:00 2001 From: danielc-n Date: Mon, 23 Sep 2024 10:33:49 +0200 Subject: [PATCH 04/27] fixed a bug that makes the app crashes on bad import from gitea AND make the research for a repo more accessible by keeping the search persistent (it does not put back the default owner everytime you click on a repo) --- renderer/src/components/Sync/Gitea/Gitea.js | 10 ++++++++-- .../src/components/Sync/Gitea/GiteaFileBrowser.js | 11 +++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/renderer/src/components/Sync/Gitea/Gitea.js b/renderer/src/components/Sync/Gitea/Gitea.js index 6b8aabdb..f66c0340 100644 --- a/renderer/src/components/Sync/Gitea/Gitea.js +++ b/renderer/src/components/Sync/Gitea/Gitea.js @@ -13,21 +13,27 @@ const Gitea = ({ }) => { const [authentication, setAuthentication] = useState(); const [repository, setRepository] = useState(); + const [localDefaultOwner, setLocalDefaultOwner] = useState(""); useEffect(() => { setAuth(authentication); setRepo(repository); - // on auth change update sycn on user profile + // on auth change update sync on user profile (async () => { if (authentication !== undefined) { await createSyncProfile(authentication); + if(repository !== undefined) { + setLocalDefaultOwner(repository.owner.login); + } } })(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [authentication, repository]); const getAuth = async () => { const authentication = await localforage.getItem('authentication'); + setLocalDefaultOwner(authentication !== undefined ? authentication.user.login : ""); return authentication; }; @@ -60,7 +66,7 @@ const Gitea = ({ diff --git a/renderer/src/components/Sync/Gitea/GiteaFileBrowser.js b/renderer/src/components/Sync/Gitea/GiteaFileBrowser.js index 977d0cb6..a66bae34 100644 --- a/renderer/src/components/Sync/Gitea/GiteaFileBrowser.js +++ b/renderer/src/components/Sync/Gitea/GiteaFileBrowser.js @@ -90,10 +90,13 @@ const GiteaFileBrowser = ({ changeRepo }) => { // const regex = /.+\/\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]).1$/; let finalBranches = []; // eslint-disable-next-line no-console - console.log('chedk : ', fetchBranches.some((branch) => branch.name === 'scribe-main')); - if (fetchBranches.some((branch) => branch.name === 'scribe-main')) { - finalBranches.push({ name: 'scribe-main' }); - } else { + try { + if (fetchBranches && fetchBranches.some((branch) => branch.name === 'scribe-main')) { + finalBranches.push({ name: 'scribe-main' }); + } else { + finalBranches = fetchBranches; + } + } catch (e) { finalBranches = fetchBranches; } setSelectedGiteaProjectBranch(finalBranches[0]); From 14af3c2c4315ee63391e9f65563871fb9c45e3c4 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Mon, 23 Sep 2024 10:51:15 +0200 Subject: [PATCH 05/27] FIX pathes for windows and all systems --- .../src/layouts/editor/InnerFramePopup.js | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index b421c62d..4a515894 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -97,7 +97,7 @@ function createSection(folder, pickerJson) { let currentMetadataPath = ''; // eslint-disable-next-line for (const project of projects) { - currentMetadataPath = path.join(folder, '/', project, '/', 'metadata.json'); + currentMetadataPath = path.join(folder, project, 'metadata.json'); if (fs.existsSync(currentMetadataPath)) { const jsontest = fs.readFileSync(currentMetadataPath, 'utf-8'); const jsonParse = JSON.parse(jsontest); @@ -120,8 +120,8 @@ function createSection(folder, pickerJson) { src: { type: 'fs', path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}`, + ? path.join(`${folder}`, `${project}`, 'ingredients') + : path.join(`${folder}`, `${project}`), }, books: [], }; @@ -132,8 +132,8 @@ function createSection(folder, pickerJson) { src: { type: 'fs', path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}`, + ? path.join(`${folder}`, `${project}`, 'ingredients') + : path.join(`${folder}`, `${project}`), }, books: [], }; @@ -146,8 +146,8 @@ function createSection(folder, pickerJson) { src: { type: 'fs', path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}/${fileName}`, + ? path.join(`${folder}`, `${project}`, 'ingredients') + : path.join(`${folder}`, `${project}`, `${fileName}`), }, books: [], }; @@ -159,8 +159,8 @@ function createSection(folder, pickerJson) { src: { type: 'fs', path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}`, + ? path.join(`${folder}`, `${project}`, 'ingredients') + : path.join(`${folder}`, `${project}`), }, books: [], }; @@ -172,8 +172,8 @@ function createSection(folder, pickerJson) { src: { type: 'fs', path: folder.includes('projects') - ? `${folder}/${project}/ingredients` - : `${folder}/${project}`, + ? path.join(`${folder}`, `${project}`, 'ingredients') + : path.join(`${folder}`, `${project}`), }, books: jsonParse.type.flavorType.currentScope ? Object.keys(jsonParse.type.flavorType.currentScope) : [], }; @@ -364,7 +364,8 @@ export default function InnerFramePopup() { 'users', `${currentUser}`, 'projects', - `${p.name}_${p.id[0]}/ingredients`, + `${p.name}_${p.id[0]}`, + 'ingredients' ); return p; }); @@ -410,9 +411,10 @@ export default function InnerFramePopup() { && header.pages ) { if (!header.outputPath && folder) { + const path = window.require('path'); setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = `${folder }/${ generate({ exactly: 5, wordsPerString: 1 }).join('-') }.pdf`; + data.outputPath = path.join(`${folder }`, `${ generate({ exactly: 5, wordsPerString: 1 }).join('-') }.pdf`); data.verbose = false; return JSON.stringify(data); }); @@ -452,17 +454,18 @@ export default function InnerFramePopup() { }; useEffect(() => { + const path = window.require('path'); if (folder && nameFile === '') { setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = `${folder }/${ generate({ exactly: 5, wordsPerString: 1 }).join('-') }.pdf`; + data.outputPath = path.join(`${folder }`, `${ generate({ exactly: 5, wordsPerString: 1 }).join('-') }.pdf`); data.verbose = false; return JSON.stringify(data); }); } else if (folder && nameFile !== '') { setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = `${folder }/${ nameFile }.pdf`; + data.outputPath = path.join(`${folder }`, `${ nameFile }.pdf`); data.verbose = false; return JSON.stringify(data); }); @@ -471,9 +474,10 @@ export default function InnerFramePopup() { useEffect(() => { if (folder && nameFile !== '') { + const path = window.require('path'); setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = `${folder }/${ nameFile }.pdf`; + data.outputPath = path.join(`${folder }`, `${ nameFile }.pdf`); data.verbose = false; return JSON.stringify(data); }); From b2c05fbdf22dcc42fde8e08f59f22fa18bccbcd6 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Mon, 23 Sep 2024 11:16:56 +0200 Subject: [PATCH 06/27] update jxl-pdf and FIX for windows pathes --- package.json | 2 +- .../src/components/Resources/useReadLocalResources.js | 4 ++-- yarn.lock | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 1d82dccd..df68f130 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "is-electron": "^2.2.1", "isomorphic-git": "^1.24.0", "js-yaml": "^4.1.0", - "jxl-pdf": "0.6.3", + "jxl-pdf": "0.6.4", "localforage": "1.10.0", "lodash.isequal": "^4.5.0", "markdown-translatable": "1.3.0", diff --git a/renderer/src/components/Resources/useReadLocalResources.js b/renderer/src/components/Resources/useReadLocalResources.js index 675603a7..e0fef605 100644 --- a/renderer/src/components/Resources/useReadLocalResources.js +++ b/renderer/src/components/Resources/useReadLocalResources.js @@ -31,8 +31,8 @@ export default async function readLocalResources(username, setSubMenuItems) { const userProfile = await localforage.getItem('userProfile'); const email = userProfile.user.email; const parseData = []; - const projectsDir = `${newPath}/${email}/resources`; - const userResourceMetaPath = `${newPath}/${email}/resources`; + const projectsDir = path.join(`${newPath}`, `${email}`, `resources`); + const userResourceMetaPath = path(`${newPath}`, `${email}`, `resources`); createDirectory({ path: userResourceMetaPath }); readResourceMetadata(projectsDir, userResourceMetaPath, setSubMenuItems, parseData); } diff --git a/yarn.lock b/yarn.lock index 84fb8d3d..cf9b792c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14302,10 +14302,10 @@ just-diff@^5.0.1: resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241" integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== -jxl-pdf@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/jxl-pdf/-/jxl-pdf-0.6.3.tgz#db3ee4026b9c2041e20982b50abb2df4f16b4c85" - integrity sha512-D170/yDidlbP/d/IAnZi2XsDHQb74c1QgtWQGZ9mbtINvjBnQyVEnxOr5olhRjZ6UYnBMOrY1SDpFWW7gTQOOg== +jxl-pdf@0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/jxl-pdf/-/jxl-pdf-0.6.4.tgz#efbe0b693e61bdc44ebdb0370754ac9401c5db92" + integrity sha512-KGHtxxp6wdZnVNC1tP/b77LkImBauWsiIP1h2iA7LhDwJTG4nMpRpwQWp4mUO6YYj4LEFHEx4dnDMIemloqF+g== dependencies: commander "^11.1.0" fontkit "^2.0.2" From bd656a63c2e9d3130160891f3a9d252e3966f3c6 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Mon, 23 Sep 2024 11:49:00 +0200 Subject: [PATCH 07/27] fixed lint errors --- .../EditorPage/AudioEditor/AudioEditor.js | 2 +- .../Resources/useReadLocalResources.js | 4 +-- renderer/src/components/Sync/Gitea/Gitea.js | 7 ++-- .../src/layouts/editor/InnerFramePopup.js | 2 +- .../pdfGenWrappers/WrapperTemplate.js | 32 +++++++++++++++---- 5 files changed, 33 insertions(+), 14 deletions(-) diff --git a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js index f3781e8e..cc61639f 100644 --- a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js +++ b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js @@ -91,7 +91,7 @@ const AudioEditor = ({ editor }) => { // Since this project doesn't have text data, we will create a JSON using the versification scheme await readFile({ projectname: projectName, - filename: 'audio/ingredients/versification.json', + filename: path.join('audio', 'ingredients', 'versification.json'), username, }).then((value) => { if (value) { diff --git a/renderer/src/components/Resources/useReadLocalResources.js b/renderer/src/components/Resources/useReadLocalResources.js index e0fef605..675603a7 100644 --- a/renderer/src/components/Resources/useReadLocalResources.js +++ b/renderer/src/components/Resources/useReadLocalResources.js @@ -31,8 +31,8 @@ export default async function readLocalResources(username, setSubMenuItems) { const userProfile = await localforage.getItem('userProfile'); const email = userProfile.user.email; const parseData = []; - const projectsDir = path.join(`${newPath}`, `${email}`, `resources`); - const userResourceMetaPath = path(`${newPath}`, `${email}`, `resources`); + const projectsDir = `${newPath}/${email}/resources`; + const userResourceMetaPath = `${newPath}/${email}/resources`; createDirectory({ path: userResourceMetaPath }); readResourceMetadata(projectsDir, userResourceMetaPath, setSubMenuItems, parseData); } diff --git a/renderer/src/components/Sync/Gitea/Gitea.js b/renderer/src/components/Sync/Gitea/Gitea.js index f66c0340..12d0f7dc 100644 --- a/renderer/src/components/Sync/Gitea/Gitea.js +++ b/renderer/src/components/Sync/Gitea/Gitea.js @@ -13,7 +13,7 @@ const Gitea = ({ }) => { const [authentication, setAuthentication] = useState(); const [repository, setRepository] = useState(); - const [localDefaultOwner, setLocalDefaultOwner] = useState(""); + const [localDefaultOwner, setLocalDefaultOwner] = useState(''); useEffect(() => { setAuth(authentication); @@ -22,18 +22,17 @@ const Gitea = ({ (async () => { if (authentication !== undefined) { await createSyncProfile(authentication); - if(repository !== undefined) { + if (repository !== undefined) { setLocalDefaultOwner(repository.owner.login); } } })(); - // eslint-disable-next-line react-hooks/exhaustive-deps }, [authentication, repository]); const getAuth = async () => { const authentication = await localforage.getItem('authentication'); - setLocalDefaultOwner(authentication !== undefined ? authentication.user.login : ""); + setLocalDefaultOwner(authentication !== undefined ? authentication.user.login : ''); return authentication; }; diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index 4a515894..8af2d511 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -365,7 +365,7 @@ export default function InnerFramePopup() { `${currentUser}`, 'projects', `${p.name}_${p.id[0]}`, - 'ingredients' + 'ingredients', ); return p; }); diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js index 7fba7b6a..ed011ff4 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js @@ -42,6 +42,25 @@ export function WrapperTemplate({ ); // choice is the possible section by wrapper + const getSectionType = (key) => { + let ret; + if (sections) { + try { + const parseSection = JSON.parse(sections); + if (parseSection[key]) { + ret = parseSection[key].type; + } else { + ret = 'null'; + } + } catch { + ret = 'null'; + } + } else { + ret = 'null'; + } + return ret; + }; + useEffect(() => { setSections(firstElem(projectInfo)); }, [projectInfo]); @@ -75,7 +94,10 @@ export function WrapperTemplate({ t[keyWrapper].content.content = {}; // Update with new sections - t[keyWrapper].content.content = JSON.parse(sections); + try { + t[keyWrapper].content.content = JSON.parse(sections); + // eslint-disable-next-line + } catch {} return t; }); @@ -130,7 +152,7 @@ export function WrapperTemplate({ }); }); }; - }, [Object.keys(JSON.parse(sections)).length]); + }, [sections]); return (
    - {Object.keys(JSON.parse(sections)).map((k, index) => ( + {sections && Object.keys(JSON.parse(sections)).map((k, index) => (
  • Date: Mon, 23 Sep 2024 19:21:07 +0200 Subject: [PATCH 08/27] fixed windows path --- package.json | 2 +- .../pdfGenWrappers/WrapperTemplate.js | 30 +++++++++++++------ yarn.lock | 2 +- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index df68f130..a1287b6d 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "babel-jest": "^28.1.1", "babel-plugin-istanbul": "^6.1.1", "buffer-loader": "^0.1.0", - "canvas": "^2.9.1", + "canvas": "^2.11.2", "electron": "21.0.1", "electron-builder": "^23.6.0", "eslint": "^8.17.0", diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js index ed011ff4..85ac8d9d 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js @@ -7,15 +7,26 @@ import Trash from '../../../../../public/icons/trash.svg'; import { OBSWrapperSortableList } from './HeaderWrapper/OBSHeaderWrapper'; import { BCVWrapperSortableList } from './HeaderWrapper/BCVHeaderWrapper'; -function firstElem(projectInfo) { - if (projectInfo.type === 'Juxtalinear') { - return `{"0": {"id":"${uuidv4()}", "type": "jxlSimple", "source":"${ - projectInfo.path - }","content": {} }}`; +const fixPath = (source) => { + const isWindows = process.platform === 'win32'; + if (isWindows) { + // Convert to Windows style paths + return source.replace(/\//g, '\\'); } - return `{"0": {"id":"${uuidv4()}", "type": "null", "source":"${ - projectInfo.path - }","content": {} }}`; + // Convert to Unix style paths + return source.replace(/\\/g, '/'); +}; + +function firstElem(projectInfo) { + const obj = { + 0: { + id: uuidv4(), + type: projectInfo.type === 'Juxtalinear' ? 'jxlSimple' : 'null', + source: projectInfo.path === undefined ? 'null' : fixPath(projectInfo.path), + content: {}, + }, + }; + return JSON.stringify(obj); } export function WrapperTemplate({ @@ -253,7 +264,8 @@ export function WrapperTemplate({
    - {sections && Object.keys(JSON.parse(sections)).map((k, index) => ( + {/* eslint-disable-next-line */} + {console.log("sections\n",JSON.parse(sections)[0].source) || Object.keys(JSON.parse(sections)).map((k, index) => (
  • Date: Mon, 23 Sep 2024 19:29:12 +0200 Subject: [PATCH 09/27] reverted the spinner back to it's old position --- styles/nprogress.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/styles/nprogress.css b/styles/nprogress.css index 4df7127c..ec1b9bee 100644 --- a/styles/nprogress.css +++ b/styles/nprogress.css @@ -34,8 +34,8 @@ display: block; position: fixed; z-index: 1031; - top: 23px; - right: 10%; + top: 15px; + right: 15px; } #nprogress .spinner-icon { From e3f73251957762d6b58c0ae911b86272ddb5f549 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Tue, 24 Sep 2024 15:44:28 +0200 Subject: [PATCH 10/27] FIX windows path in process --- .../src/layouts/editor/InnerFramePopup.js | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index 8af2d511..fbef3036 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -23,6 +23,16 @@ export function findProjectInfo(meta, autoGrapha) { return autoGrapha?.filter((a) => `${a.name }_${ a.id}` === meta)[0]; } +const fixPath = (source) => { + const isWindows = process.platform === 'win32'; + if (isWindows) { + // Convert to Windows style paths + return source.replace(/\//g, '\\'); + } + // Convert to Unix style paths + return source.replace(/\\/g, '/'); +}; + function changeMetaDataToWrapperSection(meta, autoGrapha) { const projInfo = findProjectInfo(meta, autoGrapha); if (projInfo.type === 'Text Translation') { @@ -91,13 +101,14 @@ function messageToPeople(json) { function createSection(folder, pickerJson) { const path = require('path'); const fs = window.require('fs'); + const fixedPath = fixPath(folder); - const projects = fs.readdirSync(folder); + const projects = fs.readdirSync(fixedPath); let currentMetadataPath = ''; // eslint-disable-next-line for (const project of projects) { - currentMetadataPath = path.join(folder, project, 'metadata.json'); + currentMetadataPath = path.join(fixedPath, project, 'metadata.json'); if (fs.existsSync(currentMetadataPath)) { const jsontest = fs.readFileSync(currentMetadataPath, 'utf-8'); const jsonParse = JSON.parse(jsontest); @@ -119,9 +130,9 @@ function createSection(folder, pickerJson) { language: `${jsonParse.resourceMeta?.language}`, src: { type: 'fs', - path: folder.includes('projects') - ? path.join(`${folder}`, `${project}`, 'ingredients') - : path.join(`${folder}`, `${project}`), + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`), }, books: [], }; @@ -131,9 +142,9 @@ function createSection(folder, pickerJson) { language: `${jsonParse.languages[0].tag}`, src: { type: 'fs', - path: folder.includes('projects') - ? path.join(`${folder}`, `${project}`, 'ingredients') - : path.join(`${folder}`, `${project}`), + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`), }, books: [], }; @@ -145,9 +156,9 @@ function createSection(folder, pickerJson) { language: jsonParse.meta.defaultLocale, src: { type: 'fs', - path: folder.includes('projects') - ? path.join(`${folder}`, `${project}`, 'ingredients') - : path.join(`${folder}`, `${project}`, `${fileName}`), + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`, `${fileName}`), }, books: [], }; @@ -158,9 +169,9 @@ function createSection(folder, pickerJson) { language: jsonParse.meta.defaultLocale, src: { type: 'fs', - path: folder.includes('projects') - ? path.join(`${folder}`, `${project}`, 'ingredients') - : path.join(`${folder}`, `${project}`), + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`), }, books: [], }; @@ -171,9 +182,9 @@ function createSection(folder, pickerJson) { language: jsonParse.languages[0] ? jsonParse.languages[0].name.en : 'French', src: { type: 'fs', - path: folder.includes('projects') - ? path.join(`${folder}`, `${project}`, 'ingredients') - : path.join(`${folder}`, `${project}`), + path: fixedPath.includes('projects') + ? path.join(`${fixedPath}`, `${project}`, 'ingredients') + : path.join(`${fixedPath}`, `${project}`), }, books: jsonParse.type.flavorType.currentScope ? Object.keys(jsonParse.type.flavorType.currentScope) : [], }; From b0473ea3327bee2f7f53908d8743880dc9b8e555 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Wed, 25 Sep 2024 11:29:53 +0200 Subject: [PATCH 11/27] FIXED pdf generation for windows --- package.json | 2 +- renderer/src/components/Sync/Gitea/Gitea.js | 2 +- .../src/layouts/editor/InnerFramePopup.js | 19 ++++++++++++------- .../pdfGenWrappers/WrapperTemplate.js | 2 +- yarn.lock | 8 ++++---- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index a1287b6d..3b7af0d2 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "is-electron": "^2.2.1", "isomorphic-git": "^1.24.0", "js-yaml": "^4.1.0", - "jxl-pdf": "0.6.4", + "jxl-pdf": "0.6.5", "localforage": "1.10.0", "lodash.isequal": "^4.5.0", "markdown-translatable": "1.3.0", diff --git a/renderer/src/components/Sync/Gitea/Gitea.js b/renderer/src/components/Sync/Gitea/Gitea.js index 12d0f7dc..5dbaef80 100644 --- a/renderer/src/components/Sync/Gitea/Gitea.js +++ b/renderer/src/components/Sync/Gitea/Gitea.js @@ -32,7 +32,7 @@ const Gitea = ({ const getAuth = async () => { const authentication = await localforage.getItem('authentication'); - setLocalDefaultOwner(authentication !== undefined ? authentication.user.login : ''); + setLocalDefaultOwner(authentication ? authentication.user.login : ''); return authentication; }; diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index fbef3036..c4b97fb5 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -18,6 +18,7 @@ import { WrapperTemplate } from './pdfGenInterface/pdfGenWrappers/WrapperTemplat import ExpandMore from '../../../../public/icons/expand_more.svg'; import { SelectOption } from './SelectOptions'; import packageInfo from '../../../../package.json'; +import * as logger from '../../logger'; export function findProjectInfo(meta, autoGrapha) { return autoGrapha?.filter((a) => `${a.name }_${ a.id}` === meta)[0]; @@ -81,11 +82,7 @@ function messageToPeople(json) { } else if (json.type === 'section') { message += `Starting to prepare ${ json.args[0]}`; } else if (json.type === 'wrappedSection') { - message - += `Preparing section of type ${ - json.args[0] - } from ${ - json.args[1].split('-')[0]}`; + message += `Preparing section of type ${json.args[0]} from ${json.args[1].split('-')[0]}`; if (json.args[1].split('-')[1]) { message += ` to ${ json.args[1].split('-')[1]}`; } @@ -103,12 +100,20 @@ function createSection(folder, pickerJson) { const fs = window.require('fs'); const fixedPath = fixPath(folder); - const projects = fs.readdirSync(fixedPath); + let projects; + try { + if (!fs.existsSync(fixedPath)) { + fs.mkdirSync(fixedPath); + } + projects = fs.readdirSync(fixedPath); + } catch (err) { + logger.error('InnerFramePopup.js', `Error reading project dir: ${err}`); + } let currentMetadataPath = ''; // eslint-disable-next-line for (const project of projects) { - currentMetadataPath = path.join(fixedPath, project, 'metadata.json'); + currentMetadataPath = fixPath(path.join(fixedPath, project, 'metadata.json')); if (fs.existsSync(currentMetadataPath)) { const jsontest = fs.readFileSync(currentMetadataPath, 'utf-8'); const jsonParse = JSON.parse(jsontest); diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js index 85ac8d9d..c0e3831d 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js @@ -265,7 +265,7 @@ export function WrapperTemplate({
      {/* eslint-disable-next-line */} - {console.log("sections\n",JSON.parse(sections)[0].source) || Object.keys(JSON.parse(sections)).map((k, index) => ( + {Object.keys(JSON.parse(sections)).map((k, index) => (
    • Date: Wed, 25 Sep 2024 17:55:50 +0200 Subject: [PATCH 12/27] fixes and updated the module to make it easier to use --- package.json | 2 +- .../src/layouts/editor/InnerFramePopup.js | 49 +++++++++++++------ .../pdfGenWrappers/BookList.js | 17 +++++++ .../HeaderWrapper/BCVHeaderWrapper.js | 26 +++++++--- .../HeaderWrapper/JXLHeaderWrapper.js | 13 +++-- .../HeaderWrapper/OBSHeaderWrapper.js | 4 +- .../pdfGenWrappers/SectionAccordion.js | 16 +++++- .../pdfGenWrappers/WrapperTemplate.js | 4 +- styles/globals.css | 9 +++- 9 files changed, 106 insertions(+), 34 deletions(-) create mode 100644 renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js diff --git a/package.json b/package.json index 3b7af0d2..090c21b4 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "is-electron": "^2.2.1", "isomorphic-git": "^1.24.0", "js-yaml": "^4.1.0", - "jxl-pdf": "0.6.5", + "jxl-pdf": "0.7.0", "localforage": "1.10.0", "lodash.isequal": "^4.5.0", "markdown-translatable": "1.3.0", diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index c4b97fb5..8a2733cb 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -259,7 +259,8 @@ export default function InnerFramePopup() { // the order Of The Selected choice const [orderSelection, setOrderSelection] = useState([0]); // is the json is validate or not - const [isJsonValidate, setIsJsonValidate] = useState(false); + const [isJsonValidate, setIsJsonValidate] = useState(true); + const [jsonValidation, setJsonValidation] = useState({}); const [messagePrint, setMessagePrint] = useState(''); // the actual kitchenFaucet const pdfCallBacks = (json) => { @@ -285,7 +286,7 @@ export default function InnerFramePopup() { ); // the selected headerInfo - const [headerInfo, setHeaderInfo] = useState('{"sizes":"9on11","fonts":"allGentium","pages":"EXECUTIVE"}'); + const [headerInfo, setHeaderInfo] = useState('{"sizes":"9on11","fonts":"allGentium","pages":"EXECUTIVE", "verbose":"false"}'); // const [headerInfo, setHeaderInfo] = useState('{}'); const [nameFile, setNameFile] = useState(''); const [folder, setFolder] = useState(null); @@ -417,6 +418,7 @@ export default function InnerFramePopup() { useEffect(() => { const validationJson = global.PdfGenStatic.validateConfig(JSON.parse(kitchenFaucet)); + setJsonValidation(validationJson); if (validationJson.length === 0) { const header = JSON.parse(headerInfo); if ( @@ -438,7 +440,7 @@ export default function InnerFramePopup() { setIsJsonValidate(true); } } else { - setIsJsonValidate(false); + setIsJsonValidate(true); } }, [selected, headerInfo, orderSelection, folder, kitchenFaucet]); @@ -457,7 +459,6 @@ export default function InnerFramePopup() { } if (chosenFolder.filePaths.length > 0) { setFolder(chosenFolder.filePaths[0]); - setMessagePrint((prev) => `${prev }\nfolder selected : ${ chosenFolder.filePaths[0]}`); } else { // Handle case where no folder was selected // eslint-disable-next-line @@ -559,19 +560,19 @@ export default function InnerFramePopup() { }} > {SelectOption( - 'fonts', - 'fonts', - jsonWithHeaderChoice.fonts, + 'Paper size', + 'pages', + jsonWithHeaderChoice.pages, handleChangeHeaderInfo, )} {SelectOption( - 'Pages', - 'pages', - jsonWithHeaderChoice.pages, + 'Font', + 'fonts', + jsonWithHeaderChoice.fonts, handleChangeHeaderInfo, )} {SelectOption( - 'Sizes', + 'Font size', 'sizes', jsonWithHeaderChoice.sizes, handleChangeHeaderInfo, @@ -637,7 +638,7 @@ export default function InnerFramePopup() { fontWeight: 600, }} > - Advanced + Advanced mode
      - mode Merge projects into a single + Merge projects into a single export, access more print types, and use loop mode.
      @@ -750,6 +751,7 @@ export default function InnerFramePopup() { alignItems: 'center', backgroundColor: '#F50', color: 'white', + cursor: 'pointer', }} onClick={() => handleOpenModalAddWrapper(true)} > @@ -783,8 +785,9 @@ export default function InnerFramePopup() { openFileDialogSettingData(); }} > - Choose export folder + Choose an export folder +
      {folder ? `Folder selected : ${folder}` : "Please choose an export folder"}
      { handleInputChange(e); @@ -815,7 +818,7 @@ export default function InnerFramePopup() { } } onClick={async () => { - if (isJsonValidate) { + if (jsonValidation.length == 0) { setMessagePrint(''); const pdfGen = new global.PdfGenStatic( JSON.parse(kitchenFaucet), @@ -830,6 +833,22 @@ export default function InnerFramePopup() { return; } setMessagePrint((prev) => `${prev }\nSuccessful pdf generation.`); + } else { + let cleanerMessage = jsonValidation.map( + txt => { + console.log(txt); + console.log("txt.includes('outputPath')", txt.includes('outputPath')); + if(txt.includes('outputPath')) { + return "Please choose an export folder"; + } else if(txt.includes('Unknown section type')) { + return "Please choose at least one 'Print type'"; + } else if(txt.includes('requires ranges')) { + return "Canon specification : please choose at least one book"; + } + return txt; + } + ).join('\n'); + setMessagePrint(`# Error\n${cleanerMessage}`); } }} > diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js new file mode 100644 index 00000000..332bd64f --- /dev/null +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js @@ -0,0 +1,17 @@ +import React from 'react'; + +export const BookList = ({ books }) => { + return ( +
      + {books.map((book, index) => ( +
      +
      +
      + {book} +
      +
      +
      + ))} +
      + ); +}; diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js index 8341a0b1..15ba088c 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js @@ -1,12 +1,14 @@ import { useEffect, useState, useContext } from 'react'; import { Modal } from '@material-ui/core'; import { ProjectContext } from '@/components/context/ProjectContext'; +import { ReferenceContext } from '@/components/context/ReferenceContext'; import SelectBook from '@/components/EditorPage/Navigation/reference/SelectBook'; import { useBibleReference } from 'bible-reference-rcl'; import { XMarkIcon } from '@heroicons/react/24/outline'; import { useTranslation } from 'react-i18next'; import Layout from '../../../../../../public/icons/basil/Solid/Interface/Layout.svg'; import { TextOnlyTooltip, LoopSwitch } from '../fieldPicker/customMuiComponent'; +import { BookList } from '../BookList'; export function BCVWrapperSortableList({ keyWrapper, @@ -21,11 +23,16 @@ export function BCVWrapperSortableList({ const initialVerse = '1'; const { t } = useTranslation(); + const { + state: { + bookId, + }, + } = useContext(ReferenceContext); const { state: { bookList }, } = useBibleReference({ - initialBook, + initialBook: bookId, initialChapter, initialVerse, }); @@ -33,7 +40,7 @@ export function BCVWrapperSortableList({ states: { canonList }, } = useContext(ProjectContext); // end get all book from current project - const [selectedBooks, setSelectedBooks] = useState([]); + const [selectedBooks, setSelectedBooks] = useState(bookId ? [bookId.toUpperCase()] : []); const [openModalBook, setOpenModalBook] = useState(false); useEffect(() => { @@ -47,7 +54,7 @@ export function BCVWrapperSortableList({ return (
      -
      +
      {advanceMode ? (
      - Ressources in the loop will be added to - the export, form + Projects in the loop are added one by one to the document, + for each book selected above.
      )} @@ -99,13 +106,13 @@ export function BCVWrapperSortableList({ style={{ margin: 'auto', display: 'flex', - justifyContent: 'center', + justifyContent: 'left', alignItems: 'center', // Added alignment to center vertically - fontSize: 24, + fontSize: 20, color: 'black', }} > -
      +
      Translation @@ -212,7 +219,10 @@ export function BCVWrapperSortableList({ > {t('label-custom')}
      +
      + +
      { @@ -70,8 +75,8 @@ export function JXLHeaderWrapper({ fontWeight: 400, }} > - Ressources in the loop will be added to - the export, form + Projects in the loop are added one by one to the document, + for each book selected above.
      )} diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js index 1c9e7679..ecfa5a55 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js @@ -127,8 +127,8 @@ export function OBSWrapperSortableList({ fontWeight: 400, }} > - Ressources in the loop will be added to - the export, form + Projects in the loop are added one by one to the document, + for each book selected above. )} diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js index ab7f094d..ebcd027c 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js @@ -20,6 +20,20 @@ const convertionWrapperType = (type) => { } }; +const hashPrintTypes = { + 'bcvBible': 'Bible by verse', + 'bookNote': 'Book Note', + '4ColumnSpread': 'Four resources on facing pages', + '2Column': 'Two resources in two columns', + 'biblePlusNotes': 'Notes focus (by verse)', + 'paraBible': 'Formatted Bible', + 'markdown': 'Simple formatting', + // 'jxlSpread': 'Juxtalinear on facing pages', + 'jxlSimple': 'Juxtalinear', + 'obs': 'Obs', + 'obsPlusNotes': 'Obs with Notes', +} + export function AccordionPicker({ language, setSelected, @@ -236,7 +250,7 @@ export function AccordionPicker({ }} > {keySpecification !== 'null' - ? keySpecification + ? hashPrintTypes[keySpecification] : 'select a print type'} diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js index c0e3831d..74eb0eb4 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js @@ -228,7 +228,7 @@ export function WrapperTemplate({ }} >
      - + )}
      diff --git a/styles/globals.css b/styles/globals.css index c9e6f18f..0bc61f88 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -378,6 +378,7 @@ p.paragraph:has(.chapter) { border-radius: 6px; border-style: solid; border-width: 1px; + cursor: pointer; } .pdfChoice:hover { @@ -609,12 +610,18 @@ Select scribe theme Start */ .selectScribeTheme { + width: 200px; min-width: 120px; border-radius: 5px; border-color: rgba(115, 115, 115, 1); border-width: 1px; background-color: #ffffff; - /* Default background color */ +} + +.centered-container { + display: flex; + justify-content: center; + align-items: center; } .selectScribeTheme:hover { From 427992004db04e7389f5f2c14c7c4b93faffcee5 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Wed, 25 Sep 2024 21:53:26 +0200 Subject: [PATCH 13/27] corrected eslint --- .../src/layouts/editor/InnerFramePopup.js | 27 ++++---- .../pdfGenWrappers/BookList.js | 42 ++++++++---- .../HeaderWrapper/BCVHeaderWrapper.js | 2 +- .../HeaderWrapper/JXLHeaderWrapper.js | 5 +- .../pdfGenWrappers/SectionAccordion.js | 20 +++--- .../pdfGenWrappers/WrapperTemplate.js | 64 ++++++++++--------- 6 files changed, 89 insertions(+), 71 deletions(-) diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index 8a2733cb..33ca031a 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -787,7 +787,7 @@ export default function InnerFramePopup() { > Choose an export folder -
      {folder ? `Folder selected : ${folder}` : "Please choose an export folder"}
      +
      {folder ? `Folder selected : ${folder}` : 'Please choose an export folder'}
      { handleInputChange(e); @@ -818,7 +818,7 @@ export default function InnerFramePopup() { } } onClick={async () => { - if (jsonValidation.length == 0) { + if (jsonValidation.length === 0) { setMessagePrint(''); const pdfGen = new global.PdfGenStatic( JSON.parse(kitchenFaucet), @@ -834,19 +834,18 @@ export default function InnerFramePopup() { } setMessagePrint((prev) => `${prev }\nSuccessful pdf generation.`); } else { - let cleanerMessage = jsonValidation.map( - txt => { - console.log(txt); - console.log("txt.includes('outputPath')", txt.includes('outputPath')); - if(txt.includes('outputPath')) { - return "Please choose an export folder"; - } else if(txt.includes('Unknown section type')) { - return "Please choose at least one 'Print type'"; - } else if(txt.includes('requires ranges')) { - return "Canon specification : please choose at least one book"; + const cleanerMessage = jsonValidation.map( + (txt) => { + let theText = txt; + if (txt.includes('outputPath')) { + theText = 'Please choose an export folder'; + } else if (txt.includes('Unknown section type')) { + theText = 'Please choose at least one "Print type"'; + } else if (txt.includes('requires ranges')) { + theText = 'Canon specification : please choose at least one book'; } - return txt; - } + return theText; + }, ).join('\n'); setMessagePrint(`# Error\n${cleanerMessage}`); } diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js index 332bd64f..a3bcde7f 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js @@ -1,17 +1,33 @@ import React from 'react'; -export const BookList = ({ books }) => { - return ( -
      - {books.map((book, index) => ( -
      -
      -
      - {book} -
      +export const BookList = ({ books }) => ( +
      + {books.map((book, index) => ( +
      +
      +
      + {book}
      - ))} -
      - ); -}; +
      + ))} +
      +); diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js index 15ba088c..245752b0 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js @@ -18,7 +18,7 @@ export function BCVWrapperSortableList({ loopMode, }) { // Start get all book from current project - const initialBook = 'mat'; + // const initialBook = 'mat'; const initialChapter = '1'; const initialVerse = '1'; diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js index f4c40dd3..99b76802 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js @@ -1,6 +1,7 @@ import { useEffect, useState, useContext } from 'react'; import { Modal } from '@material-ui/core'; import { ProjectContext } from '@/components/context/ProjectContext'; +import { ReferenceContext } from '@/components/context/ReferenceContext'; import SelectBook from '@/components/EditorPage/Navigation/reference/SelectBook'; import { useBibleReference } from 'bible-reference-rcl'; import { XMarkIcon } from '@heroicons/react/24/outline'; @@ -16,7 +17,7 @@ export function JXLHeaderWrapper({ loopMode, }) { // Start get all book from current project - const initialBook = 'mat'; + // const initialBook = 'mat'; const initialChapter = '1'; const initialVerse = '1'; @@ -105,7 +106,7 @@ export function JXLHeaderWrapper({ margin: 'auto', display: 'flex', justifyContent: 'center', - alignItems: 'center', // Added alignment to center vertically + alignItems: 'center', fontSize: 24, color: 'black', }} diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js index ebcd027c..643e4bf5 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/SectionAccordion.js @@ -21,18 +21,18 @@ const convertionWrapperType = (type) => { }; const hashPrintTypes = { - 'bcvBible': 'Bible by verse', - 'bookNote': 'Book Note', + bcvBible: 'Bible by verse', + bookNote: 'Book Note', '4ColumnSpread': 'Four resources on facing pages', '2Column': 'Two resources in two columns', - 'biblePlusNotes': 'Notes focus (by verse)', - 'paraBible': 'Formatted Bible', - 'markdown': 'Simple formatting', - // 'jxlSpread': 'Juxtalinear on facing pages', - 'jxlSimple': 'Juxtalinear', - 'obs': 'Obs', - 'obsPlusNotes': 'Obs with Notes', -} + biblePlusNotes: 'Notes focus (by verse)', + paraBible: 'Formatted Bible', + markdown: 'Simple formatting', + // jxlSpread: 'Juxtalinear on facing pages', + jxlSimple: 'Juxtalinear', + obs: 'Obs', + obsPlusNotes: 'Obs with Notes', +}; export function AccordionPicker({ language, diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js index 74eb0eb4..2a62b3ef 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js @@ -228,38 +228,40 @@ export function WrapperTemplate({ }} >
      - {advanceMode && ()} + changePrintData((prev) => { + const updatedSelected = JSON.parse( + JSON.stringify(prev), + ); + // Remove the last key in the map as it's not required + delete updatedSelected[ + parseInt(keyWrapper, 10) + ]; + return updatedSelected; + }); + }} + > + + + )}
      From c67ba5dc46cd7208de3acb981a8d1415b66933c4 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Wed, 25 Sep 2024 22:10:45 +0200 Subject: [PATCH 14/27] fixed list of book display --- .../layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js | 2 +- .../pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js index a3bcde7f..ca35b739 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/BookList.js @@ -3,7 +3,7 @@ import React from 'react'; export const BookList = ({ books }) => (
      {books.map((book, index) => ( diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js index 99b76802..6832d3c9 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js @@ -8,6 +8,7 @@ import { XMarkIcon } from '@heroicons/react/24/outline'; import { useTranslation } from 'react-i18next'; import Layout from '../../../../../../public/icons/basil/Solid/Interface/Layout.svg'; import { TextOnlyTooltip, LoopSwitch } from '../fieldPicker/customMuiComponent'; +import { BookList } from '../BookList'; export function JXLHeaderWrapper({ keyWrapper, @@ -219,6 +220,8 @@ export function JXLHeaderWrapper({ {t('label-custom')}
      + +
      Date: Thu, 26 Sep 2024 10:24:37 +0200 Subject: [PATCH 15/27] modified the code to avoid deleting all the wrappers in the list. When you only have one item in a list, you cannot delete it anymore --- .../src/layouts/editor/InnerFramePopup.js | 3 ++- .../HeaderWrapper/BCVHeaderWrapper.js | 2 +- .../HeaderWrapper/JXLHeaderWrapper.js | 2 +- .../HeaderWrapper/OBSHeaderWrapper.js | 5 ++--- .../pdfGenWrappers/WrapperTemplate.js | 21 +++++++++++-------- 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index 33ca031a..9085a897 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -701,7 +701,7 @@ export default function InnerFramePopup() {
        - {Object.keys(selected).map((k) => ( + {Object.keys(selected).map((k,i,arraySel) => (
      • 1} />
      • ))} diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js index 245752b0..8d09ccc0 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js @@ -68,7 +68,7 @@ export function BCVWrapperSortableList({ fontWeight: 600, }} > - For each book selected above + Loop mode
        - For each book selected above + Loop mode
        -
        +
        {advanceMode ? (
        - For each Obs selected above + Loop mode
        )} -
        ); diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js index 2a62b3ef..152a2992 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/WrapperTemplate.js @@ -39,6 +39,7 @@ export function WrapperTemplate({ advanceMode, changePrintData, changePrintOrder, + showTrashButton, }) { const [orderSections, setOrderSelections] = useState([0]); const updateElemOrder = (items) => { @@ -63,6 +64,7 @@ export function WrapperTemplate({ } else { ret = 'null'; } + console.log(Object.keys(parseSection)); } catch { ret = 'null'; } @@ -73,10 +75,11 @@ export function WrapperTemplate({ }; useEffect(() => { - setSections(firstElem(projectInfo)); + const fePI = firstElem(projectInfo); + setSections(fePI); }, [projectInfo]); - const [LoopMode, setLoopMode] = useState(false); + const [loopMode, setLoopMode] = useState(false); const sortableListClassName = `sortable-${keyWrapper}-list`; const itemClassName = `sortable-${keyWrapper}-item`; @@ -183,7 +186,7 @@ export function WrapperTemplate({ advanceMode={advanceMode} changePrintData={changePrintData} setLoopMode={setLoopMode} - loopMode={LoopMode} + loopMode={loopMode} /> ) : (
        @@ -194,7 +197,7 @@ export function WrapperTemplate({ advanceMode={advanceMode} changePrintData={changePrintData} setLoopMode={setLoopMode} - loopMode={LoopMode} + loopMode={loopMode} /> ) : (
        @@ -205,14 +208,14 @@ export function WrapperTemplate({ advanceMode={advanceMode} changePrintData={changePrintData} setLoopMode={setLoopMode} - loopMode={LoopMode} + loopMode={loopMode} /> ) : (
        )}
        - {advanceMode && ( + {advanceMode && showTrashButton && (
          - {Object.keys(selected).map((k,i,arraySel) => ( + {Object.keys(selected).map((k, i, arraySel) => (
        • Date: Thu, 26 Sep 2024 10:52:16 +0200 Subject: [PATCH 18/27] slight text change --- package.json | 2 +- .../pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js | 2 +- .../pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js | 2 +- .../pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 090c21b4..63f41394 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "pack-app": "yarn build && electron-builder --dir", "dist": "yarn build && electron-builder -p never", "deploy": "yarn build && electron-builder -p always", - "makewin": "electron-builder --windows" + "makewin": "yarn build && electron-builder --windows" }, "eslintIgnore": [ "*.test.js" diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js index 8d09ccc0..e923eccf 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/BCVHeaderWrapper.js @@ -78,7 +78,7 @@ export function BCVWrapperSortableList({ }} > Projects in the loop are added one by one to the document, - for each book selected above. + for each book selected below.
        )} diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js index 854c221f..b61b2ec6 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/JXLHeaderWrapper.js @@ -78,7 +78,7 @@ export function JXLHeaderWrapper({ }} > Projects in the loop are added one by one to the document, - for each book selected above. + for each book selected below.
        )} diff --git a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js index 4a145ae2..fdab5d9c 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js +++ b/renderer/src/layouts/editor/pdfGenInterface/pdfGenWrappers/HeaderWrapper/OBSHeaderWrapper.js @@ -128,7 +128,7 @@ export function OBSWrapperSortableList({ }} > Projects in the loop are added one by one to the document, - for each book selected above. + for each story selected above.
        )} From 23a491cc5df6485c9dd20e6ca423c14bfed21cdc Mon Sep 17 00:00:00 2001 From: danielc-n Date: Mon, 30 Sep 2024 10:29:27 +0200 Subject: [PATCH 19/27] installed 'puppeteer for electron' , we will now instanciate the browser with puppeteer-core and give the instance to jxl-pdf --- main/index.js | 13 ++ package.json | 4 +- .../src/layouts/editor/InnerFramePopup.js | 2 +- yarn.lock | 156 ++++++++++++++++-- 4 files changed, 159 insertions(+), 16 deletions(-) diff --git a/main/index.js b/main/index.js index 038cc32b..fab5aa4c 100644 --- a/main/index.js +++ b/main/index.js @@ -7,6 +7,9 @@ config.config(); // Packages const { BrowserWindow, app, ipcMain } = require('electron'); +const pie = require('puppeteer-in-electron'); +pie.initialize(app); +const puppeteer = require('puppeteer-core'); // const isDev = require('electron-is-dev'); const prepareNext = require('electron-next'); const { autoUpdater } = require('electron-updater'); @@ -42,6 +45,15 @@ function createWindow() { autoUpdater.checkForUpdatesAndNotify(); } +async function instanciateBrowserPuppeteer() { + const browser = await pie.connect(app, puppeteer); + return browser; +} + +ipcMain.handle('instanciate-brower-puppeteer', (event) => { + return instanciateBrowserPuppeteer(); +}); + // prevent multiple app window opening const gotTheLock = app.requestSingleInstanceLock(); if (!gotTheLock) { @@ -71,6 +83,7 @@ app.on('window-all-closed', () => { app.on('activate', async () => { if (mainWindow === null) { + await pie.initialize(app); createWindow(); } }); diff --git a/package.json b/package.json index 63f41394..61f154ac 100644 --- a/package.json +++ b/package.json @@ -205,6 +205,8 @@ "proskomma-core": "^0.10.4", "proskomma-json-tools": "^0.8.16", "proskomma-react-hooks": "2.4.0", + "puppeteer-core": "^23.4.1", + "puppeteer-in-electron": "^3.0.5", "random-words": "^2.0.1", "raw-loader": "^4.0.2", "react": "^18.2.0", @@ -249,4 +251,4 @@ "word-aligner": "$word-aligner", "@mui/lab": "$@mui/lab" } -} \ No newline at end of file +} diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index 739208b6..d5a577fd 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -825,9 +825,9 @@ export default function InnerFramePopup() { JSON.parse(kitchenFaucet), pdfCallBacks, ); - setMessagePrint('Generating Pdf ...'); try { + const browser = await ipcRenderer.invoke('instanciate-brower-puppeteer'); await pdfGen.doPdf(); } catch (pdfError) { setMessagePrint((prev) => `${prev }\nPDF generation failed: ${ pdfError.message}`); diff --git a/yarn.lock b/yarn.lock index 0ad5c6cf..40820cf3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3569,6 +3569,20 @@ unbzip2-stream "1.4.3" yargs "17.7.2" +"@puppeteer/browsers@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.4.0.tgz#a0dd0f4e381e53f509109ae83b891db5972750f5" + integrity sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g== + dependencies: + debug "^4.3.6" + extract-zip "^2.0.1" + progress "^2.0.3" + proxy-agent "^6.4.0" + semver "^7.6.3" + tar-fs "^3.0.6" + unbzip2-stream "^1.4.3" + yargs "^17.7.2" + "@radix-ui/primitive@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.0.tgz#42ef83b3b56dccad5d703ae8c42919a68798bbe2" @@ -4314,6 +4328,13 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== +"@types/async-retry@^1.4.1": + version "1.4.8" + resolved "https://registry.yarnpkg.com/@types/async-retry/-/async-retry-1.4.8.tgz#eb32df13aceb9ba1a8a80e7fe518ff4e3fe46bb3" + integrity sha512-Qup/B5PWLe86yI5I3av6ePGaeQrIHNKCwbsQotD6aHQ6YkHsMUxVZkZsmx/Ry3VZQ6uysHwTjQ7666+k6UjVJA== + dependencies: + "@types/retry" "*" + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" @@ -4577,6 +4598,14 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== +"@types/node-fetch@^2.5.4": + version "2.6.11" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" + integrity sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + "@types/node-forge@^1.3.0": version "1.3.11" resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" @@ -4646,6 +4675,20 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== +"@types/puppeteer-core@^1.9.0": + version "1.20.0" + resolved "https://registry.yarnpkg.com/@types/puppeteer-core/-/puppeteer-core-1.20.0.tgz#ddae91d1faa3e47dce5e08c08bcf3a01e99ef54b" + integrity sha512-oYsusroRxCydDjKlO9sG41xFFa+PlJr0ZTvCzA97z02PXS9Q3YxyEHvHruUdPZgAxaqwoe96kh66Ni1+fKzuPw== + dependencies: + "@types/puppeteer" "^1" + +"@types/puppeteer@^1": + version "1.20.10" + resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-1.20.10.tgz#dfb83a8775e22fbe81eeeeeb9ada69c1e6bad3d6" + integrity sha512-3tlzJ9+z8rMvBDzHPv4Q4LCgBwDRvuoMxThkr+BqcbbNjsBkL/enFf6m+MDJke7vJT4i22ojB8yb3UpibiuBWg== + dependencies: + "@types/node" "*" + "@types/q@^1.5.1": version "1.5.8" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.8.tgz#95f6c6a08f2ad868ba230ead1d2d7f7be3db3837" @@ -4740,6 +4783,11 @@ dependencies: "@types/node" "*" +"@types/retry@*": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.5.tgz#f090ff4bd8d2e5b940ff270ab39fd5ca1834a07e" + integrity sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw== + "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -4823,6 +4871,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== +"@types/uuid@^3.4.6": + version "3.4.13" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.13.tgz#fe890e517fb840620be284ee213e81d702b1f76b" + integrity sha512-pAeZeUbLE4Z9Vi9wsWV2bYPTweEHeJJy0G4pEjOA/FSvy1Ad5U5Km8iDV6TKre1mjBiVNfAdVHKruP8bAh4Q5A== + "@types/verror@^1.10.3": version "1.10.10" resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.10.tgz#d5a4b56abac169bfbc8b23d291363a682e6fa087" @@ -5873,6 +5926,13 @@ async-mutex@^0.4.0: dependencies: tslib "^2.4.0" +async-retry@^1.3.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + async@^3.2.3, async@^3.2.4: version "3.2.6" resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" @@ -7195,6 +7255,15 @@ chromium-bidi@0.5.8: mitt "3.0.1" urlpattern-polyfill "10.0.0" +chromium-bidi@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.6.5.tgz#31be98f9ee5c93fa99d240c680518c9293d8c6bb" + integrity sha512-RuLrmzYrxSb0s9SgpB+QN5jJucPduZQ/9SIe76MDxYJuecPW5mxMdacJ1f4EtgiV+R0p3sCkznTMvH0MPGFqjA== + dependencies: + mitt "3.0.1" + urlpattern-polyfill "10.0.0" + zod "3.23.8" + chromium-pickle-js@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" @@ -8363,7 +8432,7 @@ debug@2.6.9, debug@2.X, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6, debug@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== @@ -8693,6 +8762,11 @@ devtools-protocol@0.0.1232444: resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1232444.tgz#406345a90a871ba852c530d73482275234936eed" integrity sha512-pM27vqEfxSxRkTMnF+XCmxSEb6duO5R+t8A9DEEJgy4Wz2RVanje2mmj99B6A3zv2r/qGfYlOvYznUhuokizmg== +devtools-protocol@0.0.1342118: + version "0.0.1342118" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1342118.tgz#ea136fc1701572c0830233dcb414dc857e582e0a" + integrity sha512-75fMas7PkYNDTmDyb6PRJCH7ILmHLp+BhrZGeMsa4bCh40DTxgCz2NRy5UDzII4C5KuD0oBMZ9vXKhEl6UD/3w== + dezalgo@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" @@ -10874,6 +10948,11 @@ get-port-please@^3.1.2: resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.2.tgz#502795e56217128e4183025c89a48c71652f4e49" integrity sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ== +get-port@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -11737,7 +11816,7 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" -http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.2: +http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1, http-proxy-agent@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== @@ -11792,7 +11871,7 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.5: +https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.3, https-proxy-agent@^7.0.5: version "7.0.5" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== @@ -14302,10 +14381,10 @@ just-diff@^5.0.1: resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241" integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== -jxl-pdf@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/jxl-pdf/-/jxl-pdf-0.6.5.tgz#cac19ee9eb3c5f334a8de3e6fb0c4d30358e2c19" - integrity sha512-EEjGVG9d30HOtElqu3v7fLzjae6xdXifoc97ne/Q3xFrpaDZGLhFZpfSUKimSzRcnZnVzO285u1Yb7H3mLKQVw== +jxl-pdf@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/jxl-pdf/-/jxl-pdf-0.7.0.tgz#25b344859318d9d4ec70f7e36c1614a609b26d7b" + integrity sha512-FLGGCplCbeWfc0ledqYoJMgI4Y8WbvLGprV0HvOSpLkEr3XODtLLU7tFF7kT/NJ/OIcjc/kfV/TON7qm8a99Vg== dependencies: commander "^11.1.0" fontkit "^2.0.2" @@ -18542,6 +18621,20 @@ proxy-agent@6.3.1: proxy-from-env "^1.1.0" socks-proxy-agent "^8.0.2" +proxy-agent@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.4.0.tgz#b4e2dd51dee2b377748aef8d45604c2d7608652d" + integrity sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + http-proxy-agent "^7.0.1" + https-proxy-agent "^7.0.3" + lru-cache "^7.14.1" + pac-proxy-agent "^7.0.1" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.2" + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -18594,6 +18687,31 @@ puppeteer-core@21.11.0: devtools-protocol "0.0.1232444" ws "8.16.0" +puppeteer-core@^23.4.1: + version "23.4.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-23.4.1.tgz#c1c0367b7f48645119b65b08889b0690ea00cc1f" + integrity sha512-uCxGtn8VE9PlKhdFJX/zZySi9K3Ufr3qUZe28jxJoZUqiMJOi+SFh2zhiFDSjWqZIDkc0FtnaCC+rewW3MYXmg== + dependencies: + "@puppeteer/browsers" "2.4.0" + chromium-bidi "0.6.5" + debug "^4.3.7" + devtools-protocol "0.0.1342118" + typed-query-selector "^2.12.0" + ws "^8.18.0" + +puppeteer-in-electron@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/puppeteer-in-electron/-/puppeteer-in-electron-3.0.5.tgz#52b493d9376d233fa9d20062334b3ac3736f3380" + integrity sha512-GjuPRMweteeBST9aXcFagAEiaIeQYKZaWX/4QBnMqRBQ4bEXPJkFd5p8oc6ovPbe1eriVHef2D2gr/Gv+3HTpQ== + dependencies: + "@types/async-retry" "^1.4.1" + "@types/node-fetch" "^2.5.4" + "@types/puppeteer-core" "^1.9.0" + "@types/uuid" "^3.4.6" + async-retry "^1.3.1" + get-port "^5.1.1" + uuid "^8.3.2" + puppeteer@^21.6.1: version "21.11.0" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-21.11.0.tgz#46e64067b742b0e17a3b8dc668bc437f45cdd9f1" @@ -19793,16 +19911,16 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@0.13.1, retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -21364,7 +21482,7 @@ tar-fs@^2.0.0: pump "^3.0.0" tar-stream "^2.1.4" -tar-fs@^3.0.4: +tar-fs@^3.0.4, tar-fs@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.6.tgz#eaccd3a67d5672f09ca8e8f9c3d2b89fa173f217" integrity sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w== @@ -22046,6 +22164,11 @@ typed-emitter@^2.1.0: optionalDependencies: rxjs "^7.5.2" +typed-query-selector@^2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/typed-query-selector/-/typed-query-selector-2.12.0.tgz#92b65dbc0a42655fccf4aeb1a08b1dddce8af5f2" + integrity sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -22083,7 +22206,7 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -unbzip2-stream@1.4.3: +unbzip2-stream@1.4.3, unbzip2-stream@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== @@ -23825,6 +23948,11 @@ zip-stream@^4.1.0: compress-commons "^4.1.2" readable-stream "^3.6.0" +zod@3.23.8: + version "3.23.8" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" + integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== + zwitch@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" From a98307feaf7069b838ca411bf88e24562d47a5a3 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Tue, 1 Oct 2024 12:12:20 +0200 Subject: [PATCH 20/27] it's now install chrome automatically for puppeteer-core --- .expo/README.md | 0 .expo/settings.json | 0 .gitignore | 0 .yarnrc | 0 __mocks__/electron.js | 0 __mocks__/fileMock.js | 0 __mocks__/styleMock.js | 0 app/favicon.ico | Bin app/head.js | 0 app/home/layout.jsx | 0 app/home/page.jsx | 0 app/layout.js | 0 app/loading.js | 0 app/login/page.jsx | 0 app/newproject/page.js | 0 app/page.js | 0 app/profile/page.js | 0 app/projects/page.jsx | 0 app/providers.js | 0 app/resource/page.jsx | 0 app/signup/page.jsx | 0 app/sync/page.js | 0 babel.config.js | 0 docs/Architecture/Architecture.md | 0 docs/Architecture/Autographacodestructure.png | Bin docs/Architecture/BirdEyeView.png | Bin docs/Architecture/CodeStructure.html | 0 docs/Architecture/MajorComponents.png | Bin docs/Architecture/codeStructure.txt | 0 docs/Autographa-Diagram0.txt | 0 docs/AutographaRefactDraft1.md | 0 docs/AutographaTestDoc.md | 0 docs/Autographa_refactorplans.md | 0 docs/AutographaflowDiagramDraft.html | 0 docs/Development/Offline-Merge.md | 0 docs/Flows/sectionPlaceholder flow.pdf | Bin e2e-tests/base.test.ts | 0 e2e-tests/common.js | 0 e2e-tests/myFixtures.ts | 0 intro.png | Bin main/index.js | 99 +++++++++-- main/preload.js | 9 +- netlify.toml | 0 package.json | 8 +- public/brands/door43.png | Bin public/brands/gitea.png | Bin public/brands/paratext.png | Bin public/brands/scribe.png | Bin public/icons/Common/AdjustmentsVertical.svg | 0 public/icons/Common/ArchiveBox.svg | 0 public/icons/Common/ArrowLeft.svg | 0 public/icons/Common/ArrowPath.svg | 0 public/icons/Common/Check.svg | 0 public/icons/Common/ChevronDown.svg | 0 public/icons/Common/ChevronRight.svg | 0 public/icons/Common/ChevronUp.svg | 0 public/icons/Common/ChevronUpDown.svg | 0 public/icons/Common/Cog.svg | 0 public/icons/Common/ComputerDesktop.svg | 0 public/icons/Common/EllipsisVertical.svg | 0 public/icons/Common/ExclamationTriangle.svg | 0 public/icons/Common/InformationCircle.svg | 0 public/icons/Common/MagnifyingGlass.svg | 0 public/icons/Common/Minus.svg | 0 public/icons/Common/Pencil.svg | 0 public/icons/Common/PencilSquare.svg | 0 public/icons/Common/Plus.svg | 0 public/icons/Common/QuestionMarkCircle.svg | 0 public/icons/Common/SquaresPlus.svg | 0 public/icons/Common/Trash.svg | 0 public/icons/Common/XMark.svg | 0 public/icons/Xelah/ArrowDownOnSquare.svg | 0 public/icons/Xelah/ArrowUturnLeft.svg | 0 public/icons/Xelah/ArrowUturnRight.svg | 0 public/icons/Xelah/Bars2.svg | 0 public/icons/Xelah/Bars4.svg | 0 public/icons/Xelah/Copy.svg | 0 public/icons/Xelah/Paste.svg | 0 public/icons/Xelah/Plus.svg | 0 public/icons/Xelah/RectangleStack.svg | 0 public/icons/Xelah/XMark.svg | 0 .../Outline/Brands/Adobe-After-effects.svg | 0 .../Outline/Brands/Adobe-Experince-design.svg | 0 .../Outline/Brands/Adobe-Illustrator.svg | 0 .../basil/Outline/Brands/Adobe-Indesign-1.svg | 0 .../basil/Outline/Brands/Adobe-Indesign.svg | 0 .../basil/Outline/Brands/Adobe-Lightroom.svg | 0 .../basil/Outline/Brands/Adobe-Photoshop.svg | 0 .../basil/Outline/Brands/Adobe-Premiere.svg | 0 public/icons/basil/Outline/Brands/Android.svg | 0 .../icons/basil/Outline/Brands/App-store.svg | 0 public/icons/basil/Outline/Brands/Apple.svg | 0 public/icons/basil/Outline/Brands/Asana.svg | 0 public/icons/basil/Outline/Brands/Behance.svg | 0 public/icons/basil/Outline/Brands/Chrome.svg | 0 .../icons/basil/Outline/Brands/Dribbble.svg | 0 public/icons/basil/Outline/Brands/Dropbox.svg | 0 .../Outline/Brands/Facebook-messenger.svg | 0 .../icons/basil/Outline/Brands/Facebook.svg | 0 public/icons/basil/Outline/Brands/Figma.svg | 0 public/icons/basil/Outline/Brands/Gmail.svg | 0 .../icons/basil/Outline/Brands/Google-alt.svg | 0 .../basil/Outline/Brands/Google-drive.svg | 0 .../basil/Outline/Brands/Google-play.svg | 0 public/icons/basil/Outline/Brands/Google.svg | 0 .../icons/basil/Outline/Brands/Group 151.svg | 0 .../icons/basil/Outline/Brands/Instagram.svg | 0 .../icons/basil/Outline/Brands/Linkedin.svg | 0 public/icons/basil/Outline/Brands/Medium.svg | 0 public/icons/basil/Outline/Brands/Notion.svg | 0 .../icons/basil/Outline/Brands/Pinterest.svg | 0 public/icons/basil/Outline/Brands/QQ.svg | 0 public/icons/basil/Outline/Brands/Reddit.svg | 0 public/icons/basil/Outline/Brands/Sketch.svg | 0 public/icons/basil/Outline/Brands/Skype.svg | 0 public/icons/basil/Outline/Brands/Slack.svg | 0 .../icons/basil/Outline/Brands/Snapchat.svg | 0 .../icons/basil/Outline/Brands/Telegram.svg | 0 public/icons/basil/Outline/Brands/Trello.svg | 0 public/icons/basil/Outline/Brands/Tumblr.svg | 0 public/icons/basil/Outline/Brands/Twitch.svg | 0 public/icons/basil/Outline/Brands/Twitter.svg | 0 public/icons/basil/Outline/Brands/Viber.svg | 0 public/icons/basil/Outline/Brands/Vk.svg | 0 .../icons/basil/Outline/Brands/Whatsapp.svg | 0 public/icons/basil/Outline/Brands/Windows.svg | 0 public/icons/basil/Outline/Brands/Youtube.svg | 0 .../basil/Outline/Communication/Bullhorn.svg | 0 .../basil/Outline/Communication/Chat.svg | 0 .../Outline/Communication/Comment-block.svg | 0 .../Outline/Communication/Comment-minus.svg | 0 .../Outline/Communication/Comment-plus.svg | 0 .../basil/Outline/Communication/Comment.svg | 0 .../basil/Outline/Communication/Contacts.svg | 0 .../basil/Outline/Communication/Dislike.svg | 0 .../Outline/Communication/Envelope-open.svg | 0 .../basil/Outline/Communication/Envelope.svg | 0 .../basil/Outline/Communication/Forward.svg | 0 .../basil/Outline/Communication/Like.svg | 0 .../basil/Outline/Communication/Phone-in.svg | 0 .../Outline/Communication/Phone-miss.svg | 0 .../basil/Outline/Communication/Phone-off.svg | 0 .../basil/Outline/Communication/Phone-out.svg | 0 .../basil/Outline/Communication/Phone.svg | 0 .../basil/Outline/Communication/Reply.svg | 0 .../basil/Outline/Communication/Send.svg | 0 .../basil/Outline/Communication/Share-box.svg | 0 .../basil/Outline/Communication/Share.svg | 0 .../Outline/Communication/User-block.svg | 0 .../Outline/Communication/User-clock.svg | 0 .../basil/Outline/Communication/User-plus.svg | 0 .../basil/Outline/Communication/User.svg | 0 .../basil/Outline/Devices/Battery-empty.svg | 0 .../basil/Outline/Devices/Battery-full.svg | 0 .../basil/Outline/Devices/Battery-low.svg | 0 .../basil/Outline/Devices/Battery-most.svg | 0 .../basil/Outline/Devices/Battery-quarter.svg | 0 .../basil/Outline/Devices/Battry-half.svg | 0 .../icons/basil/Outline/Devices/Binocular.svg | 0 public/icons/basil/Outline/Devices/Camera.svg | 0 .../icons/basil/Outline/Devices/Desktop.svg | 0 .../icons/basil/Outline/Devices/Dialpad.svg | 0 .../icons/basil/Outline/Devices/Gamepad.svg | 0 .../basil/Outline/Devices/Mobile-phone.svg | 0 .../icons/basil/Outline/Devices/Mouse-alt.svg | 0 public/icons/basil/Outline/Devices/Mouse.svg | 0 .../icons/basil/Outline/Devices/Printer.svg | 0 .../icons/basil/Outline/Devices/Processor.svg | 0 public/icons/basil/Outline/Devices/Server.svg | 0 public/icons/basil/Outline/Devices/Video.svg | 0 public/icons/basil/Outline/Devices/Watch.svg | 0 .../icons/basil/Outline/Files/Book-check.svg | 0 .../icons/basil/Outline/Files/Book-mark.svg | 0 public/icons/basil/Outline/Files/Book.svg | 0 .../basil/Outline/Files/Clipboard-alt.svg | 0 .../icons/basil/Outline/Files/Clipboard.svg | 0 .../icons/basil/Outline/Files/Cloud-check.svg | 0 .../basil/Outline/Files/Cloud-download.svg | 0 .../icons/basil/Outline/Files/Cloud-off.svg | 0 .../basil/Outline/Files/Cloud-upload.svg | 0 public/icons/basil/Outline/Files/Cloud.svg | 0 public/icons/basil/Outline/Files/Copy.svg | 0 public/icons/basil/Outline/Files/Document.svg | 0 public/icons/basil/Outline/Files/Download.svg | 0 .../basil/Outline/Files/File-download.svg | 0 .../icons/basil/Outline/Files/File-upload.svg | 0 .../icons/basil/Outline/Files/File-user.svg | 0 public/icons/basil/Outline/Files/File.svg | 0 .../basil/Outline/Files/Folder-block.svg | 0 .../basil/Outline/Files/Folder-delete.svg | 0 .../icons/basil/Outline/Files/Folder-lock.svg | 0 .../icons/basil/Outline/Files/Folder-open.svg | 0 .../icons/basil/Outline/Files/Folder-plus.svg | 0 .../icons/basil/Outline/Files/Folder-user.svg | 0 public/icons/basil/Outline/Files/Folder.svg | 0 public/icons/basil/Outline/Files/Image.svg | 0 public/icons/basil/Outline/Files/Invoice.svg | 0 public/icons/basil/Outline/Files/Picture.svg | 0 public/icons/basil/Outline/Files/Upload.svg | 0 public/icons/basil/Outline/General/Alarm.svg | 0 public/icons/basil/Outline/General/Bag.svg | 0 public/icons/basil/Outline/General/Bank.svg | 0 public/icons/basil/Outline/General/Box.svg | 0 .../icons/basil/Outline/General/Calendar.svg | 0 public/icons/basil/Outline/General/Card.svg | 0 .../basil/Outline/General/Chart-pie-alt.svg | 0 .../icons/basil/Outline/General/Chart-pie.svg | 0 public/icons/basil/Outline/General/Clock.svg | 0 public/icons/basil/Outline/General/Filter.svg | 0 .../icons/basil/Outline/General/Flask-alt.svg | 0 public/icons/basil/Outline/General/Flask.svg | 0 public/icons/basil/Outline/General/Home.svg | 0 public/icons/basil/Outline/General/Medkit.svg | 0 public/icons/basil/Outline/General/Moon.svg | 0 .../icons/basil/Outline/General/Palette.svg | 0 public/icons/basil/Outline/General/Pulse.svg | 0 .../basil/Outline/General/Shopping-bag.svg | 0 .../basil/Outline/General/Shopping-basket.svg | 0 .../basil/Outline/General/Shopping-cart.svg | 0 public/icons/basil/Outline/General/Sun.svg | 0 public/icons/basil/Outline/General/Timer.svg | 0 .../icons/basil/Outline/General/Umbrella.svg | 0 public/icons/basil/Outline/General/Wallet.svg | 0 public/icons/basil/Outline/Interface/Add.svg | 0 public/icons/basil/Outline/Interface/Apps.svg | 0 .../basil/Outline/Interface/Arrow down.svg | 0 .../basil/Outline/Interface/Arrow left.svg | 0 .../basil/Outline/Interface/Arrow right.svg | 0 .../basil/Outline/Interface/Arrow up.svg | 0 .../icons/basil/Outline/Interface/At-sign.svg | 0 .../icons/basil/Outline/Interface/Attach.svg | 0 .../basil/Outline/Interface/Backspace.svg | 0 .../basil/Outline/Interface/Bluetooth.svg | 0 .../icons/basil/Outline/Interface/Cancel.svg | 0 .../basil/Outline/Interface/Caret down.svg | 0 .../basil/Outline/Interface/Caret left.svg | 0 .../basil/Outline/Interface/Caret right.svg | 0 .../basil/Outline/Interface/Caret up.svg | 0 .../icons/basil/Outline/Interface/Check.svg | 0 .../basil/Outline/Interface/Collapse.svg | 0 .../icons/basil/Outline/Interface/Columns.svg | 0 .../icons/basil/Outline/Interface/Cross.svg | 0 .../icons/basil/Outline/Interface/Cursor.svg | 0 .../basil/Outline/Interface/Edit-alt.svg | 0 public/icons/basil/Outline/Interface/Edit.svg | 0 .../basil/Outline/Interface/Exchange.svg | 0 .../icons/basil/Outline/Interface/Expand.svg | 0 .../icons/basil/Outline/Interface/History.svg | 0 .../icons/basil/Outline/Interface/Hotspot.svg | 0 .../icons/basil/Outline/Interface/Layout.svg | 0 .../icons/basil/Outline/Interface/Login.svg | 0 .../icons/basil/Outline/Interface/Logout.svg | 0 public/icons/basil/Outline/Interface/Menu.svg | 0 public/icons/basil/Outline/Interface/Move.svg | 0 .../icons/basil/Outline/Interface/Other 1.svg | 0 .../icons/basil/Outline/Interface/Other 2.svg | 0 public/icons/basil/Outline/Interface/Plus.svg | 0 .../icons/basil/Outline/Interface/Refresh.svg | 0 public/icons/basil/Outline/Interface/Rows.svg | 0 public/icons/basil/Outline/Interface/Save.svg | 0 .../icons/basil/Outline/Interface/Search.svg | 0 .../Outline/Interface/Settings-adjust.svg | 0 .../basil/Outline/Interface/Settings-alt.svg | 0 .../basil/Outline/Interface/Settings.svg | 0 public/icons/basil/Outline/Interface/Sort.svg | 0 .../icons/basil/Outline/Interface/Stack.svg | 0 .../basil/Outline/Interface/Trash-alt.svg | 0 .../icons/basil/Outline/Interface/Trash.svg | 0 .../icons/basil/Outline/Interface/Zoom-in.svg | 0 .../basil/Outline/Interface/Zoom-out.svg | 0 .../basil/Outline/Media/Fast-forward.svg | 0 .../icons/basil/Outline/Media/Fast-rewind.svg | 0 .../icons/basil/Outline/Media/Headphone.svg | 0 public/icons/basil/Outline/Media/Headset.svg | 0 .../basil/Outline/Media/Microphone-off.svg | 0 .../icons/basil/Outline/Media/Microphone.svg | 0 public/icons/basil/Outline/Media/Music.svg | 0 public/icons/basil/Outline/Media/Pause.svg | 0 public/icons/basil/Outline/Media/Play.svg | 0 public/icons/basil/Outline/Media/Shuffle.svg | 0 .../icons/basil/Outline/Media/Skip-next.svg | 0 .../icons/basil/Outline/Media/Skip-prev.svg | 0 .../icons/basil/Outline/Media/Volume-down.svg | 0 .../icons/basil/Outline/Media/Volume-off.svg | 0 .../icons/basil/Outline/Media/Volume-up.svg | 0 .../Outline/Navigation/Current-location.svg | 0 .../basil/Outline/Navigation/Explore.svg | 0 .../icons/basil/Outline/Navigation/Globe.svg | 0 .../Outline/Navigation/Location-check.svg | 0 .../Outline/Navigation/Location-plus.svg | 0 .../Outline/Navigation/Location-question.svg | 0 .../basil/Outline/Navigation/Location.svg | 0 .../basil/Outline/Navigation/Map-location.svg | 0 .../basil/Outline/Navigation/Navigation.svg | 0 public/icons/basil/Outline/Status/Award.svg | 0 .../icons/basil/Outline/Status/Book-open.svg | 0 .../icons/basil/Outline/Status/Bookmark.svg | 0 .../basil/Outline/Status/Checked-box.svg | 0 public/icons/basil/Outline/Status/Diamond.svg | 0 .../icons/basil/Outline/Status/Eye-closed.svg | 0 public/icons/basil/Outline/Status/Eye.svg | 0 public/icons/basil/Outline/Status/Fire.svg | 0 .../icons/basil/Outline/Status/Heart-off.svg | 0 .../icons/basil/Outline/Status/Heart-plus.svg | 0 public/icons/basil/Outline/Status/Heart.svg | 0 .../icons/basil/Outline/Status/Heartbeat.svg | 0 .../basil/Outline/Status/Info-circle.svg | 0 .../icons/basil/Outline/Status/Info-rect.svg | 0 .../basil/Outline/Status/Info-triangle.svg | 0 public/icons/basil/Outline/Status/Key.svg | 0 .../basil/Outline/Status/Lightbulb-alt.svg | 0 .../basil/Outline/Status/Lightbulb-off.svg | 0 .../icons/basil/Outline/Status/Lightbulb.svg | 0 .../basil/Outline/Status/Lightning-alt.svg | 0 .../icons/basil/Outline/Status/Lightning.svg | 0 .../icons/basil/Outline/Status/Lock-time.svg | 0 public/icons/basil/Outline/Status/Lock.svg | 0 .../basil/Outline/Status/Notification-off.svg | 0 .../basil/Outline/Status/Notification-on.svg | 0 .../basil/Outline/Status/Notification.svg | 0 public/icons/basil/Outline/Status/Pin.svg | 0 .../basil/Outline/Status/Power-button.svg | 0 public/icons/basil/Outline/Status/Present.svg | 0 .../icons/basil/Outline/Status/Sand-watch.svg | 0 public/icons/basil/Outline/Status/Shield.svg | 0 .../icons/basil/Outline/Status/Star-half.svg | 0 public/icons/basil/Outline/Status/Star.svg | 0 .../icons/basil/Outline/Status/Toggle-off.svg | 0 .../icons/basil/Outline/Status/Toggle-on.svg | 0 .../icons/basil/Outline/Status/University.svg | 0 public/icons/basil/Outline/Status/Unlock.svg | 0 .../Solid/Brands/Adobe-After-effects.svg | 0 .../Solid/Brands/Adobe-Experince-design.svg | 0 .../basil/Solid/Brands/Adobe-Illustrator.svg | 0 .../basil/Solid/Brands/Adobe-Indesign-1.svg | 0 .../basil/Solid/Brands/Adobe-Indesign.svg | 0 .../basil/Solid/Brands/Adobe-Lightroom.svg | 0 .../basil/Solid/Brands/Adobe-Photoshop.svg | 0 .../basil/Solid/Brands/Adobe-Premiere.svg | 0 public/icons/basil/Solid/Brands/Android.svg | 0 public/icons/basil/Solid/Brands/App-store.svg | 0 public/icons/basil/Solid/Brands/Apple.svg | 0 public/icons/basil/Solid/Brands/Asana.svg | 0 public/icons/basil/Solid/Brands/Behance.svg | 0 public/icons/basil/Solid/Brands/Chrome.svg | 0 public/icons/basil/Solid/Brands/Dribbble.svg | 0 public/icons/basil/Solid/Brands/Dropbox.svg | 0 .../basil/Solid/Brands/Facebook-messenger.svg | 0 public/icons/basil/Solid/Brands/Facebook.svg | 0 public/icons/basil/Solid/Brands/Figma.svg | 0 public/icons/basil/Solid/Brands/Gmail.svg | 0 .../icons/basil/Solid/Brands/Google-alt.svg | 0 .../icons/basil/Solid/Brands/Google-drive.svg | 0 .../icons/basil/Solid/Brands/Google-play.svg | 0 public/icons/basil/Solid/Brands/Google.svg | 0 public/icons/basil/Solid/Brands/Instagram.svg | 0 public/icons/basil/Solid/Brands/Linkedin.svg | 0 public/icons/basil/Solid/Brands/Medium.svg | 0 public/icons/basil/Solid/Brands/Notion.svg | 0 public/icons/basil/Solid/Brands/Pinterest.svg | 0 public/icons/basil/Solid/Brands/QQ.svg | 0 public/icons/basil/Solid/Brands/Reddit.svg | 0 public/icons/basil/Solid/Brands/Sketch.svg | 0 public/icons/basil/Solid/Brands/Skype.svg | 0 public/icons/basil/Solid/Brands/Slack.svg | 0 public/icons/basil/Solid/Brands/Snapchat.svg | 0 public/icons/basil/Solid/Brands/Telegram.svg | 0 public/icons/basil/Solid/Brands/Trello.svg | 0 public/icons/basil/Solid/Brands/Tumblr.svg | 0 public/icons/basil/Solid/Brands/Twitch.svg | 0 public/icons/basil/Solid/Brands/Twitter.svg | 0 public/icons/basil/Solid/Brands/Viber.svg | 0 public/icons/basil/Solid/Brands/Vk.svg | 0 public/icons/basil/Solid/Brands/Wechat.svg | 0 public/icons/basil/Solid/Brands/Whatsapp.svg | 0 public/icons/basil/Solid/Brands/Windows.svg | 0 public/icons/basil/Solid/Brands/Youtube.svg | 0 .../basil/Solid/Communication/Bullhorn.svg | 0 .../icons/basil/Solid/Communication/Chat.svg | 0 .../Solid/Communication/Comment-block.svg | 0 .../Solid/Communication/Comment-minus.svg | 0 .../Solid/Communication/Comment-plus.svg | 0 .../basil/Solid/Communication/Comment.svg | 0 .../basil/Solid/Communication/Contacts.svg | 0 .../basil/Solid/Communication/Dislike.svg | 0 .../Solid/Communication/Envelope-open.svg | 0 .../basil/Solid/Communication/Envelope.svg | 0 .../basil/Solid/Communication/Forward.svg | 0 .../icons/basil/Solid/Communication/Like.svg | 0 .../basil/Solid/Communication/Phone-in.svg | 0 .../basil/Solid/Communication/Phone-miss.svg | 0 .../basil/Solid/Communication/Phone-off.svg | 0 .../basil/Solid/Communication/Phone-out.svg | 0 .../icons/basil/Solid/Communication/Phone.svg | 0 .../icons/basil/Solid/Communication/Reply.svg | 0 .../icons/basil/Solid/Communication/Send.svg | 0 .../basil/Solid/Communication/Share-box.svg | 0 .../icons/basil/Solid/Communication/Share.svg | 0 .../basil/Solid/Communication/User-block.svg | 0 .../basil/Solid/Communication/User-clock.svg | 0 .../basil/Solid/Communication/User-plus.svg | 0 .../icons/basil/Solid/Communication/User.svg | 0 .../basil/Solid/Devices/Battery-full-1.svg | 0 .../basil/Solid/Devices/Battery-full.svg | 0 .../icons/basil/Solid/Devices/Battery-low.svg | 0 .../basil/Solid/Devices/Battery-most.svg | 0 .../basil/Solid/Devices/Battery-quarter.svg | 0 .../icons/basil/Solid/Devices/Battry-half.svg | 0 .../icons/basil/Solid/Devices/Binocular.svg | 0 public/icons/basil/Solid/Devices/Camera.svg | 0 public/icons/basil/Solid/Devices/Desktop.svg | 0 public/icons/basil/Solid/Devices/Dialpad.svg | 0 public/icons/basil/Solid/Devices/Gamepad.svg | 0 .../basil/Solid/Devices/Mobile-phone.svg | 0 .../icons/basil/Solid/Devices/Mouse-alt.svg | 0 public/icons/basil/Solid/Devices/Mouse.svg | 0 public/icons/basil/Solid/Devices/Printer.svg | 0 .../icons/basil/Solid/Devices/Processor.svg | 0 public/icons/basil/Solid/Devices/Server.svg | 0 public/icons/basil/Solid/Devices/Video.svg | 0 public/icons/basil/Solid/Devices/Watch.svg | 0 public/icons/basil/Solid/Files/Book-check.svg | 0 public/icons/basil/Solid/Files/Book-mark.svg | 0 public/icons/basil/Solid/Files/Book.svg | 0 .../icons/basil/Solid/Files/Clipboard-alt.svg | 0 public/icons/basil/Solid/Files/Clipboard.svg | 0 .../icons/basil/Solid/Files/Cloud-check.svg | 0 .../basil/Solid/Files/Cloud-download.svg | 0 public/icons/basil/Solid/Files/Cloud-off.svg | 0 .../icons/basil/Solid/Files/Cloud-upload.svg | 0 public/icons/basil/Solid/Files/Cloud.svg | 0 public/icons/basil/Solid/Files/Copy.svg | 0 public/icons/basil/Solid/Files/Document.svg | 0 public/icons/basil/Solid/Files/Download.svg | 0 .../icons/basil/Solid/Files/File-download.svg | 0 .../icons/basil/Solid/Files/File-upload.svg | 0 public/icons/basil/Solid/Files/File-user.svg | 0 public/icons/basil/Solid/Files/File.svg | 0 .../icons/basil/Solid/Files/Folder-block.svg | 0 .../icons/basil/Solid/Files/Folder-delete.svg | 0 .../icons/basil/Solid/Files/Folder-lock.svg | 0 .../icons/basil/Solid/Files/Folder-open.svg | 0 .../icons/basil/Solid/Files/Folder-plus.svg | 0 .../icons/basil/Solid/Files/Folder-user.svg | 0 public/icons/basil/Solid/Files/Folder.svg | 0 public/icons/basil/Solid/Files/Image.svg | 0 public/icons/basil/Solid/Files/Invoice.svg | 0 public/icons/basil/Solid/Files/Picture.svg | 0 public/icons/basil/Solid/Files/Upload.svg | 0 public/icons/basil/Solid/General/Alarm.svg | 0 public/icons/basil/Solid/General/Bag.svg | 0 public/icons/basil/Solid/General/Bank.svg | 0 public/icons/basil/Solid/General/Box.svg | 0 public/icons/basil/Solid/General/Calendar.svg | 0 public/icons/basil/Solid/General/Card.svg | 0 .../basil/Solid/General/Chart-pie-alt.svg | 0 .../icons/basil/Solid/General/Chart-pie.svg | 0 public/icons/basil/Solid/General/Clock.svg | 0 public/icons/basil/Solid/General/Filter.svg | 0 .../icons/basil/Solid/General/Flask-alt.svg | 0 public/icons/basil/Solid/General/Flask.svg | 0 public/icons/basil/Solid/General/Home.svg | 0 public/icons/basil/Solid/General/Medkit.svg | 0 public/icons/basil/Solid/General/Moon.svg | 0 public/icons/basil/Solid/General/Palette.svg | 0 public/icons/basil/Solid/General/Pulse.svg | 0 .../basil/Solid/General/Shopping-bag.svg | 0 .../basil/Solid/General/Shopping-basket.svg | 0 .../basil/Solid/General/Shopping-cart.svg | 0 public/icons/basil/Solid/General/Sun.svg | 0 public/icons/basil/Solid/General/Timer.svg | 0 public/icons/basil/Solid/General/Umbrella.svg | 0 public/icons/basil/Solid/General/Wallet.svg | 0 public/icons/basil/Solid/Interface/Add.svg | 0 public/icons/basil/Solid/Interface/Apps.svg | 0 .../basil/Solid/Interface/Arrow down.svg | 0 .../basil/Solid/Interface/Arrow left.svg | 0 .../basil/Solid/Interface/Arrow right.svg | 0 .../icons/basil/Solid/Interface/Arrow up.svg | 0 .../icons/basil/Solid/Interface/At-sign.svg | 0 public/icons/basil/Solid/Interface/Attach.svg | 0 .../icons/basil/Solid/Interface/Backspace.svg | 0 .../icons/basil/Solid/Interface/Bluetooth.svg | 0 public/icons/basil/Solid/Interface/Cancel.svg | 0 .../basil/Solid/Interface/Caret down.svg | 0 .../basil/Solid/Interface/Caret left.svg | 0 .../basil/Solid/Interface/Caret right.svg | 0 .../icons/basil/Solid/Interface/Caret up.svg | 0 public/icons/basil/Solid/Interface/Check.svg | 0 .../icons/basil/Solid/Interface/Collapse.svg | 0 .../icons/basil/Solid/Interface/Columns.svg | 0 public/icons/basil/Solid/Interface/Cross.svg | 0 public/icons/basil/Solid/Interface/Cursor.svg | 0 .../icons/basil/Solid/Interface/Edit-alt.svg | 0 public/icons/basil/Solid/Interface/Edit.svg | 0 .../icons/basil/Solid/Interface/Exchange.svg | 0 public/icons/basil/Solid/Interface/Expand.svg | 0 .../icons/basil/Solid/Interface/History.svg | 0 .../icons/basil/Solid/Interface/Hotspot.svg | 0 public/icons/basil/Solid/Interface/Layout.svg | 0 public/icons/basil/Solid/Interface/Login.svg | 0 public/icons/basil/Solid/Interface/Logout.svg | 0 public/icons/basil/Solid/Interface/Menu.svg | 0 public/icons/basil/Solid/Interface/Move.svg | 0 .../icons/basil/Solid/Interface/Other 1.svg | 0 .../icons/basil/Solid/Interface/Other 2.svg | 0 public/icons/basil/Solid/Interface/Plus.svg | 0 .../icons/basil/Solid/Interface/Refresh.svg | 0 public/icons/basil/Solid/Interface/Rows.svg | 0 public/icons/basil/Solid/Interface/Save.svg | 0 public/icons/basil/Solid/Interface/Search.svg | 0 .../basil/Solid/Interface/Settings-adjust.svg | 0 .../basil/Solid/Interface/Settings-alt.svg | 0 .../icons/basil/Solid/Interface/Settings.svg | 0 public/icons/basil/Solid/Interface/Sort.svg | 0 public/icons/basil/Solid/Interface/Stack.svg | 0 .../icons/basil/Solid/Interface/Trash-alt.svg | 0 public/icons/basil/Solid/Interface/Trash.svg | 0 .../icons/basil/Solid/Interface/Zoom-in.svg | 0 .../icons/basil/Solid/Interface/Zoom-out.svg | 0 .../icons/basil/Solid/Media/Fast-forward.svg | 0 .../icons/basil/Solid/Media/Fast-rewind.svg | 0 public/icons/basil/Solid/Media/Headphone.svg | 0 public/icons/basil/Solid/Media/Headset.svg | 0 .../basil/Solid/Media/Microphone-off.svg | 0 public/icons/basil/Solid/Media/Microphone.svg | 0 public/icons/basil/Solid/Media/Music.svg | 0 public/icons/basil/Solid/Media/Pause.svg | 0 public/icons/basil/Solid/Media/Play.svg | 0 public/icons/basil/Solid/Media/Shuffle.svg | 0 public/icons/basil/Solid/Media/Skip-next.svg | 0 public/icons/basil/Solid/Media/Skip-prev.svg | 0 .../icons/basil/Solid/Media/Volume-down.svg | 0 public/icons/basil/Solid/Media/Volume-off.svg | 0 public/icons/basil/Solid/Media/Volume-up.svg | 0 .../Solid/Navigation/Current-location.svg | 0 .../icons/basil/Solid/Navigation/Explore.svg | 0 public/icons/basil/Solid/Navigation/Globe.svg | 0 .../basil/Solid/Navigation/Location-check.svg | 0 .../basil/Solid/Navigation/Location-plus.svg | 0 .../Solid/Navigation/Location-question.svg | 0 .../icons/basil/Solid/Navigation/Location.svg | 0 .../basil/Solid/Navigation/Map-location.svg | 0 .../basil/Solid/Navigation/Navigation.svg | 0 public/icons/basil/Solid/Status/Award.svg | 0 public/icons/basil/Solid/Status/Book-open.svg | 0 public/icons/basil/Solid/Status/Bookmark.svg | 0 .../icons/basil/Solid/Status/Checked-box.svg | 0 public/icons/basil/Solid/Status/Diamond.svg | 0 .../icons/basil/Solid/Status/Eye-closed.svg | 0 public/icons/basil/Solid/Status/Eye.svg | 0 public/icons/basil/Solid/Status/Fire.svg | 0 public/icons/basil/Solid/Status/Group 23.svg | 0 public/icons/basil/Solid/Status/Heart-off.svg | 0 public/icons/basil/Solid/Status/Heart.svg | 0 public/icons/basil/Solid/Status/Heartbeat.svg | 0 .../icons/basil/Solid/Status/Info-circle.svg | 0 public/icons/basil/Solid/Status/Info-rect.svg | 0 .../basil/Solid/Status/Info-triangle.svg | 0 public/icons/basil/Solid/Status/Key.svg | 0 .../basil/Solid/Status/Lightbulb-alt.svg | 0 .../basil/Solid/Status/Lightbulb-off.svg | 0 public/icons/basil/Solid/Status/Lightbulb.svg | 0 .../basil/Solid/Status/Lightning-alt.svg | 0 public/icons/basil/Solid/Status/Lightning.svg | 0 public/icons/basil/Solid/Status/Lock-time.svg | 0 public/icons/basil/Solid/Status/Lock.svg | 0 .../basil/Solid/Status/Notification-off.svg | 0 .../basil/Solid/Status/Notification-on.svg | 0 .../icons/basil/Solid/Status/Notification.svg | 0 public/icons/basil/Solid/Status/Pin.svg | 0 .../icons/basil/Solid/Status/Power-button.svg | 0 public/icons/basil/Solid/Status/Present.svg | 0 .../icons/basil/Solid/Status/Sand-watch.svg | 0 public/icons/basil/Solid/Status/Shield.svg | 0 public/icons/basil/Solid/Status/Star-half.svg | 0 public/icons/basil/Solid/Status/Star.svg | 0 .../icons/basil/Solid/Status/Toggle-off.svg | 0 public/icons/basil/Solid/Status/Toggle-on.svg | 0 .../icons/basil/Solid/Status/University.svg | 0 public/icons/basil/Solid/Status/Unlock.svg | 0 public/icons/circle-info-solid.svg | 0 public/icons/crossreference.svg | 0 public/icons/door43.svg | 0 public/icons/expand_more.svg | 0 public/icons/file.svg | 0 public/icons/filter.svg | 0 public/icons/font.svg | 0 public/icons/footnotes.svg | 0 public/icons/logo.svg | 0 public/icons/new.svg | 0 public/icons/projects.svg | 0 public/icons/sectionIcons/2Column.svg | 0 public/icons/sectionIcons/4Column.svg | 0 .../sectionIcons/NotesOnly [not used yet].svg | 0 public/icons/sectionIcons/bcv.svg | 0 public/icons/sectionIcons/biblePlusNotes.svg | 0 public/icons/sectionIcons/bookNote.svg | 0 public/icons/sectionIcons/jxlSimple.svg | 0 public/icons/sectionIcons/jxlSpread.svg | 0 public/icons/sectionIcons/markdown.svg | 0 public/icons/sectionIcons/obs.svg | 0 public/icons/sectionIcons/obsPlusNotes.svg | 0 public/icons/sectionIcons/paraBible.svg | 0 public/icons/sundesmos/alignHelp.png | Bin public/icons/sundesmos/check_circleTrue.svg | 0 public/icons/sundesmos/check_circleWrong.svg | 0 public/icons/sync.svg | 0 public/icons/trash.svg | 0 public/icons/waveform.svg | 0 public/icons/x-solid.svg | 0 public/illustrations/bible-icon.svg | 0 public/illustrations/close-button-black.svg | 0 public/illustrations/dialogue-icon.svg | 0 public/illustrations/dictionary-icon.svg | 0 public/illustrations/down-arrow.svg | 0 public/illustrations/greenCheck.png | Bin public/illustrations/group.svg | 0 public/illustrations/half-moon.svg | 0 public/illustrations/image-icon.svg | 0 public/illustrations/location-icon.svg | 0 public/illustrations/minimize.svg | 0 public/illustrations/quote.svg | 0 public/illustrations/sitting.png | Bin public/illustrations/sitting.svg | 0 public/illustrations/standing.png | Bin public/illustrations/vector-one.svg | 0 public/scribex/bcs-hi_irv.tit.usfm | 0 public/scribex/bcs-hi_irv.usfm | 0 .../scribex/unfoldingWord-en_ult.psa-bak.usfm | 0 .../unfoldingWord-en_ult.psa-short.usfm | 0 public/scribex/unfoldingWord-en_ult.psa.usfm | 0 .../src/layouts/editor/InnerFramePopup.js | 70 ++++++-- styles/globals.css | 0 styles/loader.css | 0 styles/nprogress.css | 0 styles/scribe-logo.png | Bin styles/scribe.icns | Bin styles/style-override.lazy.css | 0 supabase.js | 0 testconfig/setupTests.js | 0 useStyles.js | 0 yarn.lock | 162 +++--------------- 643 files changed, 166 insertions(+), 182 deletions(-) mode change 100644 => 100755 .expo/README.md mode change 100644 => 100755 .expo/settings.json mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .yarnrc mode change 100644 => 100755 __mocks__/electron.js mode change 100644 => 100755 __mocks__/fileMock.js mode change 100644 => 100755 __mocks__/styleMock.js mode change 100644 => 100755 app/favicon.ico mode change 100644 => 100755 app/head.js mode change 100644 => 100755 app/home/layout.jsx mode change 100644 => 100755 app/home/page.jsx mode change 100644 => 100755 app/layout.js mode change 100644 => 100755 app/loading.js mode change 100644 => 100755 app/login/page.jsx mode change 100644 => 100755 app/newproject/page.js mode change 100644 => 100755 app/page.js mode change 100644 => 100755 app/profile/page.js mode change 100644 => 100755 app/projects/page.jsx mode change 100644 => 100755 app/providers.js mode change 100644 => 100755 app/resource/page.jsx mode change 100644 => 100755 app/signup/page.jsx mode change 100644 => 100755 app/sync/page.js mode change 100644 => 100755 babel.config.js mode change 100644 => 100755 docs/Architecture/Architecture.md mode change 100644 => 100755 docs/Architecture/Autographacodestructure.png mode change 100644 => 100755 docs/Architecture/BirdEyeView.png mode change 100644 => 100755 docs/Architecture/CodeStructure.html mode change 100644 => 100755 docs/Architecture/MajorComponents.png mode change 100644 => 100755 docs/Architecture/codeStructure.txt mode change 100644 => 100755 docs/Autographa-Diagram0.txt mode change 100644 => 100755 docs/AutographaRefactDraft1.md mode change 100644 => 100755 docs/AutographaTestDoc.md mode change 100644 => 100755 docs/Autographa_refactorplans.md mode change 100644 => 100755 docs/AutographaflowDiagramDraft.html mode change 100644 => 100755 docs/Development/Offline-Merge.md mode change 100644 => 100755 docs/Flows/sectionPlaceholder flow.pdf mode change 100644 => 100755 e2e-tests/base.test.ts mode change 100644 => 100755 e2e-tests/common.js mode change 100644 => 100755 e2e-tests/myFixtures.ts mode change 100644 => 100755 intro.png mode change 100644 => 100755 main/index.js mode change 100644 => 100755 main/preload.js mode change 100644 => 100755 netlify.toml mode change 100644 => 100755 public/brands/door43.png mode change 100644 => 100755 public/brands/gitea.png mode change 100644 => 100755 public/brands/paratext.png mode change 100644 => 100755 public/brands/scribe.png mode change 100644 => 100755 public/icons/Common/AdjustmentsVertical.svg mode change 100644 => 100755 public/icons/Common/ArchiveBox.svg mode change 100644 => 100755 public/icons/Common/ArrowLeft.svg mode change 100644 => 100755 public/icons/Common/ArrowPath.svg mode change 100644 => 100755 public/icons/Common/Check.svg mode change 100644 => 100755 public/icons/Common/ChevronDown.svg mode change 100644 => 100755 public/icons/Common/ChevronRight.svg mode change 100644 => 100755 public/icons/Common/ChevronUp.svg mode change 100644 => 100755 public/icons/Common/ChevronUpDown.svg mode change 100644 => 100755 public/icons/Common/Cog.svg mode change 100644 => 100755 public/icons/Common/ComputerDesktop.svg mode change 100644 => 100755 public/icons/Common/EllipsisVertical.svg mode change 100644 => 100755 public/icons/Common/ExclamationTriangle.svg mode change 100644 => 100755 public/icons/Common/InformationCircle.svg mode change 100644 => 100755 public/icons/Common/MagnifyingGlass.svg mode change 100644 => 100755 public/icons/Common/Minus.svg mode change 100644 => 100755 public/icons/Common/Pencil.svg mode change 100644 => 100755 public/icons/Common/PencilSquare.svg mode change 100644 => 100755 public/icons/Common/Plus.svg mode change 100644 => 100755 public/icons/Common/QuestionMarkCircle.svg mode change 100644 => 100755 public/icons/Common/SquaresPlus.svg mode change 100644 => 100755 public/icons/Common/Trash.svg mode change 100644 => 100755 public/icons/Common/XMark.svg mode change 100644 => 100755 public/icons/Xelah/ArrowDownOnSquare.svg mode change 100644 => 100755 public/icons/Xelah/ArrowUturnLeft.svg mode change 100644 => 100755 public/icons/Xelah/ArrowUturnRight.svg mode change 100644 => 100755 public/icons/Xelah/Bars2.svg mode change 100644 => 100755 public/icons/Xelah/Bars4.svg mode change 100644 => 100755 public/icons/Xelah/Copy.svg mode change 100644 => 100755 public/icons/Xelah/Paste.svg mode change 100644 => 100755 public/icons/Xelah/Plus.svg mode change 100644 => 100755 public/icons/Xelah/RectangleStack.svg mode change 100644 => 100755 public/icons/Xelah/XMark.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-After-effects.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Experince-design.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Illustrator.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Indesign-1.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Indesign.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Lightroom.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Photoshop.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Adobe-Premiere.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Android.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/App-store.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Apple.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Asana.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Behance.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Chrome.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Dribbble.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Dropbox.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Facebook-messenger.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Facebook.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Figma.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Gmail.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Google-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Google-drive.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Google-play.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Google.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Group 151.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Instagram.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Linkedin.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Medium.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Notion.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Pinterest.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/QQ.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Reddit.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Sketch.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Skype.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Slack.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Snapchat.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Telegram.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Trello.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Tumblr.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Twitch.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Twitter.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Viber.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Vk.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Whatsapp.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Windows.svg mode change 100644 => 100755 public/icons/basil/Outline/Brands/Youtube.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Bullhorn.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Chat.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Comment-block.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Comment-minus.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Comment-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Comment.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Contacts.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Dislike.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Envelope-open.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Envelope.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Forward.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Like.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone-in.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone-miss.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone-out.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Phone.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Reply.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Send.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Share-box.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/Share.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/User-block.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/User-clock.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/User-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Communication/User.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-empty.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-full.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-low.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-most.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battery-quarter.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Battry-half.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Binocular.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Camera.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Desktop.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Dialpad.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Gamepad.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Mobile-phone.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Mouse-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Mouse.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Printer.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Processor.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Server.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Video.svg mode change 100644 => 100755 public/icons/basil/Outline/Devices/Watch.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Book-check.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Book-mark.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Book.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Clipboard-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Clipboard.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud-check.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud-download.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud-upload.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Cloud.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Copy.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Document.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Download.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/File-download.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/File-upload.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/File-user.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/File.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-block.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-delete.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-lock.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-open.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder-user.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Folder.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Image.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Invoice.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Picture.svg mode change 100644 => 100755 public/icons/basil/Outline/Files/Upload.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Alarm.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Bag.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Bank.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Box.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Calendar.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Card.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Chart-pie-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Chart-pie.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Clock.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Filter.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Flask-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Flask.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Home.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Medkit.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Moon.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Palette.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Pulse.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Shopping-bag.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Shopping-basket.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Shopping-cart.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Sun.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Timer.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Umbrella.svg mode change 100644 => 100755 public/icons/basil/Outline/General/Wallet.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Add.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Apps.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Arrow down.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Arrow left.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Arrow right.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Arrow up.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/At-sign.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Attach.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Backspace.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Bluetooth.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Cancel.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Caret down.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Caret left.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Caret right.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Caret up.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Check.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Collapse.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Columns.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Cross.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Cursor.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Edit-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Edit.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Exchange.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Expand.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/History.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Hotspot.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Layout.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Login.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Logout.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Menu.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Move.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Other 1.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Other 2.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Refresh.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Rows.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Save.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Search.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Settings-adjust.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Settings-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Settings.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Sort.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Stack.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Trash-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Trash.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Zoom-in.svg mode change 100644 => 100755 public/icons/basil/Outline/Interface/Zoom-out.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Fast-forward.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Fast-rewind.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Headphone.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Headset.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Microphone-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Microphone.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Music.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Pause.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Play.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Shuffle.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Skip-next.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Skip-prev.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Volume-down.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Volume-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Media/Volume-up.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Current-location.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Explore.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Globe.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Location-check.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Location-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Location-question.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Location.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Map-location.svg mode change 100644 => 100755 public/icons/basil/Outline/Navigation/Navigation.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Award.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Book-open.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Bookmark.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Checked-box.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Diamond.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Eye-closed.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Eye.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Fire.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Heart-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Heart-plus.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Heart.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Heartbeat.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Info-circle.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Info-rect.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Info-triangle.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Key.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightbulb-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightbulb-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightbulb.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightning-alt.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lightning.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lock-time.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Lock.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Notification-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Notification-on.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Notification.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Pin.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Power-button.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Present.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Sand-watch.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Shield.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Star-half.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Star.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Toggle-off.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Toggle-on.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/University.svg mode change 100644 => 100755 public/icons/basil/Outline/Status/Unlock.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-After-effects.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Experince-design.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Illustrator.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Indesign-1.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Indesign.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Lightroom.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Photoshop.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Adobe-Premiere.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Android.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/App-store.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Apple.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Asana.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Behance.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Chrome.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Dribbble.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Dropbox.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Facebook-messenger.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Facebook.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Figma.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Gmail.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Google-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Google-drive.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Google-play.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Google.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Instagram.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Linkedin.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Medium.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Notion.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Pinterest.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/QQ.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Reddit.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Sketch.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Skype.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Slack.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Snapchat.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Telegram.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Trello.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Tumblr.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Twitch.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Twitter.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Viber.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Vk.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Wechat.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Whatsapp.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Windows.svg mode change 100644 => 100755 public/icons/basil/Solid/Brands/Youtube.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Bullhorn.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Chat.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Comment-block.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Comment-minus.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Comment-plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Comment.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Contacts.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Dislike.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Envelope-open.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Envelope.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Forward.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Like.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone-in.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone-miss.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone-out.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Phone.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Reply.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Send.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Share-box.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/Share.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/User-block.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/User-clock.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/User-plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Communication/User.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-full-1.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-full.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-low.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-most.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battery-quarter.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Battry-half.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Binocular.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Camera.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Desktop.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Dialpad.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Gamepad.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Mobile-phone.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Mouse-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Mouse.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Printer.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Processor.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Server.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Video.svg mode change 100644 => 100755 public/icons/basil/Solid/Devices/Watch.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Book-check.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Book-mark.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Book.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Clipboard-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Clipboard.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud-check.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud-download.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud-upload.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Cloud.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Copy.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Document.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Download.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/File-download.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/File-upload.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/File-user.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/File.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-block.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-delete.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-lock.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-open.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder-user.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Folder.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Image.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Invoice.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Picture.svg mode change 100644 => 100755 public/icons/basil/Solid/Files/Upload.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Alarm.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Bag.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Bank.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Box.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Calendar.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Card.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Chart-pie-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Chart-pie.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Clock.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Filter.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Flask-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Flask.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Home.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Medkit.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Moon.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Palette.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Pulse.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Shopping-bag.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Shopping-basket.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Shopping-cart.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Sun.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Timer.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Umbrella.svg mode change 100644 => 100755 public/icons/basil/Solid/General/Wallet.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Add.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Apps.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Arrow down.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Arrow left.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Arrow right.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Arrow up.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/At-sign.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Attach.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Backspace.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Bluetooth.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Cancel.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Caret down.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Caret left.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Caret right.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Caret up.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Check.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Collapse.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Columns.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Cross.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Cursor.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Edit-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Edit.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Exchange.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Expand.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/History.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Hotspot.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Layout.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Login.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Logout.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Menu.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Move.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Other 1.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Other 2.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Refresh.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Rows.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Save.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Search.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Settings-adjust.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Settings-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Settings.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Sort.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Stack.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Trash-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Trash.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Zoom-in.svg mode change 100644 => 100755 public/icons/basil/Solid/Interface/Zoom-out.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Fast-forward.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Fast-rewind.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Headphone.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Headset.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Microphone-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Microphone.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Music.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Pause.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Play.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Shuffle.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Skip-next.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Skip-prev.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Volume-down.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Volume-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Media/Volume-up.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Current-location.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Explore.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Globe.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Location-check.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Location-plus.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Location-question.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Location.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Map-location.svg mode change 100644 => 100755 public/icons/basil/Solid/Navigation/Navigation.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Award.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Book-open.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Bookmark.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Checked-box.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Diamond.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Eye-closed.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Eye.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Fire.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Group 23.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Heart-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Heart.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Heartbeat.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Info-circle.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Info-rect.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Info-triangle.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Key.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightbulb-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightbulb-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightbulb.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightning-alt.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lightning.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lock-time.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Lock.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Notification-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Notification-on.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Notification.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Pin.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Power-button.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Present.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Sand-watch.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Shield.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Star-half.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Star.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Toggle-off.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Toggle-on.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/University.svg mode change 100644 => 100755 public/icons/basil/Solid/Status/Unlock.svg mode change 100644 => 100755 public/icons/circle-info-solid.svg mode change 100644 => 100755 public/icons/crossreference.svg mode change 100644 => 100755 public/icons/door43.svg mode change 100644 => 100755 public/icons/expand_more.svg mode change 100644 => 100755 public/icons/file.svg mode change 100644 => 100755 public/icons/filter.svg mode change 100644 => 100755 public/icons/font.svg mode change 100644 => 100755 public/icons/footnotes.svg mode change 100644 => 100755 public/icons/logo.svg mode change 100644 => 100755 public/icons/new.svg mode change 100644 => 100755 public/icons/projects.svg mode change 100644 => 100755 public/icons/sectionIcons/2Column.svg mode change 100644 => 100755 public/icons/sectionIcons/4Column.svg mode change 100644 => 100755 public/icons/sectionIcons/NotesOnly [not used yet].svg mode change 100644 => 100755 public/icons/sectionIcons/bcv.svg mode change 100644 => 100755 public/icons/sectionIcons/biblePlusNotes.svg mode change 100644 => 100755 public/icons/sectionIcons/bookNote.svg mode change 100644 => 100755 public/icons/sectionIcons/jxlSimple.svg mode change 100644 => 100755 public/icons/sectionIcons/jxlSpread.svg mode change 100644 => 100755 public/icons/sectionIcons/markdown.svg mode change 100644 => 100755 public/icons/sectionIcons/obs.svg mode change 100644 => 100755 public/icons/sectionIcons/obsPlusNotes.svg mode change 100644 => 100755 public/icons/sectionIcons/paraBible.svg mode change 100644 => 100755 public/icons/sundesmos/alignHelp.png mode change 100644 => 100755 public/icons/sundesmos/check_circleTrue.svg mode change 100644 => 100755 public/icons/sundesmos/check_circleWrong.svg mode change 100644 => 100755 public/icons/sync.svg mode change 100644 => 100755 public/icons/trash.svg mode change 100644 => 100755 public/icons/waveform.svg mode change 100644 => 100755 public/icons/x-solid.svg mode change 100644 => 100755 public/illustrations/bible-icon.svg mode change 100644 => 100755 public/illustrations/close-button-black.svg mode change 100644 => 100755 public/illustrations/dialogue-icon.svg mode change 100644 => 100755 public/illustrations/dictionary-icon.svg mode change 100644 => 100755 public/illustrations/down-arrow.svg mode change 100644 => 100755 public/illustrations/greenCheck.png mode change 100644 => 100755 public/illustrations/group.svg mode change 100644 => 100755 public/illustrations/half-moon.svg mode change 100644 => 100755 public/illustrations/image-icon.svg mode change 100644 => 100755 public/illustrations/location-icon.svg mode change 100644 => 100755 public/illustrations/minimize.svg mode change 100644 => 100755 public/illustrations/quote.svg mode change 100644 => 100755 public/illustrations/sitting.png mode change 100644 => 100755 public/illustrations/sitting.svg mode change 100644 => 100755 public/illustrations/standing.png mode change 100644 => 100755 public/illustrations/vector-one.svg mode change 100644 => 100755 public/scribex/bcs-hi_irv.tit.usfm mode change 100644 => 100755 public/scribex/bcs-hi_irv.usfm mode change 100644 => 100755 public/scribex/unfoldingWord-en_ult.psa-bak.usfm mode change 100644 => 100755 public/scribex/unfoldingWord-en_ult.psa-short.usfm mode change 100644 => 100755 public/scribex/unfoldingWord-en_ult.psa.usfm mode change 100644 => 100755 styles/globals.css mode change 100644 => 100755 styles/loader.css mode change 100644 => 100755 styles/nprogress.css mode change 100644 => 100755 styles/scribe-logo.png mode change 100644 => 100755 styles/scribe.icns mode change 100644 => 100755 styles/style-override.lazy.css mode change 100644 => 100755 supabase.js mode change 100644 => 100755 testconfig/setupTests.js mode change 100644 => 100755 useStyles.js mode change 100644 => 100755 yarn.lock diff --git a/.expo/README.md b/.expo/README.md old mode 100644 new mode 100755 diff --git a/.expo/settings.json b/.expo/settings.json old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.yarnrc b/.yarnrc old mode 100644 new mode 100755 diff --git a/__mocks__/electron.js b/__mocks__/electron.js old mode 100644 new mode 100755 diff --git a/__mocks__/fileMock.js b/__mocks__/fileMock.js old mode 100644 new mode 100755 diff --git a/__mocks__/styleMock.js b/__mocks__/styleMock.js old mode 100644 new mode 100755 diff --git a/app/favicon.ico b/app/favicon.ico old mode 100644 new mode 100755 diff --git a/app/head.js b/app/head.js old mode 100644 new mode 100755 diff --git a/app/home/layout.jsx b/app/home/layout.jsx old mode 100644 new mode 100755 diff --git a/app/home/page.jsx b/app/home/page.jsx old mode 100644 new mode 100755 diff --git a/app/layout.js b/app/layout.js old mode 100644 new mode 100755 diff --git a/app/loading.js b/app/loading.js old mode 100644 new mode 100755 diff --git a/app/login/page.jsx b/app/login/page.jsx old mode 100644 new mode 100755 diff --git a/app/newproject/page.js b/app/newproject/page.js old mode 100644 new mode 100755 diff --git a/app/page.js b/app/page.js old mode 100644 new mode 100755 diff --git a/app/profile/page.js b/app/profile/page.js old mode 100644 new mode 100755 diff --git a/app/projects/page.jsx b/app/projects/page.jsx old mode 100644 new mode 100755 diff --git a/app/providers.js b/app/providers.js old mode 100644 new mode 100755 diff --git a/app/resource/page.jsx b/app/resource/page.jsx old mode 100644 new mode 100755 diff --git a/app/signup/page.jsx b/app/signup/page.jsx old mode 100644 new mode 100755 diff --git a/app/sync/page.js b/app/sync/page.js old mode 100644 new mode 100755 diff --git a/babel.config.js b/babel.config.js old mode 100644 new mode 100755 diff --git a/docs/Architecture/Architecture.md b/docs/Architecture/Architecture.md old mode 100644 new mode 100755 diff --git a/docs/Architecture/Autographacodestructure.png b/docs/Architecture/Autographacodestructure.png old mode 100644 new mode 100755 diff --git a/docs/Architecture/BirdEyeView.png b/docs/Architecture/BirdEyeView.png old mode 100644 new mode 100755 diff --git a/docs/Architecture/CodeStructure.html b/docs/Architecture/CodeStructure.html old mode 100644 new mode 100755 diff --git a/docs/Architecture/MajorComponents.png b/docs/Architecture/MajorComponents.png old mode 100644 new mode 100755 diff --git a/docs/Architecture/codeStructure.txt b/docs/Architecture/codeStructure.txt old mode 100644 new mode 100755 diff --git a/docs/Autographa-Diagram0.txt b/docs/Autographa-Diagram0.txt old mode 100644 new mode 100755 diff --git a/docs/AutographaRefactDraft1.md b/docs/AutographaRefactDraft1.md old mode 100644 new mode 100755 diff --git a/docs/AutographaTestDoc.md b/docs/AutographaTestDoc.md old mode 100644 new mode 100755 diff --git a/docs/Autographa_refactorplans.md b/docs/Autographa_refactorplans.md old mode 100644 new mode 100755 diff --git a/docs/AutographaflowDiagramDraft.html b/docs/AutographaflowDiagramDraft.html old mode 100644 new mode 100755 diff --git a/docs/Development/Offline-Merge.md b/docs/Development/Offline-Merge.md old mode 100644 new mode 100755 diff --git a/docs/Flows/sectionPlaceholder flow.pdf b/docs/Flows/sectionPlaceholder flow.pdf old mode 100644 new mode 100755 diff --git a/e2e-tests/base.test.ts b/e2e-tests/base.test.ts old mode 100644 new mode 100755 diff --git a/e2e-tests/common.js b/e2e-tests/common.js old mode 100644 new mode 100755 diff --git a/e2e-tests/myFixtures.ts b/e2e-tests/myFixtures.ts old mode 100644 new mode 100755 diff --git a/intro.png b/intro.png old mode 100644 new mode 100755 diff --git a/main/index.js b/main/index.js old mode 100644 new mode 100755 index fab5aa4c..985fba8a --- a/main/index.js +++ b/main/index.js @@ -1,25 +1,81 @@ // Native require('@electron/remote/main').initialize(); -const { join } = require('path'); +const path = require('path'); +const fs = require('fs').promises; const { format } = require('url'); +const { install } = require('@puppeteer/browsers'); const config = require("dotenv"); config.config(); // Packages const { BrowserWindow, app, ipcMain } = require('electron'); -const pie = require('puppeteer-in-electron'); -pie.initialize(app); -const puppeteer = require('puppeteer-core'); // const isDev = require('electron-is-dev'); const prepareNext = require('electron-next'); const { autoUpdater } = require('electron-updater'); let mainWindow; +let browserPath; function isDev() { return process.argv[2] == '--dev'; } + +async function setPermissions(chromePath) { + try { + await fs.chmod(chromePath, '755'); // Set the permissions to be executable + console.log(`Permissions set for: ${chromePath}`); + } catch (err) { + console.error(`Failed to set permissions for ${chromePath}: `, err); + } +} + +async function getChromeCacheDir() { + // Use Electron's app.getPath to get the userData directory (persistent) + const dataDir = app.getPath('appData'); + + // Define a custom subfolder for your app data + const chromeDataDir = path.join(dataDir, 'chrome-cache'); + + // Create the folder if it doesn't exist + try { + await fs.access(chromeDataDir); + } catch (err) { + // If the directory doesn't exist, create it + await fs.mkdir(chromeDataDir, { recursive: true }); + console.log(`Created persistent Chrome data directory at: ${chromeDataDir}`); + } + + return chromeDataDir; +} + +async function verifyAndInstallChrome(version) { + const platform = process.platform === 'win32' ? 'win64' : process.platform; + + // Get the persistent directory + const cacheDir = await getChromeCacheDir(); + const bPath = path.join(cacheDir, `chrome/${platform}-${version}`); + + // Check if the browser is already installed + try { + await fs.access(bPath); + console.log(`Chrome version ${version} is already installed.`); + browserPath = bPath; + } catch (err) { + console.log(`Chrome version ${version} is not installed. Installing now...`); + await install({ + cacheDir, + browser: 'chrome', + buildId: version, + platform, + }).then((res) => { + browserPath = res.path; + setPermissions(browserPath); + }); + console.log(`Chrome version ${version} has been installed.`); + } +} + // Prepare the renderer once the app is ready -function createWindow() { +async function createWindow() { mainWindow = new BrowserWindow({ width: 900, height: 600, @@ -29,29 +85,44 @@ function createWindow() { webSecurity: false, enableRemoteModule: true, contextIsolation: false, - preload: join(__dirname, 'preload.js'), + preload: path.join(__dirname, 'preload.js'), }, }); require('@electron/remote/main').enable(mainWindow.webContents); const url = isDev() ? 'http://localhost:8000' : format({ - pathname: join(__dirname, '../renderer/out/index.html'), + pathname: path.join(__dirname, '../renderer/out/index.html'), protocol: 'file:', slashes: true, }); + // useful line of code to debug puppet with the console in the app + // app.commandLine.appendSwitch('remote-debugging-port', '8000'); + + verifyAndInstallChrome('121.0.6167.85') + .catch(err => { + console.error(`Failed to verify or install Chrome: ${err.message}`); + }); + mainWindow.loadURL(url); autoUpdater.checkForUpdatesAndNotify(); } -async function instanciateBrowserPuppeteer() { - const browser = await pie.connect(app, puppeteer); - return browser; -} - -ipcMain.handle('instanciate-brower-puppeteer', (event) => { - return instanciateBrowserPuppeteer(); +// async function instanciateBrowserPuppeteer() { +// console.log("instanciateBrowserPuppeteer call"); +// const browser = await pie.connect(app, puppeteer); +// console.log("browser OK", browser.version()); +// // return browser; +// } + +ipcMain.handle('get-browser-path', async (event) => { + if(!browserPath) { + verifyAndInstallChrome('121.0.6167.85').catch(err => { + console.error(`Failed to verify or install Chrome: ${err.message}`); + }); + } + return await browserPath; }); // prevent multiple app window opening diff --git a/main/preload.js b/main/preload.js old mode 100644 new mode 100755 index 59b36b86..d5237601 --- a/main/preload.js +++ b/main/preload.js @@ -2,6 +2,7 @@ const { ipcRenderer } = require('electron'); const log = require('electron-log'); const fontList = require('font-list'); const { PdfGen } = require('jxl-pdf'); +const puppeteer = require('puppeteer-core'); const _fonts = []; const fetchFonts = async () => { @@ -17,12 +18,10 @@ const fetchFonts = async () => { }; fetchFonts(); -// Since we disabled nodeIntegration we can reintroduce -// needed node functionality here process.once('loaded', () => { - global.ipcRenderer = ipcRenderer; + global.puppeteer = puppeteer; global.log = log; - global.PdfGenStatic = PdfGen + global.PdfGenStatic = PdfGen; global.fonts = _fonts; -}); +}); \ No newline at end of file diff --git a/netlify.toml b/netlify.toml old mode 100644 new mode 100755 diff --git a/package.json b/package.json index 61f154ac..c6a16423 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "babel-plugin-istanbul": "^6.1.1", "buffer-loader": "^0.1.0", "canvas": "^2.11.2", - "electron": "21.0.1", + "electron": "^21.0.1", "electron-builder": "^23.6.0", "eslint": "^8.17.0", "eslint-config-airbnb": "^19.0.4", @@ -146,6 +146,7 @@ "@mui/material": "^5.15.15", "@mui/styles": "^5.15.18", "@ory/kratos-client": "^0.10.1", + "@puppeteer/browsers": "^2.4.0", "@radix-ui/react-dialog": "^1.0.3", "@radix-ui/react-dropdown-menu": "^2.0.4", "@react-pdf/renderer": "^3.4.0", @@ -185,7 +186,7 @@ "is-electron": "^2.2.1", "isomorphic-git": "^1.24.0", "js-yaml": "^4.1.0", - "jxl-pdf": "0.7.0", + "jxl-pdf": "0.8.0", "localforage": "1.10.0", "lodash.isequal": "^4.5.0", "markdown-translatable": "1.3.0", @@ -205,8 +206,7 @@ "proskomma-core": "^0.10.4", "proskomma-json-tools": "^0.8.16", "proskomma-react-hooks": "2.4.0", - "puppeteer-core": "^23.4.1", - "puppeteer-in-electron": "^3.0.5", + "puppeteer-core": "^21.6.1", "random-words": "^2.0.1", "raw-loader": "^4.0.2", "react": "^18.2.0", diff --git a/public/brands/door43.png b/public/brands/door43.png old mode 100644 new mode 100755 diff --git a/public/brands/gitea.png b/public/brands/gitea.png old mode 100644 new mode 100755 diff --git a/public/brands/paratext.png b/public/brands/paratext.png old mode 100644 new mode 100755 diff --git a/public/brands/scribe.png b/public/brands/scribe.png old mode 100644 new mode 100755 diff --git a/public/icons/Common/AdjustmentsVertical.svg b/public/icons/Common/AdjustmentsVertical.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ArchiveBox.svg b/public/icons/Common/ArchiveBox.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ArrowLeft.svg b/public/icons/Common/ArrowLeft.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ArrowPath.svg b/public/icons/Common/ArrowPath.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Check.svg b/public/icons/Common/Check.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ChevronDown.svg b/public/icons/Common/ChevronDown.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ChevronRight.svg b/public/icons/Common/ChevronRight.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ChevronUp.svg b/public/icons/Common/ChevronUp.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ChevronUpDown.svg b/public/icons/Common/ChevronUpDown.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Cog.svg b/public/icons/Common/Cog.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ComputerDesktop.svg b/public/icons/Common/ComputerDesktop.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/EllipsisVertical.svg b/public/icons/Common/EllipsisVertical.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/ExclamationTriangle.svg b/public/icons/Common/ExclamationTriangle.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/InformationCircle.svg b/public/icons/Common/InformationCircle.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/MagnifyingGlass.svg b/public/icons/Common/MagnifyingGlass.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Minus.svg b/public/icons/Common/Minus.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Pencil.svg b/public/icons/Common/Pencil.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/PencilSquare.svg b/public/icons/Common/PencilSquare.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Plus.svg b/public/icons/Common/Plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/QuestionMarkCircle.svg b/public/icons/Common/QuestionMarkCircle.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/SquaresPlus.svg b/public/icons/Common/SquaresPlus.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/Trash.svg b/public/icons/Common/Trash.svg old mode 100644 new mode 100755 diff --git a/public/icons/Common/XMark.svg b/public/icons/Common/XMark.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/ArrowDownOnSquare.svg b/public/icons/Xelah/ArrowDownOnSquare.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/ArrowUturnLeft.svg b/public/icons/Xelah/ArrowUturnLeft.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/ArrowUturnRight.svg b/public/icons/Xelah/ArrowUturnRight.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Bars2.svg b/public/icons/Xelah/Bars2.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Bars4.svg b/public/icons/Xelah/Bars4.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Copy.svg b/public/icons/Xelah/Copy.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Paste.svg b/public/icons/Xelah/Paste.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/Plus.svg b/public/icons/Xelah/Plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/RectangleStack.svg b/public/icons/Xelah/RectangleStack.svg old mode 100644 new mode 100755 diff --git a/public/icons/Xelah/XMark.svg b/public/icons/Xelah/XMark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-After-effects.svg b/public/icons/basil/Outline/Brands/Adobe-After-effects.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Experince-design.svg b/public/icons/basil/Outline/Brands/Adobe-Experince-design.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Illustrator.svg b/public/icons/basil/Outline/Brands/Adobe-Illustrator.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Indesign-1.svg b/public/icons/basil/Outline/Brands/Adobe-Indesign-1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Indesign.svg b/public/icons/basil/Outline/Brands/Adobe-Indesign.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Lightroom.svg b/public/icons/basil/Outline/Brands/Adobe-Lightroom.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Photoshop.svg b/public/icons/basil/Outline/Brands/Adobe-Photoshop.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Adobe-Premiere.svg b/public/icons/basil/Outline/Brands/Adobe-Premiere.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Android.svg b/public/icons/basil/Outline/Brands/Android.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/App-store.svg b/public/icons/basil/Outline/Brands/App-store.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Apple.svg b/public/icons/basil/Outline/Brands/Apple.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Asana.svg b/public/icons/basil/Outline/Brands/Asana.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Behance.svg b/public/icons/basil/Outline/Brands/Behance.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Chrome.svg b/public/icons/basil/Outline/Brands/Chrome.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Dribbble.svg b/public/icons/basil/Outline/Brands/Dribbble.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Dropbox.svg b/public/icons/basil/Outline/Brands/Dropbox.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Facebook-messenger.svg b/public/icons/basil/Outline/Brands/Facebook-messenger.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Facebook.svg b/public/icons/basil/Outline/Brands/Facebook.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Figma.svg b/public/icons/basil/Outline/Brands/Figma.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Gmail.svg b/public/icons/basil/Outline/Brands/Gmail.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Google-alt.svg b/public/icons/basil/Outline/Brands/Google-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Google-drive.svg b/public/icons/basil/Outline/Brands/Google-drive.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Google-play.svg b/public/icons/basil/Outline/Brands/Google-play.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Google.svg b/public/icons/basil/Outline/Brands/Google.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Group 151.svg b/public/icons/basil/Outline/Brands/Group 151.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Instagram.svg b/public/icons/basil/Outline/Brands/Instagram.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Linkedin.svg b/public/icons/basil/Outline/Brands/Linkedin.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Medium.svg b/public/icons/basil/Outline/Brands/Medium.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Notion.svg b/public/icons/basil/Outline/Brands/Notion.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Pinterest.svg b/public/icons/basil/Outline/Brands/Pinterest.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/QQ.svg b/public/icons/basil/Outline/Brands/QQ.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Reddit.svg b/public/icons/basil/Outline/Brands/Reddit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Sketch.svg b/public/icons/basil/Outline/Brands/Sketch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Skype.svg b/public/icons/basil/Outline/Brands/Skype.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Slack.svg b/public/icons/basil/Outline/Brands/Slack.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Snapchat.svg b/public/icons/basil/Outline/Brands/Snapchat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Telegram.svg b/public/icons/basil/Outline/Brands/Telegram.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Trello.svg b/public/icons/basil/Outline/Brands/Trello.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Tumblr.svg b/public/icons/basil/Outline/Brands/Tumblr.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Twitch.svg b/public/icons/basil/Outline/Brands/Twitch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Twitter.svg b/public/icons/basil/Outline/Brands/Twitter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Viber.svg b/public/icons/basil/Outline/Brands/Viber.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Vk.svg b/public/icons/basil/Outline/Brands/Vk.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Whatsapp.svg b/public/icons/basil/Outline/Brands/Whatsapp.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Windows.svg b/public/icons/basil/Outline/Brands/Windows.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Brands/Youtube.svg b/public/icons/basil/Outline/Brands/Youtube.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Bullhorn.svg b/public/icons/basil/Outline/Communication/Bullhorn.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Chat.svg b/public/icons/basil/Outline/Communication/Chat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Comment-block.svg b/public/icons/basil/Outline/Communication/Comment-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Comment-minus.svg b/public/icons/basil/Outline/Communication/Comment-minus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Comment-plus.svg b/public/icons/basil/Outline/Communication/Comment-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Comment.svg b/public/icons/basil/Outline/Communication/Comment.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Contacts.svg b/public/icons/basil/Outline/Communication/Contacts.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Dislike.svg b/public/icons/basil/Outline/Communication/Dislike.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Envelope-open.svg b/public/icons/basil/Outline/Communication/Envelope-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Envelope.svg b/public/icons/basil/Outline/Communication/Envelope.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Forward.svg b/public/icons/basil/Outline/Communication/Forward.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Like.svg b/public/icons/basil/Outline/Communication/Like.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone-in.svg b/public/icons/basil/Outline/Communication/Phone-in.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone-miss.svg b/public/icons/basil/Outline/Communication/Phone-miss.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone-off.svg b/public/icons/basil/Outline/Communication/Phone-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone-out.svg b/public/icons/basil/Outline/Communication/Phone-out.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Phone.svg b/public/icons/basil/Outline/Communication/Phone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Reply.svg b/public/icons/basil/Outline/Communication/Reply.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Send.svg b/public/icons/basil/Outline/Communication/Send.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Share-box.svg b/public/icons/basil/Outline/Communication/Share-box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/Share.svg b/public/icons/basil/Outline/Communication/Share.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/User-block.svg b/public/icons/basil/Outline/Communication/User-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/User-clock.svg b/public/icons/basil/Outline/Communication/User-clock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/User-plus.svg b/public/icons/basil/Outline/Communication/User-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Communication/User.svg b/public/icons/basil/Outline/Communication/User.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-empty.svg b/public/icons/basil/Outline/Devices/Battery-empty.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-full.svg b/public/icons/basil/Outline/Devices/Battery-full.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-low.svg b/public/icons/basil/Outline/Devices/Battery-low.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-most.svg b/public/icons/basil/Outline/Devices/Battery-most.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battery-quarter.svg b/public/icons/basil/Outline/Devices/Battery-quarter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Battry-half.svg b/public/icons/basil/Outline/Devices/Battry-half.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Binocular.svg b/public/icons/basil/Outline/Devices/Binocular.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Camera.svg b/public/icons/basil/Outline/Devices/Camera.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Desktop.svg b/public/icons/basil/Outline/Devices/Desktop.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Dialpad.svg b/public/icons/basil/Outline/Devices/Dialpad.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Gamepad.svg b/public/icons/basil/Outline/Devices/Gamepad.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Mobile-phone.svg b/public/icons/basil/Outline/Devices/Mobile-phone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Mouse-alt.svg b/public/icons/basil/Outline/Devices/Mouse-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Mouse.svg b/public/icons/basil/Outline/Devices/Mouse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Printer.svg b/public/icons/basil/Outline/Devices/Printer.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Processor.svg b/public/icons/basil/Outline/Devices/Processor.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Server.svg b/public/icons/basil/Outline/Devices/Server.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Video.svg b/public/icons/basil/Outline/Devices/Video.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Devices/Watch.svg b/public/icons/basil/Outline/Devices/Watch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Book-check.svg b/public/icons/basil/Outline/Files/Book-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Book-mark.svg b/public/icons/basil/Outline/Files/Book-mark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Book.svg b/public/icons/basil/Outline/Files/Book.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Clipboard-alt.svg b/public/icons/basil/Outline/Files/Clipboard-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Clipboard.svg b/public/icons/basil/Outline/Files/Clipboard.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud-check.svg b/public/icons/basil/Outline/Files/Cloud-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud-download.svg b/public/icons/basil/Outline/Files/Cloud-download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud-off.svg b/public/icons/basil/Outline/Files/Cloud-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud-upload.svg b/public/icons/basil/Outline/Files/Cloud-upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Cloud.svg b/public/icons/basil/Outline/Files/Cloud.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Copy.svg b/public/icons/basil/Outline/Files/Copy.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Document.svg b/public/icons/basil/Outline/Files/Document.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Download.svg b/public/icons/basil/Outline/Files/Download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/File-download.svg b/public/icons/basil/Outline/Files/File-download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/File-upload.svg b/public/icons/basil/Outline/Files/File-upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/File-user.svg b/public/icons/basil/Outline/Files/File-user.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/File.svg b/public/icons/basil/Outline/Files/File.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-block.svg b/public/icons/basil/Outline/Files/Folder-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-delete.svg b/public/icons/basil/Outline/Files/Folder-delete.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-lock.svg b/public/icons/basil/Outline/Files/Folder-lock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-open.svg b/public/icons/basil/Outline/Files/Folder-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-plus.svg b/public/icons/basil/Outline/Files/Folder-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder-user.svg b/public/icons/basil/Outline/Files/Folder-user.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Folder.svg b/public/icons/basil/Outline/Files/Folder.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Image.svg b/public/icons/basil/Outline/Files/Image.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Invoice.svg b/public/icons/basil/Outline/Files/Invoice.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Picture.svg b/public/icons/basil/Outline/Files/Picture.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Files/Upload.svg b/public/icons/basil/Outline/Files/Upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Alarm.svg b/public/icons/basil/Outline/General/Alarm.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Bag.svg b/public/icons/basil/Outline/General/Bag.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Bank.svg b/public/icons/basil/Outline/General/Bank.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Box.svg b/public/icons/basil/Outline/General/Box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Calendar.svg b/public/icons/basil/Outline/General/Calendar.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Card.svg b/public/icons/basil/Outline/General/Card.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Chart-pie-alt.svg b/public/icons/basil/Outline/General/Chart-pie-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Chart-pie.svg b/public/icons/basil/Outline/General/Chart-pie.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Clock.svg b/public/icons/basil/Outline/General/Clock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Filter.svg b/public/icons/basil/Outline/General/Filter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Flask-alt.svg b/public/icons/basil/Outline/General/Flask-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Flask.svg b/public/icons/basil/Outline/General/Flask.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Home.svg b/public/icons/basil/Outline/General/Home.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Medkit.svg b/public/icons/basil/Outline/General/Medkit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Moon.svg b/public/icons/basil/Outline/General/Moon.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Palette.svg b/public/icons/basil/Outline/General/Palette.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Pulse.svg b/public/icons/basil/Outline/General/Pulse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Shopping-bag.svg b/public/icons/basil/Outline/General/Shopping-bag.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Shopping-basket.svg b/public/icons/basil/Outline/General/Shopping-basket.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Shopping-cart.svg b/public/icons/basil/Outline/General/Shopping-cart.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Sun.svg b/public/icons/basil/Outline/General/Sun.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Timer.svg b/public/icons/basil/Outline/General/Timer.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Umbrella.svg b/public/icons/basil/Outline/General/Umbrella.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/General/Wallet.svg b/public/icons/basil/Outline/General/Wallet.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Add.svg b/public/icons/basil/Outline/Interface/Add.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Apps.svg b/public/icons/basil/Outline/Interface/Apps.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Arrow down.svg b/public/icons/basil/Outline/Interface/Arrow down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Arrow left.svg b/public/icons/basil/Outline/Interface/Arrow left.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Arrow right.svg b/public/icons/basil/Outline/Interface/Arrow right.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Arrow up.svg b/public/icons/basil/Outline/Interface/Arrow up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/At-sign.svg b/public/icons/basil/Outline/Interface/At-sign.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Attach.svg b/public/icons/basil/Outline/Interface/Attach.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Backspace.svg b/public/icons/basil/Outline/Interface/Backspace.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Bluetooth.svg b/public/icons/basil/Outline/Interface/Bluetooth.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Cancel.svg b/public/icons/basil/Outline/Interface/Cancel.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Caret down.svg b/public/icons/basil/Outline/Interface/Caret down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Caret left.svg b/public/icons/basil/Outline/Interface/Caret left.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Caret right.svg b/public/icons/basil/Outline/Interface/Caret right.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Caret up.svg b/public/icons/basil/Outline/Interface/Caret up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Check.svg b/public/icons/basil/Outline/Interface/Check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Collapse.svg b/public/icons/basil/Outline/Interface/Collapse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Columns.svg b/public/icons/basil/Outline/Interface/Columns.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Cross.svg b/public/icons/basil/Outline/Interface/Cross.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Cursor.svg b/public/icons/basil/Outline/Interface/Cursor.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Edit-alt.svg b/public/icons/basil/Outline/Interface/Edit-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Edit.svg b/public/icons/basil/Outline/Interface/Edit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Exchange.svg b/public/icons/basil/Outline/Interface/Exchange.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Expand.svg b/public/icons/basil/Outline/Interface/Expand.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/History.svg b/public/icons/basil/Outline/Interface/History.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Hotspot.svg b/public/icons/basil/Outline/Interface/Hotspot.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Layout.svg b/public/icons/basil/Outline/Interface/Layout.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Login.svg b/public/icons/basil/Outline/Interface/Login.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Logout.svg b/public/icons/basil/Outline/Interface/Logout.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Menu.svg b/public/icons/basil/Outline/Interface/Menu.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Move.svg b/public/icons/basil/Outline/Interface/Move.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Other 1.svg b/public/icons/basil/Outline/Interface/Other 1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Other 2.svg b/public/icons/basil/Outline/Interface/Other 2.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Plus.svg b/public/icons/basil/Outline/Interface/Plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Refresh.svg b/public/icons/basil/Outline/Interface/Refresh.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Rows.svg b/public/icons/basil/Outline/Interface/Rows.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Save.svg b/public/icons/basil/Outline/Interface/Save.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Search.svg b/public/icons/basil/Outline/Interface/Search.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Settings-adjust.svg b/public/icons/basil/Outline/Interface/Settings-adjust.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Settings-alt.svg b/public/icons/basil/Outline/Interface/Settings-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Settings.svg b/public/icons/basil/Outline/Interface/Settings.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Sort.svg b/public/icons/basil/Outline/Interface/Sort.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Stack.svg b/public/icons/basil/Outline/Interface/Stack.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Trash-alt.svg b/public/icons/basil/Outline/Interface/Trash-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Trash.svg b/public/icons/basil/Outline/Interface/Trash.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Zoom-in.svg b/public/icons/basil/Outline/Interface/Zoom-in.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Interface/Zoom-out.svg b/public/icons/basil/Outline/Interface/Zoom-out.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Fast-forward.svg b/public/icons/basil/Outline/Media/Fast-forward.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Fast-rewind.svg b/public/icons/basil/Outline/Media/Fast-rewind.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Headphone.svg b/public/icons/basil/Outline/Media/Headphone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Headset.svg b/public/icons/basil/Outline/Media/Headset.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Microphone-off.svg b/public/icons/basil/Outline/Media/Microphone-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Microphone.svg b/public/icons/basil/Outline/Media/Microphone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Music.svg b/public/icons/basil/Outline/Media/Music.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Pause.svg b/public/icons/basil/Outline/Media/Pause.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Play.svg b/public/icons/basil/Outline/Media/Play.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Shuffle.svg b/public/icons/basil/Outline/Media/Shuffle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Skip-next.svg b/public/icons/basil/Outline/Media/Skip-next.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Skip-prev.svg b/public/icons/basil/Outline/Media/Skip-prev.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Volume-down.svg b/public/icons/basil/Outline/Media/Volume-down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Volume-off.svg b/public/icons/basil/Outline/Media/Volume-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Media/Volume-up.svg b/public/icons/basil/Outline/Media/Volume-up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Current-location.svg b/public/icons/basil/Outline/Navigation/Current-location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Explore.svg b/public/icons/basil/Outline/Navigation/Explore.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Globe.svg b/public/icons/basil/Outline/Navigation/Globe.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Location-check.svg b/public/icons/basil/Outline/Navigation/Location-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Location-plus.svg b/public/icons/basil/Outline/Navigation/Location-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Location-question.svg b/public/icons/basil/Outline/Navigation/Location-question.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Location.svg b/public/icons/basil/Outline/Navigation/Location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Map-location.svg b/public/icons/basil/Outline/Navigation/Map-location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Navigation/Navigation.svg b/public/icons/basil/Outline/Navigation/Navigation.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Award.svg b/public/icons/basil/Outline/Status/Award.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Book-open.svg b/public/icons/basil/Outline/Status/Book-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Bookmark.svg b/public/icons/basil/Outline/Status/Bookmark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Checked-box.svg b/public/icons/basil/Outline/Status/Checked-box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Diamond.svg b/public/icons/basil/Outline/Status/Diamond.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Eye-closed.svg b/public/icons/basil/Outline/Status/Eye-closed.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Eye.svg b/public/icons/basil/Outline/Status/Eye.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Fire.svg b/public/icons/basil/Outline/Status/Fire.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Heart-off.svg b/public/icons/basil/Outline/Status/Heart-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Heart-plus.svg b/public/icons/basil/Outline/Status/Heart-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Heart.svg b/public/icons/basil/Outline/Status/Heart.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Heartbeat.svg b/public/icons/basil/Outline/Status/Heartbeat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Info-circle.svg b/public/icons/basil/Outline/Status/Info-circle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Info-rect.svg b/public/icons/basil/Outline/Status/Info-rect.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Info-triangle.svg b/public/icons/basil/Outline/Status/Info-triangle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Key.svg b/public/icons/basil/Outline/Status/Key.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightbulb-alt.svg b/public/icons/basil/Outline/Status/Lightbulb-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightbulb-off.svg b/public/icons/basil/Outline/Status/Lightbulb-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightbulb.svg b/public/icons/basil/Outline/Status/Lightbulb.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightning-alt.svg b/public/icons/basil/Outline/Status/Lightning-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lightning.svg b/public/icons/basil/Outline/Status/Lightning.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lock-time.svg b/public/icons/basil/Outline/Status/Lock-time.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Lock.svg b/public/icons/basil/Outline/Status/Lock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Notification-off.svg b/public/icons/basil/Outline/Status/Notification-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Notification-on.svg b/public/icons/basil/Outline/Status/Notification-on.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Notification.svg b/public/icons/basil/Outline/Status/Notification.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Pin.svg b/public/icons/basil/Outline/Status/Pin.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Power-button.svg b/public/icons/basil/Outline/Status/Power-button.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Present.svg b/public/icons/basil/Outline/Status/Present.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Sand-watch.svg b/public/icons/basil/Outline/Status/Sand-watch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Shield.svg b/public/icons/basil/Outline/Status/Shield.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Star-half.svg b/public/icons/basil/Outline/Status/Star-half.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Star.svg b/public/icons/basil/Outline/Status/Star.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Toggle-off.svg b/public/icons/basil/Outline/Status/Toggle-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Toggle-on.svg b/public/icons/basil/Outline/Status/Toggle-on.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/University.svg b/public/icons/basil/Outline/Status/University.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Outline/Status/Unlock.svg b/public/icons/basil/Outline/Status/Unlock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-After-effects.svg b/public/icons/basil/Solid/Brands/Adobe-After-effects.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Experince-design.svg b/public/icons/basil/Solid/Brands/Adobe-Experince-design.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Illustrator.svg b/public/icons/basil/Solid/Brands/Adobe-Illustrator.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Indesign-1.svg b/public/icons/basil/Solid/Brands/Adobe-Indesign-1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Indesign.svg b/public/icons/basil/Solid/Brands/Adobe-Indesign.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Lightroom.svg b/public/icons/basil/Solid/Brands/Adobe-Lightroom.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Photoshop.svg b/public/icons/basil/Solid/Brands/Adobe-Photoshop.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Adobe-Premiere.svg b/public/icons/basil/Solid/Brands/Adobe-Premiere.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Android.svg b/public/icons/basil/Solid/Brands/Android.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/App-store.svg b/public/icons/basil/Solid/Brands/App-store.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Apple.svg b/public/icons/basil/Solid/Brands/Apple.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Asana.svg b/public/icons/basil/Solid/Brands/Asana.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Behance.svg b/public/icons/basil/Solid/Brands/Behance.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Chrome.svg b/public/icons/basil/Solid/Brands/Chrome.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Dribbble.svg b/public/icons/basil/Solid/Brands/Dribbble.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Dropbox.svg b/public/icons/basil/Solid/Brands/Dropbox.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Facebook-messenger.svg b/public/icons/basil/Solid/Brands/Facebook-messenger.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Facebook.svg b/public/icons/basil/Solid/Brands/Facebook.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Figma.svg b/public/icons/basil/Solid/Brands/Figma.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Gmail.svg b/public/icons/basil/Solid/Brands/Gmail.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Google-alt.svg b/public/icons/basil/Solid/Brands/Google-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Google-drive.svg b/public/icons/basil/Solid/Brands/Google-drive.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Google-play.svg b/public/icons/basil/Solid/Brands/Google-play.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Google.svg b/public/icons/basil/Solid/Brands/Google.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Instagram.svg b/public/icons/basil/Solid/Brands/Instagram.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Linkedin.svg b/public/icons/basil/Solid/Brands/Linkedin.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Medium.svg b/public/icons/basil/Solid/Brands/Medium.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Notion.svg b/public/icons/basil/Solid/Brands/Notion.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Pinterest.svg b/public/icons/basil/Solid/Brands/Pinterest.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/QQ.svg b/public/icons/basil/Solid/Brands/QQ.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Reddit.svg b/public/icons/basil/Solid/Brands/Reddit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Sketch.svg b/public/icons/basil/Solid/Brands/Sketch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Skype.svg b/public/icons/basil/Solid/Brands/Skype.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Slack.svg b/public/icons/basil/Solid/Brands/Slack.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Snapchat.svg b/public/icons/basil/Solid/Brands/Snapchat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Telegram.svg b/public/icons/basil/Solid/Brands/Telegram.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Trello.svg b/public/icons/basil/Solid/Brands/Trello.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Tumblr.svg b/public/icons/basil/Solid/Brands/Tumblr.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Twitch.svg b/public/icons/basil/Solid/Brands/Twitch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Twitter.svg b/public/icons/basil/Solid/Brands/Twitter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Viber.svg b/public/icons/basil/Solid/Brands/Viber.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Vk.svg b/public/icons/basil/Solid/Brands/Vk.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Wechat.svg b/public/icons/basil/Solid/Brands/Wechat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Whatsapp.svg b/public/icons/basil/Solid/Brands/Whatsapp.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Windows.svg b/public/icons/basil/Solid/Brands/Windows.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Brands/Youtube.svg b/public/icons/basil/Solid/Brands/Youtube.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Bullhorn.svg b/public/icons/basil/Solid/Communication/Bullhorn.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Chat.svg b/public/icons/basil/Solid/Communication/Chat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Comment-block.svg b/public/icons/basil/Solid/Communication/Comment-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Comment-minus.svg b/public/icons/basil/Solid/Communication/Comment-minus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Comment-plus.svg b/public/icons/basil/Solid/Communication/Comment-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Comment.svg b/public/icons/basil/Solid/Communication/Comment.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Contacts.svg b/public/icons/basil/Solid/Communication/Contacts.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Dislike.svg b/public/icons/basil/Solid/Communication/Dislike.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Envelope-open.svg b/public/icons/basil/Solid/Communication/Envelope-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Envelope.svg b/public/icons/basil/Solid/Communication/Envelope.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Forward.svg b/public/icons/basil/Solid/Communication/Forward.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Like.svg b/public/icons/basil/Solid/Communication/Like.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone-in.svg b/public/icons/basil/Solid/Communication/Phone-in.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone-miss.svg b/public/icons/basil/Solid/Communication/Phone-miss.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone-off.svg b/public/icons/basil/Solid/Communication/Phone-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone-out.svg b/public/icons/basil/Solid/Communication/Phone-out.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Phone.svg b/public/icons/basil/Solid/Communication/Phone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Reply.svg b/public/icons/basil/Solid/Communication/Reply.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Send.svg b/public/icons/basil/Solid/Communication/Send.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Share-box.svg b/public/icons/basil/Solid/Communication/Share-box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/Share.svg b/public/icons/basil/Solid/Communication/Share.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/User-block.svg b/public/icons/basil/Solid/Communication/User-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/User-clock.svg b/public/icons/basil/Solid/Communication/User-clock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/User-plus.svg b/public/icons/basil/Solid/Communication/User-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Communication/User.svg b/public/icons/basil/Solid/Communication/User.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-full-1.svg b/public/icons/basil/Solid/Devices/Battery-full-1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-full.svg b/public/icons/basil/Solid/Devices/Battery-full.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-low.svg b/public/icons/basil/Solid/Devices/Battery-low.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-most.svg b/public/icons/basil/Solid/Devices/Battery-most.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battery-quarter.svg b/public/icons/basil/Solid/Devices/Battery-quarter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Battry-half.svg b/public/icons/basil/Solid/Devices/Battry-half.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Binocular.svg b/public/icons/basil/Solid/Devices/Binocular.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Camera.svg b/public/icons/basil/Solid/Devices/Camera.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Desktop.svg b/public/icons/basil/Solid/Devices/Desktop.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Dialpad.svg b/public/icons/basil/Solid/Devices/Dialpad.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Gamepad.svg b/public/icons/basil/Solid/Devices/Gamepad.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Mobile-phone.svg b/public/icons/basil/Solid/Devices/Mobile-phone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Mouse-alt.svg b/public/icons/basil/Solid/Devices/Mouse-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Mouse.svg b/public/icons/basil/Solid/Devices/Mouse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Printer.svg b/public/icons/basil/Solid/Devices/Printer.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Processor.svg b/public/icons/basil/Solid/Devices/Processor.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Server.svg b/public/icons/basil/Solid/Devices/Server.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Video.svg b/public/icons/basil/Solid/Devices/Video.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Devices/Watch.svg b/public/icons/basil/Solid/Devices/Watch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Book-check.svg b/public/icons/basil/Solid/Files/Book-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Book-mark.svg b/public/icons/basil/Solid/Files/Book-mark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Book.svg b/public/icons/basil/Solid/Files/Book.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Clipboard-alt.svg b/public/icons/basil/Solid/Files/Clipboard-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Clipboard.svg b/public/icons/basil/Solid/Files/Clipboard.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud-check.svg b/public/icons/basil/Solid/Files/Cloud-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud-download.svg b/public/icons/basil/Solid/Files/Cloud-download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud-off.svg b/public/icons/basil/Solid/Files/Cloud-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud-upload.svg b/public/icons/basil/Solid/Files/Cloud-upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Cloud.svg b/public/icons/basil/Solid/Files/Cloud.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Copy.svg b/public/icons/basil/Solid/Files/Copy.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Document.svg b/public/icons/basil/Solid/Files/Document.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Download.svg b/public/icons/basil/Solid/Files/Download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/File-download.svg b/public/icons/basil/Solid/Files/File-download.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/File-upload.svg b/public/icons/basil/Solid/Files/File-upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/File-user.svg b/public/icons/basil/Solid/Files/File-user.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/File.svg b/public/icons/basil/Solid/Files/File.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-block.svg b/public/icons/basil/Solid/Files/Folder-block.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-delete.svg b/public/icons/basil/Solid/Files/Folder-delete.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-lock.svg b/public/icons/basil/Solid/Files/Folder-lock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-open.svg b/public/icons/basil/Solid/Files/Folder-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-plus.svg b/public/icons/basil/Solid/Files/Folder-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder-user.svg b/public/icons/basil/Solid/Files/Folder-user.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Folder.svg b/public/icons/basil/Solid/Files/Folder.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Image.svg b/public/icons/basil/Solid/Files/Image.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Invoice.svg b/public/icons/basil/Solid/Files/Invoice.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Picture.svg b/public/icons/basil/Solid/Files/Picture.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Files/Upload.svg b/public/icons/basil/Solid/Files/Upload.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Alarm.svg b/public/icons/basil/Solid/General/Alarm.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Bag.svg b/public/icons/basil/Solid/General/Bag.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Bank.svg b/public/icons/basil/Solid/General/Bank.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Box.svg b/public/icons/basil/Solid/General/Box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Calendar.svg b/public/icons/basil/Solid/General/Calendar.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Card.svg b/public/icons/basil/Solid/General/Card.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Chart-pie-alt.svg b/public/icons/basil/Solid/General/Chart-pie-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Chart-pie.svg b/public/icons/basil/Solid/General/Chart-pie.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Clock.svg b/public/icons/basil/Solid/General/Clock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Filter.svg b/public/icons/basil/Solid/General/Filter.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Flask-alt.svg b/public/icons/basil/Solid/General/Flask-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Flask.svg b/public/icons/basil/Solid/General/Flask.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Home.svg b/public/icons/basil/Solid/General/Home.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Medkit.svg b/public/icons/basil/Solid/General/Medkit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Moon.svg b/public/icons/basil/Solid/General/Moon.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Palette.svg b/public/icons/basil/Solid/General/Palette.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Pulse.svg b/public/icons/basil/Solid/General/Pulse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Shopping-bag.svg b/public/icons/basil/Solid/General/Shopping-bag.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Shopping-basket.svg b/public/icons/basil/Solid/General/Shopping-basket.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Shopping-cart.svg b/public/icons/basil/Solid/General/Shopping-cart.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Sun.svg b/public/icons/basil/Solid/General/Sun.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Timer.svg b/public/icons/basil/Solid/General/Timer.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Umbrella.svg b/public/icons/basil/Solid/General/Umbrella.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/General/Wallet.svg b/public/icons/basil/Solid/General/Wallet.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Add.svg b/public/icons/basil/Solid/Interface/Add.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Apps.svg b/public/icons/basil/Solid/Interface/Apps.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Arrow down.svg b/public/icons/basil/Solid/Interface/Arrow down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Arrow left.svg b/public/icons/basil/Solid/Interface/Arrow left.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Arrow right.svg b/public/icons/basil/Solid/Interface/Arrow right.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Arrow up.svg b/public/icons/basil/Solid/Interface/Arrow up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/At-sign.svg b/public/icons/basil/Solid/Interface/At-sign.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Attach.svg b/public/icons/basil/Solid/Interface/Attach.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Backspace.svg b/public/icons/basil/Solid/Interface/Backspace.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Bluetooth.svg b/public/icons/basil/Solid/Interface/Bluetooth.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Cancel.svg b/public/icons/basil/Solid/Interface/Cancel.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Caret down.svg b/public/icons/basil/Solid/Interface/Caret down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Caret left.svg b/public/icons/basil/Solid/Interface/Caret left.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Caret right.svg b/public/icons/basil/Solid/Interface/Caret right.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Caret up.svg b/public/icons/basil/Solid/Interface/Caret up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Check.svg b/public/icons/basil/Solid/Interface/Check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Collapse.svg b/public/icons/basil/Solid/Interface/Collapse.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Columns.svg b/public/icons/basil/Solid/Interface/Columns.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Cross.svg b/public/icons/basil/Solid/Interface/Cross.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Cursor.svg b/public/icons/basil/Solid/Interface/Cursor.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Edit-alt.svg b/public/icons/basil/Solid/Interface/Edit-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Edit.svg b/public/icons/basil/Solid/Interface/Edit.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Exchange.svg b/public/icons/basil/Solid/Interface/Exchange.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Expand.svg b/public/icons/basil/Solid/Interface/Expand.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/History.svg b/public/icons/basil/Solid/Interface/History.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Hotspot.svg b/public/icons/basil/Solid/Interface/Hotspot.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Layout.svg b/public/icons/basil/Solid/Interface/Layout.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Login.svg b/public/icons/basil/Solid/Interface/Login.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Logout.svg b/public/icons/basil/Solid/Interface/Logout.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Menu.svg b/public/icons/basil/Solid/Interface/Menu.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Move.svg b/public/icons/basil/Solid/Interface/Move.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Other 1.svg b/public/icons/basil/Solid/Interface/Other 1.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Other 2.svg b/public/icons/basil/Solid/Interface/Other 2.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Plus.svg b/public/icons/basil/Solid/Interface/Plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Refresh.svg b/public/icons/basil/Solid/Interface/Refresh.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Rows.svg b/public/icons/basil/Solid/Interface/Rows.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Save.svg b/public/icons/basil/Solid/Interface/Save.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Search.svg b/public/icons/basil/Solid/Interface/Search.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Settings-adjust.svg b/public/icons/basil/Solid/Interface/Settings-adjust.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Settings-alt.svg b/public/icons/basil/Solid/Interface/Settings-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Settings.svg b/public/icons/basil/Solid/Interface/Settings.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Sort.svg b/public/icons/basil/Solid/Interface/Sort.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Stack.svg b/public/icons/basil/Solid/Interface/Stack.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Trash-alt.svg b/public/icons/basil/Solid/Interface/Trash-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Trash.svg b/public/icons/basil/Solid/Interface/Trash.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Zoom-in.svg b/public/icons/basil/Solid/Interface/Zoom-in.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Interface/Zoom-out.svg b/public/icons/basil/Solid/Interface/Zoom-out.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Fast-forward.svg b/public/icons/basil/Solid/Media/Fast-forward.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Fast-rewind.svg b/public/icons/basil/Solid/Media/Fast-rewind.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Headphone.svg b/public/icons/basil/Solid/Media/Headphone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Headset.svg b/public/icons/basil/Solid/Media/Headset.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Microphone-off.svg b/public/icons/basil/Solid/Media/Microphone-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Microphone.svg b/public/icons/basil/Solid/Media/Microphone.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Music.svg b/public/icons/basil/Solid/Media/Music.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Pause.svg b/public/icons/basil/Solid/Media/Pause.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Play.svg b/public/icons/basil/Solid/Media/Play.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Shuffle.svg b/public/icons/basil/Solid/Media/Shuffle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Skip-next.svg b/public/icons/basil/Solid/Media/Skip-next.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Skip-prev.svg b/public/icons/basil/Solid/Media/Skip-prev.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Volume-down.svg b/public/icons/basil/Solid/Media/Volume-down.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Volume-off.svg b/public/icons/basil/Solid/Media/Volume-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Media/Volume-up.svg b/public/icons/basil/Solid/Media/Volume-up.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Current-location.svg b/public/icons/basil/Solid/Navigation/Current-location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Explore.svg b/public/icons/basil/Solid/Navigation/Explore.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Globe.svg b/public/icons/basil/Solid/Navigation/Globe.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Location-check.svg b/public/icons/basil/Solid/Navigation/Location-check.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Location-plus.svg b/public/icons/basil/Solid/Navigation/Location-plus.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Location-question.svg b/public/icons/basil/Solid/Navigation/Location-question.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Location.svg b/public/icons/basil/Solid/Navigation/Location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Map-location.svg b/public/icons/basil/Solid/Navigation/Map-location.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Navigation/Navigation.svg b/public/icons/basil/Solid/Navigation/Navigation.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Award.svg b/public/icons/basil/Solid/Status/Award.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Book-open.svg b/public/icons/basil/Solid/Status/Book-open.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Bookmark.svg b/public/icons/basil/Solid/Status/Bookmark.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Checked-box.svg b/public/icons/basil/Solid/Status/Checked-box.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Diamond.svg b/public/icons/basil/Solid/Status/Diamond.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Eye-closed.svg b/public/icons/basil/Solid/Status/Eye-closed.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Eye.svg b/public/icons/basil/Solid/Status/Eye.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Fire.svg b/public/icons/basil/Solid/Status/Fire.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Group 23.svg b/public/icons/basil/Solid/Status/Group 23.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Heart-off.svg b/public/icons/basil/Solid/Status/Heart-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Heart.svg b/public/icons/basil/Solid/Status/Heart.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Heartbeat.svg b/public/icons/basil/Solid/Status/Heartbeat.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Info-circle.svg b/public/icons/basil/Solid/Status/Info-circle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Info-rect.svg b/public/icons/basil/Solid/Status/Info-rect.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Info-triangle.svg b/public/icons/basil/Solid/Status/Info-triangle.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Key.svg b/public/icons/basil/Solid/Status/Key.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightbulb-alt.svg b/public/icons/basil/Solid/Status/Lightbulb-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightbulb-off.svg b/public/icons/basil/Solid/Status/Lightbulb-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightbulb.svg b/public/icons/basil/Solid/Status/Lightbulb.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightning-alt.svg b/public/icons/basil/Solid/Status/Lightning-alt.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lightning.svg b/public/icons/basil/Solid/Status/Lightning.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lock-time.svg b/public/icons/basil/Solid/Status/Lock-time.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Lock.svg b/public/icons/basil/Solid/Status/Lock.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Notification-off.svg b/public/icons/basil/Solid/Status/Notification-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Notification-on.svg b/public/icons/basil/Solid/Status/Notification-on.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Notification.svg b/public/icons/basil/Solid/Status/Notification.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Pin.svg b/public/icons/basil/Solid/Status/Pin.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Power-button.svg b/public/icons/basil/Solid/Status/Power-button.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Present.svg b/public/icons/basil/Solid/Status/Present.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Sand-watch.svg b/public/icons/basil/Solid/Status/Sand-watch.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Shield.svg b/public/icons/basil/Solid/Status/Shield.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Star-half.svg b/public/icons/basil/Solid/Status/Star-half.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Star.svg b/public/icons/basil/Solid/Status/Star.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Toggle-off.svg b/public/icons/basil/Solid/Status/Toggle-off.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Toggle-on.svg b/public/icons/basil/Solid/Status/Toggle-on.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/University.svg b/public/icons/basil/Solid/Status/University.svg old mode 100644 new mode 100755 diff --git a/public/icons/basil/Solid/Status/Unlock.svg b/public/icons/basil/Solid/Status/Unlock.svg old mode 100644 new mode 100755 diff --git a/public/icons/circle-info-solid.svg b/public/icons/circle-info-solid.svg old mode 100644 new mode 100755 diff --git a/public/icons/crossreference.svg b/public/icons/crossreference.svg old mode 100644 new mode 100755 diff --git a/public/icons/door43.svg b/public/icons/door43.svg old mode 100644 new mode 100755 diff --git a/public/icons/expand_more.svg b/public/icons/expand_more.svg old mode 100644 new mode 100755 diff --git a/public/icons/file.svg b/public/icons/file.svg old mode 100644 new mode 100755 diff --git a/public/icons/filter.svg b/public/icons/filter.svg old mode 100644 new mode 100755 diff --git a/public/icons/font.svg b/public/icons/font.svg old mode 100644 new mode 100755 diff --git a/public/icons/footnotes.svg b/public/icons/footnotes.svg old mode 100644 new mode 100755 diff --git a/public/icons/logo.svg b/public/icons/logo.svg old mode 100644 new mode 100755 diff --git a/public/icons/new.svg b/public/icons/new.svg old mode 100644 new mode 100755 diff --git a/public/icons/projects.svg b/public/icons/projects.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/2Column.svg b/public/icons/sectionIcons/2Column.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/4Column.svg b/public/icons/sectionIcons/4Column.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/NotesOnly [not used yet].svg b/public/icons/sectionIcons/NotesOnly [not used yet].svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/bcv.svg b/public/icons/sectionIcons/bcv.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/biblePlusNotes.svg b/public/icons/sectionIcons/biblePlusNotes.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/bookNote.svg b/public/icons/sectionIcons/bookNote.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/jxlSimple.svg b/public/icons/sectionIcons/jxlSimple.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/jxlSpread.svg b/public/icons/sectionIcons/jxlSpread.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/markdown.svg b/public/icons/sectionIcons/markdown.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/obs.svg b/public/icons/sectionIcons/obs.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/obsPlusNotes.svg b/public/icons/sectionIcons/obsPlusNotes.svg old mode 100644 new mode 100755 diff --git a/public/icons/sectionIcons/paraBible.svg b/public/icons/sectionIcons/paraBible.svg old mode 100644 new mode 100755 diff --git a/public/icons/sundesmos/alignHelp.png b/public/icons/sundesmos/alignHelp.png old mode 100644 new mode 100755 diff --git a/public/icons/sundesmos/check_circleTrue.svg b/public/icons/sundesmos/check_circleTrue.svg old mode 100644 new mode 100755 diff --git a/public/icons/sundesmos/check_circleWrong.svg b/public/icons/sundesmos/check_circleWrong.svg old mode 100644 new mode 100755 diff --git a/public/icons/sync.svg b/public/icons/sync.svg old mode 100644 new mode 100755 diff --git a/public/icons/trash.svg b/public/icons/trash.svg old mode 100644 new mode 100755 diff --git a/public/icons/waveform.svg b/public/icons/waveform.svg old mode 100644 new mode 100755 diff --git a/public/icons/x-solid.svg b/public/icons/x-solid.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/bible-icon.svg b/public/illustrations/bible-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/close-button-black.svg b/public/illustrations/close-button-black.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/dialogue-icon.svg b/public/illustrations/dialogue-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/dictionary-icon.svg b/public/illustrations/dictionary-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/down-arrow.svg b/public/illustrations/down-arrow.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/greenCheck.png b/public/illustrations/greenCheck.png old mode 100644 new mode 100755 diff --git a/public/illustrations/group.svg b/public/illustrations/group.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/half-moon.svg b/public/illustrations/half-moon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/image-icon.svg b/public/illustrations/image-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/location-icon.svg b/public/illustrations/location-icon.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/minimize.svg b/public/illustrations/minimize.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/quote.svg b/public/illustrations/quote.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/sitting.png b/public/illustrations/sitting.png old mode 100644 new mode 100755 diff --git a/public/illustrations/sitting.svg b/public/illustrations/sitting.svg old mode 100644 new mode 100755 diff --git a/public/illustrations/standing.png b/public/illustrations/standing.png old mode 100644 new mode 100755 diff --git a/public/illustrations/vector-one.svg b/public/illustrations/vector-one.svg old mode 100644 new mode 100755 diff --git a/public/scribex/bcs-hi_irv.tit.usfm b/public/scribex/bcs-hi_irv.tit.usfm old mode 100644 new mode 100755 diff --git a/public/scribex/bcs-hi_irv.usfm b/public/scribex/bcs-hi_irv.usfm old mode 100644 new mode 100755 diff --git a/public/scribex/unfoldingWord-en_ult.psa-bak.usfm b/public/scribex/unfoldingWord-en_ult.psa-bak.usfm old mode 100644 new mode 100755 diff --git a/public/scribex/unfoldingWord-en_ult.psa-short.usfm b/public/scribex/unfoldingWord-en_ult.psa-short.usfm old mode 100644 new mode 100755 diff --git a/public/scribex/unfoldingWord-en_ult.psa.usfm b/public/scribex/unfoldingWord-en_ult.psa.usfm old mode 100644 new mode 100755 diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index d5a577fd..711008e1 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -21,7 +21,7 @@ import packageInfo from '../../../../package.json'; import * as logger from '../../logger'; export function findProjectInfo(meta, autoGrapha) { - return autoGrapha?.filter((a) => `${a.name }_${ a.id}` === meta)[0]; + return autoGrapha?.filter((a) => `${a.name}_${a.id}` === meta)[0]; } const fixPath = (source) => { @@ -78,16 +78,16 @@ function messageToPeople(json) { message += '\t'; } if (json.type === 'step') { - message += `Starting step ${ json.args[0]}`; + message += `Starting step ${json.args[0]}`; } else if (json.type === 'section') { - message += `Starting to prepare ${ json.args[0]}`; + message += `Starting to prepare ${json.args[0]}`; } else if (json.type === 'wrappedSection') { message += `Preparing section of type ${json.args[0]} from ${json.args[1].split('-')[0]}`; if (json.args[1].split('-')[1]) { - message += ` to ${ json.args[1].split('-')[1]}`; + message += ` to ${json.args[1].split('-')[1]}`; } } else if (json.type === 'pdf') { - message += `Writing pdf of ${ json.args[1]}`; + message += `Writing pdf of ${json.args[1]}`; } else { findProjectInfo(); message += json.msg; @@ -264,7 +264,7 @@ export default function InnerFramePopup() { const [messagePrint, setMessagePrint] = useState(''); // the actual kitchenFaucet const pdfCallBacks = (json) => { - setMessagePrint((prev) => `${prev }\n${ messageToPeople(json)}`); + setMessagePrint((prev) => `${prev}\n${messageToPeople(json)}`); }; const { states: { selectedProject }, @@ -401,7 +401,7 @@ export default function InnerFramePopup() { setListResourcesForPdf(pickerJson); return currentUser; }) - .then((currentUser) => readLocalResources(currentUser, () => {})); + .then((currentUser) => readLocalResources(currentUser, () => { })); }, []); useEffect(() => { @@ -432,7 +432,7 @@ export default function InnerFramePopup() { const path = window.require('path'); setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = path.join(`${folder }`, `${ generate({ exactly: 5, wordsPerString: 1 }).join('-') }.pdf`); + data.outputPath = path.join(`${folder}`, `${generate({ exactly: 5, wordsPerString: 1 }).join('-')}.pdf`); data.verbose = false; return JSON.stringify(data); }); @@ -475,14 +475,14 @@ export default function InnerFramePopup() { if (folder && nameFile === '') { setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = path.join(`${folder }`, `${ generate({ exactly: 5, wordsPerString: 1 }).join('-') }.pdf`); + data.outputPath = path.join(`${folder}`, `${generate({ exactly: 5, wordsPerString: 1 }).join('-')}.pdf`); data.verbose = false; return JSON.stringify(data); }); } else if (folder && nameFile !== '') { setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = path.join(`${folder }`, `${ nameFile }.pdf`); + data.outputPath = path.join(`${folder}`, `${nameFile}.pdf`); data.verbose = false; return JSON.stringify(data); }); @@ -494,7 +494,7 @@ export default function InnerFramePopup() { const path = window.require('path'); setHeaderInfo((prev) => { const data = { ...JSON.parse(prev) }; - data.outputPath = path.join(`${folder }`, `${ nameFile }.pdf`); + data.outputPath = path.join(`${folder}`, `${nameFile}.pdf`); data.verbose = false; return JSON.stringify(data); }); @@ -819,21 +819,55 @@ export default function InnerFramePopup() { } } onClick={async () => { + const executablePath = await global.ipcRenderer.invoke('get-browser-path'); + let browser; if (jsonValidation.length === 0) { + try { + browser = await global.puppeteer.launch({ + headless: 'new', + args: [ + '--disable-web-security', + '--no-sandbox', + '--disable-setuid-sandbox', + ], + ignoreDefaultArgs: ['--disable-extensions'], + executablePath, + }); + } catch (err) { + console.log('Puppeteer falling back to no-sandbox'); + browser = await global.puppeteer.launch({ + headless: 'new', + args: [ + '--disable-web-security', + '--no-sandbox', + '--disable-setuid-sandbox', + ], + ignoreDefaultArgs: ['--disable-extensions'], + executablePath, + }); + } setMessagePrint(''); - const pdfGen = new global.PdfGenStatic( - JSON.parse(kitchenFaucet), - pdfCallBacks, - ); setMessagePrint('Generating Pdf ...'); try { - const browser = await ipcRenderer.invoke('instanciate-brower-puppeteer'); + // setMessagePrint((prev) => `${prev }\nInstanciating browser ... `); + // let browser = await global.puppeteer.connect({ + // // browserURL: 'http://localhost:8000', + // browserWSEndpoint: wsEndpoint, + // // defaultViewport: null + // }); + console.log('browser ok! : browser.version()', await browser.version()); + // const browser = await ipcRenderer.invoke('instanciate-browserpie'); + setMessagePrint((prev) => `${prev}\nInstanciating pdfGen`); + const pdfGen = new global.PdfGenStatic( + { ...JSON.parse(kitchenFaucet), browser }, + pdfCallBacks, + ); await pdfGen.doPdf(); } catch (pdfError) { - setMessagePrint((prev) => `${prev }\nPDF generation failed: ${ pdfError.message}`); + setMessagePrint((prev) => `${prev}\nPDF generation failed: ${pdfError.message}`); return; } - setMessagePrint((prev) => `${prev }\nSuccessful pdf generation.`); + setMessagePrint((prev) => `${prev}\nSuccessful pdf generation.`); } else { const cleanerMessage = jsonValidation.map( (txt) => { diff --git a/styles/globals.css b/styles/globals.css old mode 100644 new mode 100755 diff --git a/styles/loader.css b/styles/loader.css old mode 100644 new mode 100755 diff --git a/styles/nprogress.css b/styles/nprogress.css old mode 100644 new mode 100755 diff --git a/styles/scribe-logo.png b/styles/scribe-logo.png old mode 100644 new mode 100755 diff --git a/styles/scribe.icns b/styles/scribe.icns old mode 100644 new mode 100755 diff --git a/styles/style-override.lazy.css b/styles/style-override.lazy.css old mode 100644 new mode 100755 diff --git a/supabase.js b/supabase.js old mode 100644 new mode 100755 diff --git a/testconfig/setupTests.js b/testconfig/setupTests.js old mode 100644 new mode 100755 diff --git a/useStyles.js b/useStyles.js old mode 100644 new mode 100755 diff --git a/yarn.lock b/yarn.lock old mode 100644 new mode 100755 index 40820cf3..9050bac9 --- a/yarn.lock +++ b/yarn.lock @@ -3569,7 +3569,7 @@ unbzip2-stream "1.4.3" yargs "17.7.2" -"@puppeteer/browsers@2.4.0": +"@puppeteer/browsers@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.4.0.tgz#a0dd0f4e381e53f509109ae83b891db5972750f5" integrity sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g== @@ -4328,13 +4328,6 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/async-retry@^1.4.1": - version "1.4.8" - resolved "https://registry.yarnpkg.com/@types/async-retry/-/async-retry-1.4.8.tgz#eb32df13aceb9ba1a8a80e7fe518ff4e3fe46bb3" - integrity sha512-Qup/B5PWLe86yI5I3av6ePGaeQrIHNKCwbsQotD6aHQ6YkHsMUxVZkZsmx/Ry3VZQ6uysHwTjQ7666+k6UjVJA== - dependencies: - "@types/retry" "*" - "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" @@ -4598,14 +4591,6 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== -"@types/node-fetch@^2.5.4": - version "2.6.11" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" - integrity sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== - dependencies: - "@types/node" "*" - form-data "^4.0.0" - "@types/node-forge@^1.3.0": version "1.3.11" resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" @@ -4631,9 +4616,9 @@ integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== "@types/node@^16.11.26": - version "16.18.108" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.108.tgz#b794e2b2a85b4c12935ea7d0f18641be68b352f9" - integrity sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A== + version "16.18.112" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.112.tgz#efd468e4edd08404eed23b6aed6c2f35edfa9450" + integrity sha512-EKrbKUGJROm17+dY/gMi31aJlGLJ75e1IkTojt9n6u+hnaTBDs+M1bIdOawpk2m6YUAXq/R2W0SxCng1tndHCg== "@types/node@^20.8.2": version "20.16.5" @@ -4675,20 +4660,6 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== -"@types/puppeteer-core@^1.9.0": - version "1.20.0" - resolved "https://registry.yarnpkg.com/@types/puppeteer-core/-/puppeteer-core-1.20.0.tgz#ddae91d1faa3e47dce5e08c08bcf3a01e99ef54b" - integrity sha512-oYsusroRxCydDjKlO9sG41xFFa+PlJr0ZTvCzA97z02PXS9Q3YxyEHvHruUdPZgAxaqwoe96kh66Ni1+fKzuPw== - dependencies: - "@types/puppeteer" "^1" - -"@types/puppeteer@^1": - version "1.20.10" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-1.20.10.tgz#dfb83a8775e22fbe81eeeeeb9ada69c1e6bad3d6" - integrity sha512-3tlzJ9+z8rMvBDzHPv4Q4LCgBwDRvuoMxThkr+BqcbbNjsBkL/enFf6m+MDJke7vJT4i22ojB8yb3UpibiuBWg== - dependencies: - "@types/node" "*" - "@types/q@^1.5.1": version "1.5.8" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.8.tgz#95f6c6a08f2ad868ba230ead1d2d7f7be3db3837" @@ -4783,11 +4754,6 @@ dependencies: "@types/node" "*" -"@types/retry@*": - version "0.12.5" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.5.tgz#f090ff4bd8d2e5b940ff270ab39fd5ca1834a07e" - integrity sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw== - "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -4871,11 +4837,6 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== -"@types/uuid@^3.4.6": - version "3.4.13" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.13.tgz#fe890e517fb840620be284ee213e81d702b1f76b" - integrity sha512-pAeZeUbLE4Z9Vi9wsWV2bYPTweEHeJJy0G4pEjOA/FSvy1Ad5U5Km8iDV6TKre1mjBiVNfAdVHKruP8bAh4Q5A== - "@types/verror@^1.10.3": version "1.10.10" resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.10.tgz#d5a4b56abac169bfbc8b23d291363a682e6fa087" @@ -5926,13 +5887,6 @@ async-mutex@^0.4.0: dependencies: tslib "^2.4.0" -async-retry@^1.3.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - async@^3.2.3, async@^3.2.4: version "3.2.6" resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" @@ -7255,15 +7209,6 @@ chromium-bidi@0.5.8: mitt "3.0.1" urlpattern-polyfill "10.0.0" -chromium-bidi@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.6.5.tgz#31be98f9ee5c93fa99d240c680518c9293d8c6bb" - integrity sha512-RuLrmzYrxSb0s9SgpB+QN5jJucPduZQ/9SIe76MDxYJuecPW5mxMdacJ1f4EtgiV+R0p3sCkznTMvH0MPGFqjA== - dependencies: - mitt "3.0.1" - urlpattern-polyfill "10.0.0" - zod "3.23.8" - chromium-pickle-js@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" @@ -7879,16 +7824,6 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" - integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== - dependencies: - env-paths "^2.2.1" - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" @@ -8432,7 +8367,7 @@ debug@2.6.9, debug@2.X, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6, debug@^4.3.7: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6: version "4.3.7" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== @@ -8762,11 +8697,6 @@ devtools-protocol@0.0.1232444: resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1232444.tgz#406345a90a871ba852c530d73482275234936eed" integrity sha512-pM27vqEfxSxRkTMnF+XCmxSEb6duO5R+t8A9DEEJgy4Wz2RVanje2mmj99B6A3zv2r/qGfYlOvYznUhuokizmg== -devtools-protocol@0.0.1342118: - version "0.0.1342118" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1342118.tgz#ea136fc1701572c0830233dcb414dc857e582e0a" - integrity sha512-75fMas7PkYNDTmDyb6PRJCH7ILmHLp+BhrZGeMsa4bCh40DTxgCz2NRy5UDzII4C5KuD0oBMZ9vXKhEl6UD/3w== - dezalgo@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" @@ -9248,10 +9178,10 @@ electron-updater@^5.0.1: semver "^7.3.5" typed-emitter "^2.1.0" -electron@21.0.1: - version "21.0.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-21.0.1.tgz#753669454a86a89fd70ba9614c79f789fb177c34" - integrity sha512-jLVSLakd0fO2GPnW4xXQrI93R464jeFb2ISngqRP3wpwH96XqeANkuAYLAr9TVhfQMCIWnuPROBZ+NU7nuk0WA== +electron@^21.0.1: + version "21.4.4" + resolved "https://registry.yarnpkg.com/electron/-/electron-21.4.4.tgz#46f24eae1ff99416312f4dfecf64b021524bb8e2" + integrity sha512-N5O7y7Gtt7mDgkJLkW49ETiT8M3myZ9tNIEvGTKhpBduX4WdgMj6c3hYeYBD6XW7SvbRkWEQaTl25RNday8Xpw== dependencies: "@electron/get" "^1.14.1" "@types/node" "^16.11.26" @@ -9380,7 +9310,7 @@ entities@^4.2.0, entities@^4.4.0, entities@^4.5.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -env-paths@^2.2.0, env-paths@^2.2.1: +env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== @@ -10948,11 +10878,6 @@ get-port-please@^3.1.2: resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.2.tgz#502795e56217128e4183025c89a48c71652f4e49" integrity sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ== -get-port@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -12020,7 +11945,7 @@ immer@^9.0.6, immer@^9.0.7: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== -import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: +import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -14381,10 +14306,10 @@ just-diff@^5.0.1: resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241" integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== -jxl-pdf@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/jxl-pdf/-/jxl-pdf-0.7.0.tgz#25b344859318d9d4ec70f7e36c1614a609b26d7b" - integrity sha512-FLGGCplCbeWfc0ledqYoJMgI4Y8WbvLGprV0HvOSpLkEr3XODtLLU7tFF7kT/NJ/OIcjc/kfV/TON7qm8a99Vg== +jxl-pdf@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/jxl-pdf/-/jxl-pdf-0.8.0.tgz#a85409d6028c06f0b0657c39f8c6ec3875e83f07" + integrity sha512-L8DtNv9N+Y3lS6vk0EUbKq+iayvxGBgS0BVuSi7JIHpMRUKBU3aKC25OpRG/kMORiUrZmjreJlDGXtHFmA4cRQ== dependencies: commander "^11.1.0" fontkit "^2.0.2" @@ -14396,7 +14321,6 @@ jxl-pdf@0.7.0: pdf-lib "^1.17.1" proskomma-core "^0.10.9" proskomma-json-tools "^0.8.20" - puppeteer "^21.6.1" text-diff "^1.0.1" keycode@^2.2.0: @@ -18675,7 +18599,7 @@ punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -puppeteer-core@21.11.0: +puppeteer-core@^21.6.1: version "21.11.0" resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-21.11.0.tgz#6c60ec350f1a3a2152179c68166da6edfce18a23" integrity sha512-ArbnyA3U5SGHokEvkfWjW+O8hOxV1RSJxOgriX/3A4xZRqixt9ZFHD0yPgZQF05Qj0oAqi8H/7stDorjoHY90Q== @@ -18687,40 +18611,6 @@ puppeteer-core@21.11.0: devtools-protocol "0.0.1232444" ws "8.16.0" -puppeteer-core@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-23.4.1.tgz#c1c0367b7f48645119b65b08889b0690ea00cc1f" - integrity sha512-uCxGtn8VE9PlKhdFJX/zZySi9K3Ufr3qUZe28jxJoZUqiMJOi+SFh2zhiFDSjWqZIDkc0FtnaCC+rewW3MYXmg== - dependencies: - "@puppeteer/browsers" "2.4.0" - chromium-bidi "0.6.5" - debug "^4.3.7" - devtools-protocol "0.0.1342118" - typed-query-selector "^2.12.0" - ws "^8.18.0" - -puppeteer-in-electron@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/puppeteer-in-electron/-/puppeteer-in-electron-3.0.5.tgz#52b493d9376d233fa9d20062334b3ac3736f3380" - integrity sha512-GjuPRMweteeBST9aXcFagAEiaIeQYKZaWX/4QBnMqRBQ4bEXPJkFd5p8oc6ovPbe1eriVHef2D2gr/Gv+3HTpQ== - dependencies: - "@types/async-retry" "^1.4.1" - "@types/node-fetch" "^2.5.4" - "@types/puppeteer-core" "^1.9.0" - "@types/uuid" "^3.4.6" - async-retry "^1.3.1" - get-port "^5.1.1" - uuid "^8.3.2" - -puppeteer@^21.6.1: - version "21.11.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-21.11.0.tgz#46e64067b742b0e17a3b8dc668bc437f45cdd9f1" - integrity sha512-9jTHuYe22TD3sNxy0nEIzC7ZrlRnDgeX3xPkbS7PnbdwYjl2o/z/YuCrRBwezdKpbTDTJ4VqIggzNyeRcKq3cg== - dependencies: - "@puppeteer/browsers" "1.9.1" - cosmiconfig "9.0.0" - puppeteer-core "21.11.0" - pure-uuid@^1.6.2, pure-uuid@^1.6.3: version "1.8.1" resolved "https://registry.yarnpkg.com/pure-uuid/-/pure-uuid-1.8.1.tgz#8470eb8e8ec3613af835367b68463314bc966962" @@ -19911,16 +19801,16 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@0.13.1, retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -22164,11 +22054,6 @@ typed-emitter@^2.1.0: optionalDependencies: rxjs "^7.5.2" -typed-query-selector@^2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/typed-query-selector/-/typed-query-selector-2.12.0.tgz#92b65dbc0a42655fccf4aeb1a08b1dddce8af5f2" - integrity sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg== - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -23948,11 +23833,6 @@ zip-stream@^4.1.0: compress-commons "^4.1.2" readable-stream "^3.6.0" -zod@3.23.8: - version "3.23.8" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" - integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== - zwitch@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" From 5ea11016fc3335968b50e2768f80d67f797d5ec7 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Tue, 1 Oct 2024 12:55:26 +0200 Subject: [PATCH 21/27] installed graceful-fs and removed useless files and updated github action --- .expo/README.md | 15 --------------- .expo/settings.json | 8 -------- .github/workflows/node.js.yml | 3 +++ .gitignore | 1 + e2e-tests/base.test.ts | 2 +- main/index.js | 2 +- next.config.js | 12 ++++++++++++ package.json | 2 ++ .../EditorPage/AudioEditor/AudioEditor.js | 2 +- .../EditorPage/AudioEditor/MainPlayer.js | 8 ++++---- .../EditorPage/Reference/Audio/ReferenceAudio.js | 2 +- .../components/EditorPage/Reference/OBS/ObsTn.js | 2 +- .../EditorPage/Reference/TA/TaNavigation.js | 2 +- .../EditorPage/Reference/TW/TwNavigation.js | 4 ++-- .../EditorPage/Reference/TranslationHelpsCard.js | 2 +- .../EditorPage/UsfmEditor/UsfmEditor.js | 2 +- renderer/src/components/Login/LeftLogin.js | 2 +- .../ProjectManagement/utils/readProjectScope.js | 6 +++--- .../ProjectManagement/utils/updateBurritoScope.js | 2 +- renderer/src/components/Projects/ImportPopUp.js | 2 +- .../components/Projects/hooks/useEditProject.js | 2 +- .../CreateProject/AdvancedSettingsDropdown.js | 2 +- .../checkandDownloadObsImages.js | 2 +- .../src/components/Resources/ImportResource.js | 4 ++-- .../ResourceUtils/DownloadCreateSBforHelps.js | 2 +- .../Resources/ResourceUtils/RemoveResource.js | 2 +- .../ResourceUtils/createDownloadedResourceSB.js | 6 +++--- .../components/Resources/useReadLocalResources.js | 2 +- .../Sync/Gitea/EditorSync/EditorSyncUtils.js | 2 +- .../Sync/Gitea/ProjectMerge/ProjectMergeUtils.js | 6 +++--- .../components/Sync/Gitea/SyncFromGiteaUtils.js | 2 +- .../src/components/Sync/Scribe/SyncToGitea.js | 2 +- .../components/Sync/Scribe/SyncToGiteaUtils.js | 4 ++-- renderer/src/components/context/ProjectContext.js | 4 ++-- renderer/src/core/Login/handleJson.js | 2 +- renderer/src/core/Login/handleLogin.js | 2 +- renderer/src/core/Login/removeUser.js | 2 +- renderer/src/core/burrito/importBurrito.js | 6 +++--- renderer/src/core/burrito/updateObsSB.js | 2 +- renderer/src/core/burrito/updateTranslationSB.js | 2 +- renderer/src/core/editor/readFile.js | 2 +- renderer/src/core/editor/writeToFile.js | 2 +- renderer/src/core/export/exportHTML.js | 4 ++-- .../src/core/projects/existProjectInBackEnd.js | 2 +- renderer/src/core/projects/fetchProjectsMeta.js | 2 +- renderer/src/core/projects/handleProfile.js | 4 ++-- renderer/src/core/projects/metaFileReplace.js | 2 +- renderer/src/core/projects/saveProjectFiles.js | 2 +- renderer/src/core/projects/saveProjetcsMeta.js | 2 +- renderer/src/core/projects/updateAgSettings.js | 2 +- renderer/src/core/projects/userSettings.js | 8 ++++---- .../src/core/reference/readCustomResources.js | 2 +- renderer/src/core/reference/readIngredients.js | 2 +- renderer/src/core/reference/readRefBurrito.js | 2 +- renderer/src/core/reference/readRefMeta.js | 2 +- renderer/src/core/reference/readmanifest.js | 2 +- .../src/core/reference/writeCustomResources.js | 2 +- renderer/src/layouts/editor/InnerFramePopup.js | 4 ++-- renderer/src/layouts/editor/SectionContainer.js | 2 +- .../src/layouts/editor/SectionPlaceholder1.js | 4 ++-- .../src/layouts/editor/SectionPlaceholder2.js | 4 ++-- renderer/src/layouts/editor/SubMenuBar.js | 2 +- .../layouts/editor/pdfGenInterface/PdfPreview.js | 2 +- .../layouts/projects/Export/ExportProjectPopUp.js | 2 +- .../projects/Import/ConflictResolverUI.jsx | 2 +- .../src/layouts/projects/Import/mergeObsUtils.js | 8 ++++---- .../src/layouts/projects/Import/mergeProject.js | 2 +- .../src/layouts/projects/ImportProjectPopUp.js | 4 ++-- .../src/modules/projects/hooks/useEditProject.js | 2 +- renderer/src/util/createAudioVersification.js | 2 +- renderer/src/util/createJuxtaContent.js | 2 +- renderer/src/util/createObsContent.js | 8 ++++---- renderer/src/util/createVersificationUSFM.js | 6 +++--- 73 files changed, 117 insertions(+), 122 deletions(-) delete mode 100755 .expo/README.md delete mode 100755 .expo/settings.json diff --git a/.expo/README.md b/.expo/README.md deleted file mode 100755 index fd146b4d..00000000 --- a/.expo/README.md +++ /dev/null @@ -1,15 +0,0 @@ -> Why do I have a folder named ".expo" in my project? - -The ".expo" folder is created when an Expo project is started using "expo start" command. - -> What do the files contain? - -- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds. -- "packager-info.json": contains port numbers and process PIDs that are used to serve the application to the mobile device/simulator. -- "settings.json": contains the server configuration that is used to serve the application manifest. - -> Should I commit the ".expo" folder? - -No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine. - -Upon project creation, the ".expo" folder is already added to your ".gitignore" file. diff --git a/.expo/settings.json b/.expo/settings.json deleted file mode 100755 index 92bc513b..00000000 --- a/.expo/settings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "hostType": "lan", - "lanType": "ip", - "dev": true, - "minify": false, - "urlRandomness": null, - "https": false -} diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index dc6a5b1a..b41922b9 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -76,6 +76,9 @@ jobs: - name: install dependencies run: yarn install + - name: increase max file opened + run: ulimit -n 1048576 + - name: install wine run: | sudo dpkg --add-architecture i386 diff --git a/.gitignore b/.gitignore index 8cbe4b69..a0f60804 100755 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /.pnp .pnp.js bower_components +/.expo # next-on-netlify build output out_functions/ diff --git a/e2e-tests/base.test.ts b/e2e-tests/base.test.ts index 9d122cea..a97a7fad 100755 --- a/e2e-tests/base.test.ts +++ b/e2e-tests/base.test.ts @@ -14,7 +14,7 @@ import { createUser, projectPageExpect } from './common'; -const fs = require('fs'); +const fs = require('graceful-fs'); const path = require('path'); const { _electron: electron } = require('@playwright/test'); diff --git a/main/index.js b/main/index.js index 985fba8a..adda0474 100755 --- a/main/index.js +++ b/main/index.js @@ -1,7 +1,7 @@ // Native require('@electron/remote/main').initialize(); const path = require('path'); -const fs = require('fs').promises; +const fs = require('graceful-fs').promises; const { format } = require('url'); const { install } = require('@puppeteer/browsers'); const config = require("dotenv"); diff --git a/next.config.js b/next.config.js index c3dcde20..874faae7 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,7 @@ // const nodeExternals = require('webpack-node-externals'); const path = require('path'); const colors = require('tailwindcss/colors'); +const TerserPlugin = require("terser-webpack-plugin"); const nextConfig = { webpack: (config, { isServer }) => { @@ -9,6 +10,17 @@ const nextConfig = { config.resolve.fallback.fs = false; config.resolve.alias.canvas = false; } + + config.optimization = { + ...config.optimization, + minimize: true, + minimizer: [ + new TerserPlugin({ + parallel: 1, + }), + ], + }; + config.module.rules.push({ test: /\.md$/, use: 'raw-loader', diff --git a/package.json b/package.json index c6a16423..13bb5163 100644 --- a/package.json +++ b/package.json @@ -180,6 +180,7 @@ "fs-extra": "^10.1.0", "get-system-fonts": "^2.0.2", "gitea-react-toolkit": "2.1.2", + "graceful-fs": "^4.2.11", "history": "^5.3.0", "i18next": "^21.8.9", "ionicons": "^7.1.2", @@ -224,6 +225,7 @@ "react-scripts": "5.0.1", "styled-components": "^5.3.6", "tc-ui-toolkit": "5.3.3", + "terser-webpack-plugin": "^5.3.10", "tls": "^0.0.1", "translation-helps-rcl": "3.5.12", "typescript": "^4.9.5", diff --git a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js index cc61639f..2a1031a8 100644 --- a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js +++ b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js @@ -69,7 +69,7 @@ const AudioEditor = ({ editor }) => { // Checking whether the selected book and chapter is in the scope or not if (key === bookId.toUpperCase() && _data.type.flavorType.currentScope[key].includes(chapter)) { _books.push(bookId.toUpperCase()); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); let bookContent = []; const exists = fs.existsSync(path.join(projectsDir, 'text-1', 'ingredients', `${bookId.toUpperCase()}.usfm`)); diff --git a/renderer/src/components/EditorPage/AudioEditor/MainPlayer.js b/renderer/src/components/EditorPage/AudioEditor/MainPlayer.js index 88e5f115..0afe86d7 100644 --- a/renderer/src/components/EditorPage/AudioEditor/MainPlayer.js +++ b/renderer/src/components/EditorPage/AudioEditor/MainPlayer.js @@ -57,7 +57,7 @@ const MainPlayer = () => { const loadChapter = async () => { if (audioCurrentChapter) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); // Fetching the Audios const chapters = await fs.readdirSync(path.join(audioCurrentChapter.filePath, audioCurrentChapter.chapterNum)); @@ -101,7 +101,7 @@ const MainPlayer = () => { // Setting up the default audio from the takes const changeDefault = (value) => { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); let i = 1; // Checking whether the take has any audio @@ -126,7 +126,7 @@ const MainPlayer = () => { .then(({ projectsDir, path, }) => { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const result = take.replace(/take/g, ''); // Fetching the mp3 files const folderName = fs.readdirSync(path.join(projectsDir, 'audio', 'ingredients', bookId.toUpperCase(), chapter)); @@ -178,7 +178,7 @@ const MainPlayer = () => { const handleFunction = () => { // We have used trigger to identify whether the call is from DeleteAudio or Re-record if (trigger === 'delete') { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const result = take.replace(/take/g, ''); let versePosition; diff --git a/renderer/src/components/EditorPage/Reference/Audio/ReferenceAudio.js b/renderer/src/components/EditorPage/Reference/Audio/ReferenceAudio.js index 59f5dd9a..42d5a69b 100644 --- a/renderer/src/components/EditorPage/Reference/Audio/ReferenceAudio.js +++ b/renderer/src/components/EditorPage/Reference/Audio/ReferenceAudio.js @@ -69,7 +69,7 @@ const ReferenceAudio = ({ setIsLoading(true); setDisplayScreen(false); setBookData(); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); // Fetching the reference list diff --git a/renderer/src/components/EditorPage/Reference/OBS/ObsTn.js b/renderer/src/components/EditorPage/Reference/OBS/ObsTn.js index 4c91173d..04f68278 100644 --- a/renderer/src/components/EditorPage/Reference/OBS/ObsTn.js +++ b/renderer/src/components/EditorPage/Reference/OBS/ObsTn.js @@ -78,7 +78,7 @@ function ObsTnCard({ try { localForage.getItem('userProfile').then(async (user) => { logger.debug('OfflineResourceFetch.js', 'reading offline obs-tn ', offlineResource.data?.projectDir); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; diff --git a/renderer/src/components/EditorPage/Reference/TA/TaNavigation.js b/renderer/src/components/EditorPage/Reference/TA/TaNavigation.js index 203fe7c3..c588a7f3 100644 --- a/renderer/src/components/EditorPage/Reference/TA/TaNavigation.js +++ b/renderer/src/components/EditorPage/Reference/TA/TaNavigation.js @@ -64,7 +64,7 @@ export default function TaNavigation({ languageId, referenceResources }) { // console.log('offline data : ', { taList, offlineResource }); localForage.getItem('userProfile').then(async (user) => { logger.debug('TaNavigation.js', 'reading offline helps ', offlineResource.data?.projectDir); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; diff --git a/renderer/src/components/EditorPage/Reference/TW/TwNavigation.js b/renderer/src/components/EditorPage/Reference/TW/TwNavigation.js index 92eeaa31..e79b63cb 100644 --- a/renderer/src/components/EditorPage/Reference/TW/TwNavigation.js +++ b/renderer/src/components/EditorPage/Reference/TW/TwNavigation.js @@ -25,7 +25,7 @@ export default function TwNavigation({ languageId, referenceResources, setRefere if (referenceResources && referenceResources?.offlineResource?.offline) { const { offlineResource } = referenceResources; localForage.getItem('userProfile').then(async (user) => { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; @@ -97,7 +97,7 @@ export default function TwNavigation({ languageId, referenceResources, setRefere const taArrayOffline = []; const { offlineResource } = referenceResources; localForage.getItem('userProfile').then(async (user) => { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; diff --git a/renderer/src/components/EditorPage/Reference/TranslationHelpsCard.js b/renderer/src/components/EditorPage/Reference/TranslationHelpsCard.js index 465ea388..ca7c3760 100644 --- a/renderer/src/components/EditorPage/Reference/TranslationHelpsCard.js +++ b/renderer/src/components/EditorPage/Reference/TranslationHelpsCard.js @@ -75,7 +75,7 @@ export default function TranslationHelpsCard({ setOfflineItems(''); localForage.getItem('userProfile').then(async (user) => { logger.debug('TranslationHelpsCard.js', `reading offline helps ${offlineResource.data?.projectDir}`); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; diff --git a/renderer/src/components/EditorPage/UsfmEditor/UsfmEditor.js b/renderer/src/components/EditorPage/UsfmEditor/UsfmEditor.js index 580f27ba..376da6dd 100644 --- a/renderer/src/components/EditorPage/UsfmEditor/UsfmEditor.js +++ b/renderer/src/components/EditorPage/UsfmEditor/UsfmEditor.js @@ -347,7 +347,7 @@ const UsfmEditor = () => { const username = value?.username; localforage.getItem('currentProject').then((projectName) => { const path = require('path'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); const projectsDir = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName); const metaPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName, 'metadata.json'); diff --git a/renderer/src/components/Login/LeftLogin.js b/renderer/src/components/Login/LeftLogin.js index 6468d898..44e86130 100644 --- a/renderer/src/components/Login/LeftLogin.js +++ b/renderer/src/components/Login/LeftLogin.js @@ -97,7 +97,7 @@ const LeftLogin = () => { // router.push('/main'); // The below code is commented for UI dev purpose. if (handleValidation(values)) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); logger.debug( 'LeftLogin.js', 'Triggers handleLogin to check whether the user is existing or not', diff --git a/renderer/src/components/ProjectManagement/utils/readProjectScope.js b/renderer/src/components/ProjectManagement/utils/readProjectScope.js index d95c021d..8d704fd8 100644 --- a/renderer/src/components/ProjectManagement/utils/readProjectScope.js +++ b/renderer/src/components/ProjectManagement/utils/readProjectScope.js @@ -14,8 +14,8 @@ const getDirectories = (readdirSync, source) => readdirSync(source, { withFileTy export const getScope = async (project) => { const path = require('path'); const scope = {}; - const { readdirSync } = window.require('fs'); - const fs = window.require('fs'); + const { readdirSync } = window.require('graceful-fs'); + const fs = window.require('graceful-fs'); const list = getDirectories(readdirSync, project); list.forEach(async (book) => { @@ -43,7 +43,7 @@ export const readProjectScope = async (projectName) => { logger.debug('readProjectScope.js', `In read metadata - ${projectName}`); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); diff --git a/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js b/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js index a3379979..4e45bcef 100644 --- a/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js +++ b/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js @@ -7,7 +7,7 @@ export const updateBurritoScope = async (projectName, metadata) => { logger.debug('updateBurritoScope.js', `In update metadata - ${projectName}`); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); // Finally updating the scope in the metadata diff --git a/renderer/src/components/Projects/ImportPopUp.js b/renderer/src/components/Projects/ImportPopUp.js index d11e5821..d9c8b41d 100644 --- a/renderer/src/components/Projects/ImportPopUp.js +++ b/renderer/src/components/Projects/ImportPopUp.js @@ -111,7 +111,7 @@ export default function ImportPopUp(props) { const importFiles = (folderPath) => { logger.debug('ImportPopUp.js', 'Inside importFiles'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const files = []; const bookCodeList = []; folderPath.forEach((filePath) => { diff --git a/renderer/src/components/Projects/hooks/useEditProject.js b/renderer/src/components/Projects/hooks/useEditProject.js index c2bd4631..3f5d71c6 100644 --- a/renderer/src/components/Projects/hooks/useEditProject.js +++ b/renderer/src/components/Projects/hooks/useEditProject.js @@ -26,7 +26,7 @@ const useEditProject = () => { const userProfile = await localforage.getItem('userProfile'); if (isElectron()) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); folder = path.join(newpath, packageInfo.name, 'users', userProfile.username, 'projects', `${project.name}_${project.id[0]}`); data = fs.readFileSync(path.join(folder, 'metadata.json'), 'utf-8'); diff --git a/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js b/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js index be75e50f..3c48094e 100644 --- a/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js +++ b/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js @@ -92,7 +92,7 @@ export default function AdvancedSettingsDropdown({ call, project, projectType }) if (isElectron()) { let title = licenceTitle; let myLicence = {}; - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if ((title === 'Custom' || !title) && !selectNew) { myLicence.title = 'Custom'; myLicence.locked = false; diff --git a/renderer/src/components/Resources/DownloadObsImages/checkandDownloadObsImages.js b/renderer/src/components/Resources/DownloadObsImages/checkandDownloadObsImages.js index 743752ff..bcfb7b85 100644 --- a/renderer/src/components/Resources/DownloadObsImages/checkandDownloadObsImages.js +++ b/renderer/src/components/Resources/DownloadObsImages/checkandDownloadObsImages.js @@ -48,7 +48,7 @@ export const checkandDownloadObsImages = async () => { // check for the folder and images // const imageCdnBaseUrl = 'https://cdn.door43.org/obs/jpg/360px/'; if (isElectron()) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const obsImagePath = path.join(newpath, packageInfo.name, 'common', environment.OBS_IMAGE_DIR); diff --git a/renderer/src/components/Resources/ImportResource.js b/renderer/src/components/Resources/ImportResource.js index 7a327ad3..d51ce8cc 100644 --- a/renderer/src/components/Resources/ImportResource.js +++ b/renderer/src/components/Resources/ImportResource.js @@ -53,7 +53,7 @@ export default function ImportResource({ }; const importReference = async (projectsDir, name, burritoType) => { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const fse = window.require('fs-extra'); const path = require('path'); let dirPath; @@ -84,7 +84,7 @@ export default function ImportResource({ setFolderPath(''); }; const uploadRefBible = async () => { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); try { const user = await localforage.getItem('userProfile'); diff --git a/renderer/src/components/Resources/ResourceUtils/DownloadCreateSBforHelps.js b/renderer/src/components/Resources/ResourceUtils/DownloadCreateSBforHelps.js index 46cb20cb..45fe24e7 100644 --- a/renderer/src/components/Resources/ResourceUtils/DownloadCreateSBforHelps.js +++ b/renderer/src/components/Resources/ResourceUtils/DownloadCreateSBforHelps.js @@ -18,7 +18,7 @@ const DownloadCreateSBforHelps = async (projectResource, setLoading, update = fa setLoading(true); await localForage.getItem('userProfile').then(async (user) => { logger.debug('DownloadCreateSBforHelps.js', 'In helps-resource download user fetch - ', user?.username); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const folder = path.join(newpath, packageInfo.name, 'users', `${user?.username}`, 'resources'); diff --git a/renderer/src/components/Resources/ResourceUtils/RemoveResource.js b/renderer/src/components/Resources/ResourceUtils/RemoveResource.js index 8a3609d6..68447f0f 100644 --- a/renderer/src/components/Resources/ResourceUtils/RemoveResource.js +++ b/renderer/src/components/Resources/ResourceUtils/RemoveResource.js @@ -118,7 +118,7 @@ function RemoveResource({ logger.warn('removeResource.js', 'inside removing resource call'); localForage.getItem('userProfile').then(async (user) => { logger.debug('DownloadResourcePopUp.js', 'In resource download user fetch - ', user?.username); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); const folder = path.join(newpath, packageInfo.name, 'users', `${user?.username}`, 'resources'); let resourceName = null; diff --git a/renderer/src/components/Resources/ResourceUtils/createDownloadedResourceSB.js b/renderer/src/components/Resources/ResourceUtils/createDownloadedResourceSB.js index e0467063..6db604f3 100644 --- a/renderer/src/components/Resources/ResourceUtils/createDownloadedResourceSB.js +++ b/renderer/src/components/Resources/ResourceUtils/createDownloadedResourceSB.js @@ -161,7 +161,7 @@ export const generateResourceIngredientsTextTransaltion = async (currentResource // generating ingredients content in metadata currentResourceMeta?.projects.forEach(async (project) => { logger.debug('createDownloadedResourceSB.js', 'In adding ingredients to burrito for TextTransaltion'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if (fs.existsSync(path.join(folder, currentResourceProject.name, project.path))) { const filecontent = await fs.readFileSync(path.join(folder, currentResourceProject.name, project.path), 'utf8'); // find checksum & size by reading the file @@ -184,7 +184,7 @@ export const generateResourceIngredientsTextTransaltion = async (currentResource export const generateResourceIngredientsOBS = async (currentResourceMeta, path, folder, currentResourceProject, resourceBurritoFile, files) => { logger.debug('createDownloadedResourceSB.js', 'In adding ingredients to burrito of OBS'); files.forEach(async (file) => { // en_obs/content/01.md, en_obs/content/front/title.md - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const endPart = file.split('/').pop(); const regX = /^\d{2}.md$/; if (regX.test(endPart) || ['intro.md', 'title.md'].indexOf(endPart) > -1) { @@ -272,7 +272,7 @@ export const handleDownloadResources = async (resourceData, selectResource, acti localForage.getItem('userProfile').then(async (user) => { logger.debug('createDownloadedResourceSB.js', 'In create downloaded resource SB user fetch - ', user?.username); const folder = path.join(newpath, packageInfo.name, 'users', `${user?.username}`, 'resources'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); let resourceBurritoFile = {}; let currentResourceMeta = ''; let currentResourceProject = ''; diff --git a/renderer/src/components/Resources/useReadLocalResources.js b/renderer/src/components/Resources/useReadLocalResources.js index 675603a7..04039cca 100644 --- a/renderer/src/components/Resources/useReadLocalResources.js +++ b/renderer/src/components/Resources/useReadLocalResources.js @@ -11,7 +11,7 @@ import { createDirectory, newPath } from '../../../../supabase'; export default async function readLocalResources(username, setSubMenuItems) { if (isElectron()) { const parseData = []; - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const projectsDir = path.join(newpath, packageInfo.name, 'users', username, 'resources');// Read user resources diff --git a/renderer/src/components/Sync/Gitea/EditorSync/EditorSyncUtils.js b/renderer/src/components/Sync/Gitea/EditorSync/EditorSyncUtils.js index 0e32b184..fe6ed03f 100644 --- a/renderer/src/components/Sync/Gitea/EditorSync/EditorSyncUtils.js +++ b/renderer/src/components/Sync/Gitea/EditorSync/EditorSyncUtils.js @@ -7,7 +7,7 @@ import { uploadToGitea } from '../../Scribe/SyncToGitea'; export async function getGiteaUsersList() { let usersList = []; const userData = await localForage.getItem('userProfile'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const file = path.join(newpath, packageInfo.name, 'users', userData?.username, environment.USER_SETTING_FILE); diff --git a/renderer/src/components/Sync/Gitea/ProjectMerge/ProjectMergeUtils.js b/renderer/src/components/Sync/Gitea/ProjectMerge/ProjectMergeUtils.js index 0865e092..fc2512eb 100644 --- a/renderer/src/components/Sync/Gitea/ProjectMerge/ProjectMergeUtils.js +++ b/renderer/src/components/Sync/Gitea/ProjectMerge/ProjectMergeUtils.js @@ -10,7 +10,7 @@ export const uploadProjectToBranchRepoExist = async (selectedGiteaProject, ignor repo, branch, metaDataSB, localUsername, auth, } = selectedGiteaProject; const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const projectId = Object.keys(metaDataSB.identification.primary.scribe)[0]; const projectName = metaDataSB.identification.name.en; @@ -73,7 +73,7 @@ export const backupLocalProject = async (selectedGiteaProject, actions) => { logger.debug('ProjectMErgeUtils.js', 'Stated Backing up the project', projectName); const newpath = localStorage.getItem('userPath'); const fse = window.require('fs-extra'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const projectsMetaPath = path.join(newpath, packageInfo.name, 'users', selectedGiteaProject?.localUsername, 'projects', `${projectName}_${projectId}`); const projectBackupPath = path.join(newpath, packageInfo.name, 'users', selectedGiteaProject?.localUsername, 'projects-backups'); @@ -92,7 +92,7 @@ export const backupLocalProject = async (selectedGiteaProject, actions) => { export const undoMergeOrDeleteOldBackup = async (selectedGiteaProject, backupName, SYNC_BACKUP_COUNT, undo = false) => { logger.debug('ProjectMErgeUtils.js', 'in undo merge or delete old backup'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const projectBackupPath = path.join(newpath, packageInfo.name, 'users', selectedGiteaProject?.localUsername, 'projects-backups'); // Sorted files in directory on creation date diff --git a/renderer/src/components/Sync/Gitea/SyncFromGiteaUtils.js b/renderer/src/components/Sync/Gitea/SyncFromGiteaUtils.js index 20841bfe..0d32b27f 100644 --- a/renderer/src/components/Sync/Gitea/SyncFromGiteaUtils.js +++ b/renderer/src/components/Sync/Gitea/SyncFromGiteaUtils.js @@ -188,7 +188,7 @@ export const cloneAndSetProject = async (fs, gitprojectDir, repo, userBranch, au export const importServerProject = async (updateBurrito, repo, sbData, auth, userBranch, action, currentUser, duplicate, setPullPopup, setPullData, t = undefined) => { try { logger.debug('SyncFromGiteaUtils.js', 'Inside Import Project core'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); const sbDataObject = { ...sbData }; const projectDir = path.join(newpath, packageInfo.name, 'users', currentUser, 'projects'); diff --git a/renderer/src/components/Sync/Scribe/SyncToGitea.js b/renderer/src/components/Sync/Scribe/SyncToGitea.js index 3acc70bd..83cd919e 100644 --- a/renderer/src/components/Sync/Scribe/SyncToGitea.js +++ b/renderer/src/components/Sync/Scribe/SyncToGitea.js @@ -18,7 +18,7 @@ export async function uploadToGitea(projectDataAg, auth, setSyncProgress, notify const localBranch = `${auth?.user?.username}/${packageInfo.name}`; await localForage.getItem('userProfile').then(async (user) => { const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const projectsMetaPath = path.join(newpath, packageInfo.name, 'users', user?.username, 'projects', `${projectName}_${projectId}`); // Create A REPO for the project diff --git a/renderer/src/components/Sync/Scribe/SyncToGiteaUtils.js b/renderer/src/components/Sync/Scribe/SyncToGiteaUtils.js index b7f65913..ba525d42 100644 --- a/renderer/src/components/Sync/Scribe/SyncToGiteaUtils.js +++ b/renderer/src/components/Sync/Scribe/SyncToGiteaUtils.js @@ -92,7 +92,7 @@ export const updateFiletoServer = async (fileContent, filePath, branch, repoName // sync profile updation export const createSyncProfile = async (auth) => { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); await localForage.getItem('userProfile').then(async (user) => { const currentUser = user?.username; @@ -165,7 +165,7 @@ export const getOrPutLastSyncInAgSettings = async (method, projectMeta, syncUser if (method === 'get' || method === 'put') { let currentUser = await localForage.getItem('userProfile'); currentUser = currentUser?.username; - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const id = Object.keys(projectMeta?.identification?.primary?.scribe); diff --git a/renderer/src/components/context/ProjectContext.js b/renderer/src/components/context/ProjectContext.js index 83d0d8ff..7540657e 100644 --- a/renderer/src/components/context/ProjectContext.js +++ b/renderer/src/components/context/ProjectContext.js @@ -181,7 +181,7 @@ const ProjectContextProvider = ({ children }) => { logger.error('ProjectContext.js', 'Unable to find current user'); return; } - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const file = path.join(newpath, packageInfo.name, 'users', currentUser, environment.USER_SETTING_FILE); if (fs.existsSync(file)) { const agUserSettings = await fs.readFileSync(file); @@ -279,7 +279,7 @@ const ProjectContextProvider = ({ children }) => { currentUser = value.username; setUsername(value.username); }); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const file = path.join(newpath, packageInfo.name, 'users', currentUser, environment.USER_SETTING_FILE); if (fs.existsSync(file)) { const agUserSettings = await fs.readFileSync(file); diff --git a/renderer/src/core/Login/handleJson.js b/renderer/src/core/Login/handleJson.js index 4eda99dd..d200d388 100644 --- a/renderer/src/core/Login/handleJson.js +++ b/renderer/src/core/Login/handleJson.js @@ -16,7 +16,7 @@ const uniqueUser = (users, username) => users.some((user) => user.username === u */ export const loadUsers = async () => { const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', 'users.json'); if (fs.existsSync(file)) { diff --git a/renderer/src/core/Login/handleLogin.js b/renderer/src/core/Login/handleLogin.js index 4e0071c6..445ad3ad 100644 --- a/renderer/src/core/Login/handleLogin.js +++ b/renderer/src/core/Login/handleLogin.js @@ -42,7 +42,7 @@ export const createWebUser = async (values) => { */ export const writeToFile = (users) => { const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', 'users.json'); fs.writeFileSync(file, JSON.stringify(users), (err) => { diff --git a/renderer/src/core/Login/removeUser.js b/renderer/src/core/Login/removeUser.js index 54de61b3..b8578069 100644 --- a/renderer/src/core/Login/removeUser.js +++ b/renderer/src/core/Login/removeUser.js @@ -3,7 +3,7 @@ import packageInfo from '../../../../package.json'; export const removeUser = async (userName) => { const newpath = await localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const folder = path.join(newpath, packageInfo.name, 'users', userName.toLowerCase()); const file = path.join(newpath, packageInfo.name, 'users', 'users.json'); diff --git a/renderer/src/core/burrito/importBurrito.js b/renderer/src/core/burrito/importBurrito.js index 6334a356..f30a1030 100644 --- a/renderer/src/core/burrito/importBurrito.js +++ b/renderer/src/core/burrito/importBurrito.js @@ -32,7 +32,7 @@ export const checkImportDuplicate = async (folderList, projectName, metadata, pr export const checkDuplicate = async (metadata, currentUser, resource) => { logger.debug('importBurrito.js', 'In checkDuplicate'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const projectName = metadata.identification?.name?.en; let existingProject; let id; @@ -82,7 +82,7 @@ export const checkDuplicate = async (metadata, currentUser, resource) => { }; export const viewBurrito = async (filePath, currentUser, resource) => { logger.debug('importBurrito.js', 'Inside viewBurrito'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const result = {}; if (fs.existsSync(path.join(filePath, 'metadata.json'))) { logger.debug('importBurrito.js', 'Project has Burrito file metadata.json.'); @@ -186,7 +186,7 @@ const checkTheProjectIsAudioChapterLevel = async (metadata) => { // Core Function Handle Burrito Import for all type of Projects const importBurrito = async (filePath, currentUser, updateBurritoVersion, concatedLangs = []) => { logger.debug('importBurrito.js', 'Inside importBurrito'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const fse = window.require('fs-extra'); const status = []; const newpath = localStorage.getItem('userPath'); diff --git a/renderer/src/core/burrito/updateObsSB.js b/renderer/src/core/burrito/updateObsSB.js index b66e8efc..91f44df4 100644 --- a/renderer/src/core/burrito/updateObsSB.js +++ b/renderer/src/core/burrito/updateObsSB.js @@ -32,7 +32,7 @@ const updateObsSB = async (username, project, updateBurrito) => new Promise((res logger.debug('updateObsSB.js', 'In updateObsSB for updating the burrito.'); const newpath = localStorage.getItem('userPath'); const folder = path.join(newpath, packageInfo.name, 'users', username, 'projects', `${project.name}_${project.id[0]}`); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const sb = fs.readFileSync(path.join(folder, 'metadata.json')); let metadata = JSON.parse(sb); // eslint-disable-next-line no-unused-vars diff --git a/renderer/src/core/burrito/updateTranslationSB.js b/renderer/src/core/burrito/updateTranslationSB.js index 20ba7608..db5e4ca8 100644 --- a/renderer/src/core/burrito/updateTranslationSB.js +++ b/renderer/src/core/burrito/updateTranslationSB.js @@ -35,7 +35,7 @@ const updateTranslationSB = async (username, project, updateBurrito) => new Prom logger.debug('updateTranslationSB.js', 'In updateTranslationSB for updating the burrito.'); const newpath = localStorage.getItem('userPath'); const folder = path.join(newpath, packageInfo.name, 'users', username, 'projects', `${project.name}_${project.id[0]}`); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const sb = fs.readFileSync(path.join(folder, 'metadata.json')); let metadata = JSON.parse(sb); // eslint-disable-next-line no-unused-vars diff --git a/renderer/src/core/editor/readFile.js b/renderer/src/core/editor/readFile.js index 2ada6d2d..20aa06a5 100644 --- a/renderer/src/core/editor/readFile.js +++ b/renderer/src/core/editor/readFile.js @@ -13,7 +13,7 @@ export const readFile = async ({ filename, }) => { if (isElectron()) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const projectsPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectname, filename); diff --git a/renderer/src/core/editor/writeToFile.js b/renderer/src/core/editor/writeToFile.js index a4a8066b..4f60e036 100644 --- a/renderer/src/core/editor/writeToFile.js +++ b/renderer/src/core/editor/writeToFile.js @@ -12,7 +12,7 @@ const writeToFile = async ({ data, }) => { if (isElectron()) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const projectsPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectname, filename); diff --git a/renderer/src/core/export/exportHTML.js b/renderer/src/core/export/exportHTML.js index b2689d18..c0ad4931 100644 --- a/renderer/src/core/export/exportHTML.js +++ b/renderer/src/core/export/exportHTML.js @@ -103,7 +103,7 @@ export const exportHTML = () => { new Date(), )}.html`, ); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); fs.writeFile(filepath, inlineData, (err) => { if (err) { logger.info('dynamic-msg-went-wrong', err); @@ -165,7 +165,7 @@ export const exportHTML = () => { new Date(), )}.html`, ); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); fs.writeFile(filepath, inlineData, (err) => { if (err) { logger.info('dynamic-msg-went-wrong', err); diff --git a/renderer/src/core/projects/existProjectInBackEnd.js b/renderer/src/core/projects/existProjectInBackEnd.js index 49daa4b4..e9a33d68 100644 --- a/renderer/src/core/projects/existProjectInBackEnd.js +++ b/renderer/src/core/projects/existProjectInBackEnd.js @@ -16,7 +16,7 @@ function isBackendProjectExist(ProjectDir) { localforage.getItem('userProfile').then(async (value) => { if (isElectron()) { const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if (value?.username) { const resourcePath = path.join(newpath, packageInfo.name, 'users', value.username, 'resources', ProjectDir); // check for path exist or not and resolve true or false will work for pane 1 now add for other panes diff --git a/renderer/src/core/projects/fetchProjectsMeta.js b/renderer/src/core/projects/fetchProjectsMeta.js index a8ad5618..df743b29 100644 --- a/renderer/src/core/projects/fetchProjectsMeta.js +++ b/renderer/src/core/projects/fetchProjectsMeta.js @@ -15,7 +15,7 @@ const fetchProjectsMeta = async ({ currentUser }) => { if (isElectron()) { logger.debug('fetchProjectsMeta.js', 'In fetchProjectsMeta'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const projectsMetaPath = path.join(newpath, packageInfo.name, 'users', currentUser, 'projects'); fs.mkdirSync(projectsMetaPath, { recursive: true }); diff --git a/renderer/src/core/projects/handleProfile.js b/renderer/src/core/projects/handleProfile.js index 054c280f..9472c92e 100644 --- a/renderer/src/core/projects/handleProfile.js +++ b/renderer/src/core/projects/handleProfile.js @@ -16,7 +16,7 @@ export const getorPutAppLangage = async (method, currentUser, appLang) => { if (isElectron()) { logger.error('handleProfile.js', 'In updateAppLang, for updating the App language Selection'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); let file; if (currentUser) { @@ -68,7 +68,7 @@ export const getorPutAppLangage = async (method, currentUser, appLang) => { const updateJson = async (userdata) => { logger.error('handleProfile.js', 'In UpdateJson, for updating the current user details'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', 'users.json'); const status = []; diff --git a/renderer/src/core/projects/metaFileReplace.js b/renderer/src/core/projects/metaFileReplace.js index 6978cc04..dd62f621 100644 --- a/renderer/src/core/projects/metaFileReplace.js +++ b/renderer/src/core/projects/metaFileReplace.js @@ -3,7 +3,7 @@ import packageInfo from '../../../../package.json'; const metaFileReplace = ({ userData }) => { const newpath = localStorage.getItem('userPath'); const status = []; - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const json = JSON.stringify(userData); const projectsMetaPath = path.join(newpath, packageInfo.name, 'users', 'username', 'projects', 'projects.json'); diff --git a/renderer/src/core/projects/saveProjectFiles.js b/renderer/src/core/projects/saveProjectFiles.js index 25423060..fdc244b8 100644 --- a/renderer/src/core/projects/saveProjectFiles.js +++ b/renderer/src/core/projects/saveProjectFiles.js @@ -6,7 +6,7 @@ const saveProjectsFiles = ({ filenames, }) => { const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); fs.mkdirSync(path.join(newpath, packageInfo.name, 'users', username, 'projects', projectname), { recursive: true, diff --git a/renderer/src/core/projects/saveProjetcsMeta.js b/renderer/src/core/projects/saveProjetcsMeta.js index bd308377..ad55534b 100644 --- a/renderer/src/core/projects/saveProjetcsMeta.js +++ b/renderer/src/core/projects/saveProjetcsMeta.js @@ -54,7 +54,7 @@ export const saveProjectsMeta = async (projectMetaObj) => { logger.debug('saveProjectsMeta.js', 'In saveProjectsMeta'); const newpath = localStorage.getItem('userPath'); const status = []; - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); let currentUser; await localforage.getItem('userProfile').then((value) => { diff --git a/renderer/src/core/projects/updateAgSettings.js b/renderer/src/core/projects/updateAgSettings.js index 60f4d597..d18b0697 100644 --- a/renderer/src/core/projects/updateAgSettings.js +++ b/renderer/src/core/projects/updateAgSettings.js @@ -15,7 +15,7 @@ import { export const updateAgSettings = async (username, projectName, data, font, fontSize = 1) => { logger.debug('updateAgSettings.js', 'In updateAgSettings'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const result = Object.keys(data.ingredients).filter((key) => key.includes(environment.PROJECT_SETTING_FILE)); const folder = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName, result[0]); diff --git a/renderer/src/core/projects/userSettings.js b/renderer/src/core/projects/userSettings.js index c994ba9a..01b12e83 100644 --- a/renderer/src/core/projects/userSettings.js +++ b/renderer/src/core/projects/userSettings.js @@ -8,7 +8,7 @@ export const readUserSettings = async () => { logger.debug('userSettings.js', 'In readUserSettings'); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, environment.USER_SETTING_FILE); @@ -32,7 +32,7 @@ export const readJsonFiles = async (fileType, dirName = 'ingredients') => { logger.debug('userSettings.js', 'In readSettings'); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); let filePath; @@ -72,7 +72,7 @@ export const saveJsonFiles = async (data, fileType, dirName = 'ingredients') => logger.debug('userSettings.js', 'In saveUserSettings'); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); let filePath; @@ -101,7 +101,7 @@ export const saveUserSettings = async (userSettingsJson) => { logger.debug('userSettings.js', 'In saveUserSettings'); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, environment.USER_SETTING_FILE); await fs.writeFileSync(file, JSON.stringify(userSettingsJson)); diff --git a/renderer/src/core/reference/readCustomResources.js b/renderer/src/core/reference/readCustomResources.js index b5a0a6f5..1a2a4715 100644 --- a/renderer/src/core/reference/readCustomResources.js +++ b/renderer/src/core/reference/readCustomResources.js @@ -14,7 +14,7 @@ export async function readCustomResources({ resourceId, translationData }) { // {id: 'tw', resourceType: "translationWords"}, // { id: 'obs-tq', resourceType: 'obsTranslationQuestions' }, ]; - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); const userProfile = await localforage.getItem('userProfile'); const currentUser = userProfile.username; diff --git a/renderer/src/core/reference/readIngredients.js b/renderer/src/core/reference/readIngredients.js index d0a1801a..d6826e84 100644 --- a/renderer/src/core/reference/readIngredients.js +++ b/renderer/src/core/reference/readIngredients.js @@ -4,7 +4,7 @@ export const readIngredients = async ({ filePath, }) => { logger.debug('readIngreadients.js', 'In readIngredients'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); return new Promise((resolve) => { if (fs.existsSync(filePath)) { diff --git a/renderer/src/core/reference/readRefBurrito.js b/renderer/src/core/reference/readRefBurrito.js index 73f56fe1..1f853c2a 100644 --- a/renderer/src/core/reference/readRefBurrito.js +++ b/renderer/src/core/reference/readRefBurrito.js @@ -8,7 +8,7 @@ export const readRefBurrito = async ({ }) => { if (isElectron()) { logger.debug('readRefBurrito.js', 'In readRefBurrito'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); return new Promise((resolve) => { if (fs.existsSync(metaPath)) { diff --git a/renderer/src/core/reference/readRefMeta.js b/renderer/src/core/reference/readRefMeta.js index 2c732266..e87a3834 100644 --- a/renderer/src/core/reference/readRefMeta.js +++ b/renderer/src/core/reference/readRefMeta.js @@ -8,7 +8,7 @@ export const readRefMeta = async ({ projectsDir, }) => { if (isElectron()) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const path = require('path'); return new Promise((resolve) => { if (fs.existsSync(projectsDir)) { diff --git a/renderer/src/core/reference/readmanifest.js b/renderer/src/core/reference/readmanifest.js index 36d44fd3..e8a28ed3 100644 --- a/renderer/src/core/reference/readmanifest.js +++ b/renderer/src/core/reference/readmanifest.js @@ -5,7 +5,7 @@ import { environment } from '../../../environment'; const path = require('path'); export async function readCustomResources({ resourceId }) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); let currentUser; await localforage.getItem('userProfile').then((value) => { diff --git a/renderer/src/core/reference/writeCustomResources.js b/renderer/src/core/reference/writeCustomResources.js index 994a2a46..d56a54fb 100644 --- a/renderer/src/core/reference/writeCustomResources.js +++ b/renderer/src/core/reference/writeCustomResources.js @@ -5,7 +5,7 @@ import { environment } from '../../../environment'; const path = require('path'); export async function writeCustomResources({ resourceUrl }) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); let currentUser; await localforage.getItem('userProfile').then((value) => { diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index 711008e1..ad07bed6 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -97,7 +97,7 @@ function messageToPeople(json) { function createSection(folder, pickerJson) { const path = require('path'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const fixedPath = fixPath(folder); let projects; @@ -502,7 +502,7 @@ export default function InnerFramePopup() { }, [nameFile]); useEffect(() => { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const os = window.require('os'); const path = window.require('path'); diff --git a/renderer/src/layouts/editor/SectionContainer.js b/renderer/src/layouts/editor/SectionContainer.js index 4e4415eb..4acaaae9 100644 --- a/renderer/src/layouts/editor/SectionContainer.js +++ b/renderer/src/layouts/editor/SectionContainer.js @@ -22,7 +22,7 @@ const SectionContainer = () => { const username = value?.username; localforage.getItem('currentProject').then((projectName) => { const path = require('path'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); const metaPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName, 'metadata.json'); const data = fs.readFileSync(metaPath, 'utf-8'); diff --git a/renderer/src/layouts/editor/SectionPlaceholder1.js b/renderer/src/layouts/editor/SectionPlaceholder1.js index eb39a744..44adfcf2 100644 --- a/renderer/src/layouts/editor/SectionPlaceholder1.js +++ b/renderer/src/layouts/editor/SectionPlaceholder1.js @@ -288,11 +288,11 @@ const SectionPlaceholder1 = ({ editor }) => { // if (isElectron()) { localforage.getItem('userProfile').then(async (user) => { if (_obsNavigation1 && referenceColumnOneData1.refName && referenceColumnOneData1.selectedResource === 'obs') { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); setStories1(core(fs, _obsNavigation1, referenceColumnOneData1.refName, user.username)); } if (_obsNavigation2 && referenceColumnOneData2.refName && referenceColumnOneData2.selectedResource === 'obs') { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); setStories2(core(fs, _obsNavigation2, referenceColumnOneData2.refName, user.username)); } }); diff --git a/renderer/src/layouts/editor/SectionPlaceholder2.js b/renderer/src/layouts/editor/SectionPlaceholder2.js index cde0d258..70297a36 100644 --- a/renderer/src/layouts/editor/SectionPlaceholder2.js +++ b/renderer/src/layouts/editor/SectionPlaceholder2.js @@ -290,11 +290,11 @@ const SectionPlaceholder2 = ({ editor }) => { useEffect(() => { localforage.getItem('userProfile').then((user) => { if (_obsNavigation1 && referenceColumnTwoData1.refName && referenceColumnTwoData1.selectedResource === 'obs') { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); setStories1(core(fs, _obsNavigation1, referenceColumnTwoData1.refName, user.username)); } if (_obsNavigation2 && referenceColumnTwoData2.refName && referenceColumnTwoData2.selectedResource === 'obs') { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); setStories2(core(fs, _obsNavigation2, referenceColumnTwoData2.refName, user.username)); } }); diff --git a/renderer/src/layouts/editor/SubMenuBar.js b/renderer/src/layouts/editor/SubMenuBar.js index 31c29817..d5ac98b2 100644 --- a/renderer/src/layouts/editor/SubMenuBar.js +++ b/renderer/src/layouts/editor/SubMenuBar.js @@ -131,7 +131,7 @@ export default function SubMenuBar() { const username = value?.username; localforage.getItem('currentProject').then((projectName) => { const path = require('path'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); const metaPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName, 'metadata.json'); const data = fs.readFileSync(metaPath, 'utf-8'); diff --git a/renderer/src/layouts/editor/pdfGenInterface/PdfPreview.js b/renderer/src/layouts/editor/pdfGenInterface/PdfPreview.js index 2a0097cd..09d754f5 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/PdfPreview.js +++ b/renderer/src/layouts/editor/pdfGenInterface/PdfPreview.js @@ -12,7 +12,7 @@ // //This component is te pdf preview view, it is mostly a place holder for now // export function PdfPreview() { // const path = require('path'); -// const fs = window.require('fs'); +// const fs = window.require('graceful-fs'); // const [zoom, setZoom] = useState(1); // const [numPages, setNumPages] = useState(); // const [pageNumber, setPageNumber] = useState(1); diff --git a/renderer/src/layouts/projects/Export/ExportProjectPopUp.js b/renderer/src/layouts/projects/Export/ExportProjectPopUp.js index c253b12b..3f114bb3 100644 --- a/renderer/src/layouts/projects/Export/ExportProjectPopUp.js +++ b/renderer/src/layouts/projects/Export/ExportProjectPopUp.js @@ -162,7 +162,7 @@ export default function ExportProjectPopUp(props) { }; const exportBible = async () => { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if (folderPath && fs.existsSync(folderPath)) { setValid(false); logger.debug('ExportProjectPopUp.js', 'Inside exportBible'); diff --git a/renderer/src/layouts/projects/Import/ConflictResolverUI.jsx b/renderer/src/layouts/projects/Import/ConflictResolverUI.jsx index fa557270..8d20d95f 100644 --- a/renderer/src/layouts/projects/Import/ConflictResolverUI.jsx +++ b/renderer/src/layouts/projects/Import/ConflictResolverUI.jsx @@ -53,7 +53,7 @@ function ConflictResolverUI({ conflictData, setConflictPopup }) { const abortConflictResolution = async (conflictData) => { logger.debug('conflictResolverUI.jsx', 'in abort conflict'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); modelClose(); setConflictPopup({ open: false, diff --git a/renderer/src/layouts/projects/Import/mergeObsUtils.js b/renderer/src/layouts/projects/Import/mergeObsUtils.js index a14add8b..0775f1c9 100644 --- a/renderer/src/layouts/projects/Import/mergeObsUtils.js +++ b/renderer/src/layouts/projects/Import/mergeObsUtils.js @@ -10,7 +10,7 @@ import OBSBack from '../../../lib/OBSback.md'; const path = require('path'); export async function parseObs(conflictData, selectedFileName) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const filePath = path.join(conflictData.data.mergeDirPath, selectedFileName); @@ -160,7 +160,7 @@ export async function updateAndSaveStory(story, currentUser, projectName, mergeD let title; let body = ''; let end; const path = require('path'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); story.forEach((s) => { if (Object.prototype.hasOwnProperty.call(s, 'title')) { @@ -185,7 +185,7 @@ export async function createAllMdInDir(dirPath) { try { // function to create 50 md story in a dir logger.debug('mergeObsUtils.js', 'Inside createAllMd - create empty md in a dir'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); await OBSData.forEach(async (storyJson) => { const currentFileName = `${storyJson.storyId.toString().padStart(2, 0)}.md`; const file = await JsonToMd(storyJson, ''); @@ -210,7 +210,7 @@ export async function createAllMdInDir(dirPath) { export async function copyFilesTempToOrginal(conflictData) { try { const path = require('path'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const fse = window.require('fs-extra'); // copy all md from merge main to project main diff --git a/renderer/src/layouts/projects/Import/mergeProject.js b/renderer/src/layouts/projects/Import/mergeProject.js index bbd3d5d3..938ceba4 100644 --- a/renderer/src/layouts/projects/Import/mergeProject.js +++ b/renderer/src/layouts/projects/Import/mergeProject.js @@ -49,7 +49,7 @@ export const mergeProject = async (incomingPath, currentUser, setConflictPopup, const tempMergeIncoming = 'merge-incoming'; const mainBranch = `${packageInfo.name}-main`; let currentActiveBranch = mainBranch; - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const fse = window.require('fs-extra'); // read incoming meta let incomingMeta = await readIngredients({ diff --git a/renderer/src/layouts/projects/ImportProjectPopUp.js b/renderer/src/layouts/projects/ImportProjectPopUp.js index 8d3b9080..71fc3d37 100644 --- a/renderer/src/layouts/projects/ImportProjectPopUp.js +++ b/renderer/src/layouts/projects/ImportProjectPopUp.js @@ -109,7 +109,7 @@ export default function ImportProjectPopUp(props) { const removeExtractedZipDir = async() => { const path = require('path'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); // delete the extracted zip file after successfull / failed import if(importingIsZip && folderPath) { setImportingIsZip(false) @@ -138,7 +138,7 @@ export default function ImportProjectPopUp(props) { setImportProgress((prev)=>({...prev, importStarted:true, completedSteps: prev.completedSteps + 1 })) logger.debug('ImportProjectPopUp.js', 'Inside callImport'); const path = require('path'); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); await localforage.getItem('userProfile').then(async (value) => { const status = await importBurrito(folderPath, value.username, updateBurriot, languages); // delete the extracted zip file after successfull / failed import diff --git a/renderer/src/modules/projects/hooks/useEditProject.js b/renderer/src/modules/projects/hooks/useEditProject.js index 19979144..485ffa06 100644 --- a/renderer/src/modules/projects/hooks/useEditProject.js +++ b/renderer/src/modules/projects/hooks/useEditProject.js @@ -26,7 +26,7 @@ const useEditProject = () => { const userProfile = await localforage.getItem('userProfile'); if (isElectron()) { - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); const newpath = localStorage.getItem('userPath'); folder = path.join(newpath, packageInfo.name, 'users', userProfile.username, 'projects', `${project.name}_${project.id[0]}`); data = fs.readFileSync(path.join(folder, 'metadata.json'), 'utf-8'); diff --git a/renderer/src/util/createAudioVersification.js b/renderer/src/util/createAudioVersification.js index aec228e7..98efa4af 100644 --- a/renderer/src/util/createAudioVersification.js +++ b/renderer/src/util/createAudioVersification.js @@ -33,7 +33,7 @@ export const createAudioVersification = ( logger.debug('createAudioVersification.js', 'Creating the files with selected scheme'); // eslint-disable-next-line import/no-dynamic-require const file = require(`../lib/versification/${scheme.file}`); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } diff --git a/renderer/src/util/createJuxtaContent.js b/renderer/src/util/createJuxtaContent.js index 41f19fae..dc02abc5 100644 --- a/renderer/src/util/createJuxtaContent.js +++ b/renderer/src/util/createJuxtaContent.js @@ -38,7 +38,7 @@ export const createJuxtaContent = ( logger.debug('createJuxtaContent.js', `call == ${call}`); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } diff --git a/renderer/src/util/createObsContent.js b/renderer/src/util/createObsContent.js index bd581f5a..de8fa232 100644 --- a/renderer/src/util/createObsContent.js +++ b/renderer/src/util/createObsContent.js @@ -36,7 +36,7 @@ export const createObsContent = ( ingredientsDirName = ingredientsDirName[0].split(/[(\\)?(/)?]/gm).slice(0)[0]; } const folder = path.join(newpath, packageInfo.name, 'users', username, 'projects', `${project.projectName}_${id}`, ingredientsDirName); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); logger.debug('createObsContent.js', 'Creating the story md files'); // eslint-disable-next-line import/no-dynamic-require @@ -46,7 +46,7 @@ export const createObsContent = ( if (bookAvailable(importedFiles, currentFileName)) { logger.debug('createObsContent.js', `${currentFileName} has been Imported`); const file = importedFiles.filter((obj) => (obj.id === currentFileName)); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } @@ -64,7 +64,7 @@ export const createObsContent = ( } else { logger.debug('createObsContent.js', 'Creating the md file using RCL function JsonToMd'); const file = JsonToMd(storyJson, ''); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } @@ -148,7 +148,7 @@ export const createObsContent = ( logger.debug('createObsContent.js', `${file.id} has been Imported`); const currentStory = OBSData.filter((obj) => ( (obj.storyId).toString().padStart(2, 0) === (file.id).split('.')[0])); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); // if (!fs.existsSync(folder)) { // fs.mkdirSync(folder, { recursive: true }); // } diff --git a/renderer/src/util/createVersificationUSFM.js b/renderer/src/util/createVersificationUSFM.js index 55524749..89d8cfeb 100644 --- a/renderer/src/util/createVersificationUSFM.js +++ b/renderer/src/util/createVersificationUSFM.js @@ -55,7 +55,7 @@ export const createVersificationUSFM = ( if (bookAvailable(importedFiles, book)) { logger.debug('createVersificationUSFM.js', `${book} is been Imported`); const file = importedFiles.filter((obj) => (obj.id === book)); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } @@ -101,7 +101,7 @@ export const createVersificationUSFM = ( const isJsonValid = myJsonParser.validate(); if (isJsonValid) { const reCreatedUsfm = myJsonParser.toUSFM(); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } @@ -121,7 +121,7 @@ export const createVersificationUSFM = ( } } }); - const fs = window.require('fs'); + const fs = window.require('graceful-fs'); logger.debug('createVersificationUSFM.js', 'Creating versification.json file in ingredients'); await fs.writeFileSync(path.join(folder, 'versification.json'), JSON.stringify(file)); const stats = fs.statSync(path.join(folder, 'versification.json')); From 02b264a0f0f92564366aea323ad853969c88e383 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Tue, 1 Oct 2024 12:56:08 +0200 Subject: [PATCH 22/27] test to build actions for dcn/fix_windows_fs_bug --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index b41922b9..313aa28e 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -5,7 +5,7 @@ name: Node.js CI on: push: - branches: [development] + branches: [development, dcn/fix_windows_fs_bug] jobs: build: From f62e774e0d618d7d8a5f9a706b0ce112f81c6b5e Mon Sep 17 00:00:00 2001 From: danielc-n Date: Tue, 1 Oct 2024 14:55:01 +0200 Subject: [PATCH 23/27] getting rid of 'graceful-fs' and everything is working here --- .github/workflows/node.js.yml | 3 -- e2e-tests/base.test.ts | 2 +- main/index.js | 46 ++++++++++++++----- next.config.js | 10 ---- package.json | 1 - .../EditorPage/AudioEditor/AudioEditor.js | 2 +- .../EditorPage/AudioEditor/MainPlayer.js | 8 ++-- .../Reference/Audio/ReferenceAudio.js | 2 +- .../EditorPage/Reference/OBS/ObsTn.js | 2 +- .../EditorPage/Reference/TA/TaNavigation.js | 2 +- .../EditorPage/Reference/TW/TwNavigation.js | 4 +- .../Reference/TranslationHelpsCard.js | 2 +- .../EditorPage/UsfmEditor/UsfmEditor.js | 2 +- renderer/src/components/Login/LeftLogin.js | 2 +- .../utils/readProjectScope.js | 6 +-- .../utils/updateBurritoScope.js | 2 +- .../src/components/Projects/ImportPopUp.js | 2 +- .../Projects/hooks/useEditProject.js | 2 +- .../CreateProject/AdvancedSettingsDropdown.js | 2 +- .../checkandDownloadObsImages.js | 2 +- .../components/Resources/ImportResource.js | 4 +- .../ResourceUtils/DownloadCreateSBforHelps.js | 2 +- .../Resources/ResourceUtils/RemoveResource.js | 2 +- .../createDownloadedResourceSB.js | 6 +-- .../Resources/useReadLocalResources.js | 2 +- .../Sync/Gitea/EditorSync/EditorSyncUtils.js | 2 +- .../Gitea/ProjectMerge/ProjectMergeUtils.js | 6 +-- .../Sync/Gitea/SyncFromGiteaUtils.js | 2 +- .../src/components/Sync/Scribe/SyncToGitea.js | 2 +- .../Sync/Scribe/SyncToGiteaUtils.js | 4 +- .../src/components/context/ProjectContext.js | 4 +- renderer/src/core/Login/handleJson.js | 2 +- renderer/src/core/Login/handleLogin.js | 2 +- renderer/src/core/Login/removeUser.js | 2 +- renderer/src/core/burrito/importBurrito.js | 6 +-- renderer/src/core/burrito/updateObsSB.js | 2 +- .../src/core/burrito/updateTranslationSB.js | 2 +- renderer/src/core/editor/readFile.js | 2 +- renderer/src/core/editor/writeToFile.js | 2 +- renderer/src/core/export/exportHTML.js | 4 +- .../core/projects/existProjectInBackEnd.js | 2 +- .../src/core/projects/fetchProjectsMeta.js | 2 +- renderer/src/core/projects/handleProfile.js | 4 +- renderer/src/core/projects/metaFileReplace.js | 2 +- .../src/core/projects/saveProjectFiles.js | 2 +- .../src/core/projects/saveProjetcsMeta.js | 2 +- .../src/core/projects/updateAgSettings.js | 2 +- renderer/src/core/projects/userSettings.js | 8 ++-- .../src/core/reference/readCustomResources.js | 2 +- .../src/core/reference/readIngredients.js | 2 +- renderer/src/core/reference/readRefBurrito.js | 2 +- renderer/src/core/reference/readRefMeta.js | 2 +- renderer/src/core/reference/readmanifest.js | 2 +- .../core/reference/writeCustomResources.js | 2 +- .../src/layouts/editor/InnerFramePopup.js | 20 ++------ .../src/layouts/editor/SectionContainer.js | 2 +- .../src/layouts/editor/SectionPlaceholder1.js | 4 +- .../src/layouts/editor/SectionPlaceholder2.js | 4 +- renderer/src/layouts/editor/SubMenuBar.js | 2 +- .../editor/pdfGenInterface/PdfPreview.js | 2 +- .../projects/Export/ExportProjectPopUp.js | 2 +- .../projects/Import/ConflictResolverUI.jsx | 2 +- .../layouts/projects/Import/mergeObsUtils.js | 8 ++-- .../layouts/projects/Import/mergeProject.js | 2 +- .../layouts/projects/ImportProjectPopUp.js | 4 +- .../modules/projects/hooks/useEditProject.js | 2 +- renderer/src/util/createAudioVersification.js | 2 +- renderer/src/util/createJuxtaContent.js | 2 +- renderer/src/util/createObsContent.js | 8 ++-- renderer/src/util/createVersificationUSFM.js | 6 +-- 70 files changed, 135 insertions(+), 137 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 313aa28e..3ed5e655 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -76,9 +76,6 @@ jobs: - name: install dependencies run: yarn install - - name: increase max file opened - run: ulimit -n 1048576 - - name: install wine run: | sudo dpkg --add-architecture i386 diff --git a/e2e-tests/base.test.ts b/e2e-tests/base.test.ts index a97a7fad..9d122cea 100755 --- a/e2e-tests/base.test.ts +++ b/e2e-tests/base.test.ts @@ -14,7 +14,7 @@ import { createUser, projectPageExpect } from './common'; -const fs = require('graceful-fs'); +const fs = require('fs'); const path = require('path'); const { _electron: electron } = require('@playwright/test'); diff --git a/main/index.js b/main/index.js index adda0474..786ffce4 100755 --- a/main/index.js +++ b/main/index.js @@ -1,7 +1,7 @@ // Native require('@electron/remote/main').initialize(); const path = require('path'); -const fs = require('graceful-fs').promises; +const fs = require('fs'); const { format } = require('url'); const { install } = require('@puppeteer/browsers'); const config = require("dotenv"); @@ -21,14 +21,14 @@ function isDev() { async function setPermissions(chromePath) { try { - await fs.chmod(chromePath, '755'); // Set the permissions to be executable + fs.chmodSync(chromePath, '755'); // Set the permissions to be executable console.log(`Permissions set for: ${chromePath}`); } catch (err) { console.error(`Failed to set permissions for ${chromePath}: `, err); } } -async function getChromeCacheDir() { +function getChromeCacheDir() { // Use Electron's app.getPath to get the userData directory (persistent) const dataDir = app.getPath('appData'); @@ -37,28 +37,45 @@ async function getChromeCacheDir() { // Create the folder if it doesn't exist try { - await fs.access(chromeDataDir); + fs.accessSync(chromeDataDir); } catch (err) { // If the directory doesn't exist, create it - await fs.mkdir(chromeDataDir, { recursive: true }); + fs.mkdirSync(chromeDataDir, { recursive: true }); console.log(`Created persistent Chrome data directory at: ${chromeDataDir}`); } return chromeDataDir; } +function getChromeExecutablePath(platform, chromeDir, platformDir) { + let executableName = ''; + if (platform === 'linux') { + executableName = 'chrome-linux64/chrome'; + } else if (platform === 'darwin') { + executableName = 'chrome-mac/Chromium.app/Contents/MacOS/Chromium'; + } else if (platform === 'win64') { + executableName = 'chrome-win64/chrome.exe'; + } + + return path.join(chromeDir, platformDir, executableName); +} + async function verifyAndInstallChrome(version) { const platform = process.platform === 'win32' ? 'win64' : process.platform; // Get the persistent directory - const cacheDir = await getChromeCacheDir(); - const bPath = path.join(cacheDir, `chrome/${platform}-${version}`); + const cacheDir = getChromeCacheDir(); + const chromeDir = path.join(cacheDir, 'chrome'); + const platformDir = `${platform}-${version}`; + + const chromeExecutablePath = getChromeExecutablePath(platform, chromeDir, platformDir); + // Check if the browser is already installed try { - await fs.access(bPath); + fs.accessSync(chromeExecutablePath); console.log(`Chrome version ${version} is already installed.`); - browserPath = bPath; + browserPath = chromeExecutablePath; } catch (err) { console.log(`Chrome version ${version} is not installed. Installing now...`); await install({ @@ -67,10 +84,17 @@ async function verifyAndInstallChrome(version) { buildId: version, platform, }).then((res) => { - browserPath = res.path; + const installedChromePath = getChromeExecutablePath(platform, chromeDir, platformDir); + if (fs.existsSync(installedChromePath)) { + browserPath = installedChromePath; + console.log(`Chrome version ${version} has been installed to ${browserPath}.`); + } + let bet = res.path; + console.log("## browserPath ==",bet); setPermissions(browserPath); + }).catch((err) => { + throw new Error(`Failed to install Chrome version ${version}`); }); - console.log(`Chrome version ${version} has been installed.`); } } diff --git a/next.config.js b/next.config.js index 874faae7..b77ffcaa 100644 --- a/next.config.js +++ b/next.config.js @@ -11,16 +11,6 @@ const nextConfig = { config.resolve.alias.canvas = false; } - config.optimization = { - ...config.optimization, - minimize: true, - minimizer: [ - new TerserPlugin({ - parallel: 1, - }), - ], - }; - config.module.rules.push({ test: /\.md$/, use: 'raw-loader', diff --git a/package.json b/package.json index 13bb5163..e53d41af 100644 --- a/package.json +++ b/package.json @@ -180,7 +180,6 @@ "fs-extra": "^10.1.0", "get-system-fonts": "^2.0.2", "gitea-react-toolkit": "2.1.2", - "graceful-fs": "^4.2.11", "history": "^5.3.0", "i18next": "^21.8.9", "ionicons": "^7.1.2", diff --git a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js index 2a1031a8..cc61639f 100644 --- a/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js +++ b/renderer/src/components/EditorPage/AudioEditor/AudioEditor.js @@ -69,7 +69,7 @@ const AudioEditor = ({ editor }) => { // Checking whether the selected book and chapter is in the scope or not if (key === bookId.toUpperCase() && _data.type.flavorType.currentScope[key].includes(chapter)) { _books.push(bookId.toUpperCase()); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); let bookContent = []; const exists = fs.existsSync(path.join(projectsDir, 'text-1', 'ingredients', `${bookId.toUpperCase()}.usfm`)); diff --git a/renderer/src/components/EditorPage/AudioEditor/MainPlayer.js b/renderer/src/components/EditorPage/AudioEditor/MainPlayer.js index 0afe86d7..88e5f115 100644 --- a/renderer/src/components/EditorPage/AudioEditor/MainPlayer.js +++ b/renderer/src/components/EditorPage/AudioEditor/MainPlayer.js @@ -57,7 +57,7 @@ const MainPlayer = () => { const loadChapter = async () => { if (audioCurrentChapter) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); // Fetching the Audios const chapters = await fs.readdirSync(path.join(audioCurrentChapter.filePath, audioCurrentChapter.chapterNum)); @@ -101,7 +101,7 @@ const MainPlayer = () => { // Setting up the default audio from the takes const changeDefault = (value) => { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); let i = 1; // Checking whether the take has any audio @@ -126,7 +126,7 @@ const MainPlayer = () => { .then(({ projectsDir, path, }) => { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const result = take.replace(/take/g, ''); // Fetching the mp3 files const folderName = fs.readdirSync(path.join(projectsDir, 'audio', 'ingredients', bookId.toUpperCase(), chapter)); @@ -178,7 +178,7 @@ const MainPlayer = () => { const handleFunction = () => { // We have used trigger to identify whether the call is from DeleteAudio or Re-record if (trigger === 'delete') { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const result = take.replace(/take/g, ''); let versePosition; diff --git a/renderer/src/components/EditorPage/Reference/Audio/ReferenceAudio.js b/renderer/src/components/EditorPage/Reference/Audio/ReferenceAudio.js index 42d5a69b..59f5dd9a 100644 --- a/renderer/src/components/EditorPage/Reference/Audio/ReferenceAudio.js +++ b/renderer/src/components/EditorPage/Reference/Audio/ReferenceAudio.js @@ -69,7 +69,7 @@ const ReferenceAudio = ({ setIsLoading(true); setDisplayScreen(false); setBookData(); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); // Fetching the reference list diff --git a/renderer/src/components/EditorPage/Reference/OBS/ObsTn.js b/renderer/src/components/EditorPage/Reference/OBS/ObsTn.js index 04f68278..4c91173d 100644 --- a/renderer/src/components/EditorPage/Reference/OBS/ObsTn.js +++ b/renderer/src/components/EditorPage/Reference/OBS/ObsTn.js @@ -78,7 +78,7 @@ function ObsTnCard({ try { localForage.getItem('userProfile').then(async (user) => { logger.debug('OfflineResourceFetch.js', 'reading offline obs-tn ', offlineResource.data?.projectDir); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; diff --git a/renderer/src/components/EditorPage/Reference/TA/TaNavigation.js b/renderer/src/components/EditorPage/Reference/TA/TaNavigation.js index c588a7f3..203fe7c3 100644 --- a/renderer/src/components/EditorPage/Reference/TA/TaNavigation.js +++ b/renderer/src/components/EditorPage/Reference/TA/TaNavigation.js @@ -64,7 +64,7 @@ export default function TaNavigation({ languageId, referenceResources }) { // console.log('offline data : ', { taList, offlineResource }); localForage.getItem('userProfile').then(async (user) => { logger.debug('TaNavigation.js', 'reading offline helps ', offlineResource.data?.projectDir); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; diff --git a/renderer/src/components/EditorPage/Reference/TW/TwNavigation.js b/renderer/src/components/EditorPage/Reference/TW/TwNavigation.js index e79b63cb..92eeaa31 100644 --- a/renderer/src/components/EditorPage/Reference/TW/TwNavigation.js +++ b/renderer/src/components/EditorPage/Reference/TW/TwNavigation.js @@ -25,7 +25,7 @@ export default function TwNavigation({ languageId, referenceResources, setRefere if (referenceResources && referenceResources?.offlineResource?.offline) { const { offlineResource } = referenceResources; localForage.getItem('userProfile').then(async (user) => { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; @@ -97,7 +97,7 @@ export default function TwNavigation({ languageId, referenceResources, setRefere const taArrayOffline = []; const { offlineResource } = referenceResources; localForage.getItem('userProfile').then(async (user) => { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; diff --git a/renderer/src/components/EditorPage/Reference/TranslationHelpsCard.js b/renderer/src/components/EditorPage/Reference/TranslationHelpsCard.js index ca7c3760..465ea388 100644 --- a/renderer/src/components/EditorPage/Reference/TranslationHelpsCard.js +++ b/renderer/src/components/EditorPage/Reference/TranslationHelpsCard.js @@ -75,7 +75,7 @@ export default function TranslationHelpsCard({ setOfflineItems(''); localForage.getItem('userProfile').then(async (user) => { logger.debug('TranslationHelpsCard.js', `reading offline helps ${offlineResource.data?.projectDir}`); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const currentUser = user?.username; diff --git a/renderer/src/components/EditorPage/UsfmEditor/UsfmEditor.js b/renderer/src/components/EditorPage/UsfmEditor/UsfmEditor.js index 376da6dd..580f27ba 100644 --- a/renderer/src/components/EditorPage/UsfmEditor/UsfmEditor.js +++ b/renderer/src/components/EditorPage/UsfmEditor/UsfmEditor.js @@ -347,7 +347,7 @@ const UsfmEditor = () => { const username = value?.username; localforage.getItem('currentProject').then((projectName) => { const path = require('path'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); const projectsDir = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName); const metaPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName, 'metadata.json'); diff --git a/renderer/src/components/Login/LeftLogin.js b/renderer/src/components/Login/LeftLogin.js index 44e86130..6468d898 100644 --- a/renderer/src/components/Login/LeftLogin.js +++ b/renderer/src/components/Login/LeftLogin.js @@ -97,7 +97,7 @@ const LeftLogin = () => { // router.push('/main'); // The below code is commented for UI dev purpose. if (handleValidation(values)) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); logger.debug( 'LeftLogin.js', 'Triggers handleLogin to check whether the user is existing or not', diff --git a/renderer/src/components/ProjectManagement/utils/readProjectScope.js b/renderer/src/components/ProjectManagement/utils/readProjectScope.js index 8d704fd8..d95c021d 100644 --- a/renderer/src/components/ProjectManagement/utils/readProjectScope.js +++ b/renderer/src/components/ProjectManagement/utils/readProjectScope.js @@ -14,8 +14,8 @@ const getDirectories = (readdirSync, source) => readdirSync(source, { withFileTy export const getScope = async (project) => { const path = require('path'); const scope = {}; - const { readdirSync } = window.require('graceful-fs'); - const fs = window.require('graceful-fs'); + const { readdirSync } = window.require('fs'); + const fs = window.require('fs'); const list = getDirectories(readdirSync, project); list.forEach(async (book) => { @@ -43,7 +43,7 @@ export const readProjectScope = async (projectName) => { logger.debug('readProjectScope.js', `In read metadata - ${projectName}`); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); diff --git a/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js b/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js index 4e45bcef..a3379979 100644 --- a/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js +++ b/renderer/src/components/ProjectManagement/utils/updateBurritoScope.js @@ -7,7 +7,7 @@ export const updateBurritoScope = async (projectName, metadata) => { logger.debug('updateBurritoScope.js', `In update metadata - ${projectName}`); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); // Finally updating the scope in the metadata diff --git a/renderer/src/components/Projects/ImportPopUp.js b/renderer/src/components/Projects/ImportPopUp.js index d9c8b41d..d11e5821 100644 --- a/renderer/src/components/Projects/ImportPopUp.js +++ b/renderer/src/components/Projects/ImportPopUp.js @@ -111,7 +111,7 @@ export default function ImportPopUp(props) { const importFiles = (folderPath) => { logger.debug('ImportPopUp.js', 'Inside importFiles'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const files = []; const bookCodeList = []; folderPath.forEach((filePath) => { diff --git a/renderer/src/components/Projects/hooks/useEditProject.js b/renderer/src/components/Projects/hooks/useEditProject.js index 3f5d71c6..c2bd4631 100644 --- a/renderer/src/components/Projects/hooks/useEditProject.js +++ b/renderer/src/components/Projects/hooks/useEditProject.js @@ -26,7 +26,7 @@ const useEditProject = () => { const userProfile = await localforage.getItem('userProfile'); if (isElectron()) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); folder = path.join(newpath, packageInfo.name, 'users', userProfile.username, 'projects', `${project.name}_${project.id[0]}`); data = fs.readFileSync(path.join(folder, 'metadata.json'), 'utf-8'); diff --git a/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js b/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js index 3c48094e..be75e50f 100644 --- a/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js +++ b/renderer/src/components/ProjectsPage/CreateProject/AdvancedSettingsDropdown.js @@ -92,7 +92,7 @@ export default function AdvancedSettingsDropdown({ call, project, projectType }) if (isElectron()) { let title = licenceTitle; let myLicence = {}; - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if ((title === 'Custom' || !title) && !selectNew) { myLicence.title = 'Custom'; myLicence.locked = false; diff --git a/renderer/src/components/Resources/DownloadObsImages/checkandDownloadObsImages.js b/renderer/src/components/Resources/DownloadObsImages/checkandDownloadObsImages.js index bcfb7b85..743752ff 100644 --- a/renderer/src/components/Resources/DownloadObsImages/checkandDownloadObsImages.js +++ b/renderer/src/components/Resources/DownloadObsImages/checkandDownloadObsImages.js @@ -48,7 +48,7 @@ export const checkandDownloadObsImages = async () => { // check for the folder and images // const imageCdnBaseUrl = 'https://cdn.door43.org/obs/jpg/360px/'; if (isElectron()) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const obsImagePath = path.join(newpath, packageInfo.name, 'common', environment.OBS_IMAGE_DIR); diff --git a/renderer/src/components/Resources/ImportResource.js b/renderer/src/components/Resources/ImportResource.js index d51ce8cc..7a327ad3 100644 --- a/renderer/src/components/Resources/ImportResource.js +++ b/renderer/src/components/Resources/ImportResource.js @@ -53,7 +53,7 @@ export default function ImportResource({ }; const importReference = async (projectsDir, name, burritoType) => { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const fse = window.require('fs-extra'); const path = require('path'); let dirPath; @@ -84,7 +84,7 @@ export default function ImportResource({ setFolderPath(''); }; const uploadRefBible = async () => { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); try { const user = await localforage.getItem('userProfile'); diff --git a/renderer/src/components/Resources/ResourceUtils/DownloadCreateSBforHelps.js b/renderer/src/components/Resources/ResourceUtils/DownloadCreateSBforHelps.js index 45fe24e7..46cb20cb 100644 --- a/renderer/src/components/Resources/ResourceUtils/DownloadCreateSBforHelps.js +++ b/renderer/src/components/Resources/ResourceUtils/DownloadCreateSBforHelps.js @@ -18,7 +18,7 @@ const DownloadCreateSBforHelps = async (projectResource, setLoading, update = fa setLoading(true); await localForage.getItem('userProfile').then(async (user) => { logger.debug('DownloadCreateSBforHelps.js', 'In helps-resource download user fetch - ', user?.username); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const folder = path.join(newpath, packageInfo.name, 'users', `${user?.username}`, 'resources'); diff --git a/renderer/src/components/Resources/ResourceUtils/RemoveResource.js b/renderer/src/components/Resources/ResourceUtils/RemoveResource.js index 68447f0f..8a3609d6 100644 --- a/renderer/src/components/Resources/ResourceUtils/RemoveResource.js +++ b/renderer/src/components/Resources/ResourceUtils/RemoveResource.js @@ -118,7 +118,7 @@ function RemoveResource({ logger.warn('removeResource.js', 'inside removing resource call'); localForage.getItem('userProfile').then(async (user) => { logger.debug('DownloadResourcePopUp.js', 'In resource download user fetch - ', user?.username); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); const folder = path.join(newpath, packageInfo.name, 'users', `${user?.username}`, 'resources'); let resourceName = null; diff --git a/renderer/src/components/Resources/ResourceUtils/createDownloadedResourceSB.js b/renderer/src/components/Resources/ResourceUtils/createDownloadedResourceSB.js index 6db604f3..e0467063 100644 --- a/renderer/src/components/Resources/ResourceUtils/createDownloadedResourceSB.js +++ b/renderer/src/components/Resources/ResourceUtils/createDownloadedResourceSB.js @@ -161,7 +161,7 @@ export const generateResourceIngredientsTextTransaltion = async (currentResource // generating ingredients content in metadata currentResourceMeta?.projects.forEach(async (project) => { logger.debug('createDownloadedResourceSB.js', 'In adding ingredients to burrito for TextTransaltion'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if (fs.existsSync(path.join(folder, currentResourceProject.name, project.path))) { const filecontent = await fs.readFileSync(path.join(folder, currentResourceProject.name, project.path), 'utf8'); // find checksum & size by reading the file @@ -184,7 +184,7 @@ export const generateResourceIngredientsTextTransaltion = async (currentResource export const generateResourceIngredientsOBS = async (currentResourceMeta, path, folder, currentResourceProject, resourceBurritoFile, files) => { logger.debug('createDownloadedResourceSB.js', 'In adding ingredients to burrito of OBS'); files.forEach(async (file) => { // en_obs/content/01.md, en_obs/content/front/title.md - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const endPart = file.split('/').pop(); const regX = /^\d{2}.md$/; if (regX.test(endPart) || ['intro.md', 'title.md'].indexOf(endPart) > -1) { @@ -272,7 +272,7 @@ export const handleDownloadResources = async (resourceData, selectResource, acti localForage.getItem('userProfile').then(async (user) => { logger.debug('createDownloadedResourceSB.js', 'In create downloaded resource SB user fetch - ', user?.username); const folder = path.join(newpath, packageInfo.name, 'users', `${user?.username}`, 'resources'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); let resourceBurritoFile = {}; let currentResourceMeta = ''; let currentResourceProject = ''; diff --git a/renderer/src/components/Resources/useReadLocalResources.js b/renderer/src/components/Resources/useReadLocalResources.js index 04039cca..675603a7 100644 --- a/renderer/src/components/Resources/useReadLocalResources.js +++ b/renderer/src/components/Resources/useReadLocalResources.js @@ -11,7 +11,7 @@ import { createDirectory, newPath } from '../../../../supabase'; export default async function readLocalResources(username, setSubMenuItems) { if (isElectron()) { const parseData = []; - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const projectsDir = path.join(newpath, packageInfo.name, 'users', username, 'resources');// Read user resources diff --git a/renderer/src/components/Sync/Gitea/EditorSync/EditorSyncUtils.js b/renderer/src/components/Sync/Gitea/EditorSync/EditorSyncUtils.js index fe6ed03f..0e32b184 100644 --- a/renderer/src/components/Sync/Gitea/EditorSync/EditorSyncUtils.js +++ b/renderer/src/components/Sync/Gitea/EditorSync/EditorSyncUtils.js @@ -7,7 +7,7 @@ import { uploadToGitea } from '../../Scribe/SyncToGitea'; export async function getGiteaUsersList() { let usersList = []; const userData = await localForage.getItem('userProfile'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const file = path.join(newpath, packageInfo.name, 'users', userData?.username, environment.USER_SETTING_FILE); diff --git a/renderer/src/components/Sync/Gitea/ProjectMerge/ProjectMergeUtils.js b/renderer/src/components/Sync/Gitea/ProjectMerge/ProjectMergeUtils.js index fc2512eb..0865e092 100644 --- a/renderer/src/components/Sync/Gitea/ProjectMerge/ProjectMergeUtils.js +++ b/renderer/src/components/Sync/Gitea/ProjectMerge/ProjectMergeUtils.js @@ -10,7 +10,7 @@ export const uploadProjectToBranchRepoExist = async (selectedGiteaProject, ignor repo, branch, metaDataSB, localUsername, auth, } = selectedGiteaProject; const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const projectId = Object.keys(metaDataSB.identification.primary.scribe)[0]; const projectName = metaDataSB.identification.name.en; @@ -73,7 +73,7 @@ export const backupLocalProject = async (selectedGiteaProject, actions) => { logger.debug('ProjectMErgeUtils.js', 'Stated Backing up the project', projectName); const newpath = localStorage.getItem('userPath'); const fse = window.require('fs-extra'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const projectsMetaPath = path.join(newpath, packageInfo.name, 'users', selectedGiteaProject?.localUsername, 'projects', `${projectName}_${projectId}`); const projectBackupPath = path.join(newpath, packageInfo.name, 'users', selectedGiteaProject?.localUsername, 'projects-backups'); @@ -92,7 +92,7 @@ export const backupLocalProject = async (selectedGiteaProject, actions) => { export const undoMergeOrDeleteOldBackup = async (selectedGiteaProject, backupName, SYNC_BACKUP_COUNT, undo = false) => { logger.debug('ProjectMErgeUtils.js', 'in undo merge or delete old backup'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const projectBackupPath = path.join(newpath, packageInfo.name, 'users', selectedGiteaProject?.localUsername, 'projects-backups'); // Sorted files in directory on creation date diff --git a/renderer/src/components/Sync/Gitea/SyncFromGiteaUtils.js b/renderer/src/components/Sync/Gitea/SyncFromGiteaUtils.js index 0d32b27f..20841bfe 100644 --- a/renderer/src/components/Sync/Gitea/SyncFromGiteaUtils.js +++ b/renderer/src/components/Sync/Gitea/SyncFromGiteaUtils.js @@ -188,7 +188,7 @@ export const cloneAndSetProject = async (fs, gitprojectDir, repo, userBranch, au export const importServerProject = async (updateBurrito, repo, sbData, auth, userBranch, action, currentUser, duplicate, setPullPopup, setPullData, t = undefined) => { try { logger.debug('SyncFromGiteaUtils.js', 'Inside Import Project core'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); const sbDataObject = { ...sbData }; const projectDir = path.join(newpath, packageInfo.name, 'users', currentUser, 'projects'); diff --git a/renderer/src/components/Sync/Scribe/SyncToGitea.js b/renderer/src/components/Sync/Scribe/SyncToGitea.js index 83cd919e..3acc70bd 100644 --- a/renderer/src/components/Sync/Scribe/SyncToGitea.js +++ b/renderer/src/components/Sync/Scribe/SyncToGitea.js @@ -18,7 +18,7 @@ export async function uploadToGitea(projectDataAg, auth, setSyncProgress, notify const localBranch = `${auth?.user?.username}/${packageInfo.name}`; await localForage.getItem('userProfile').then(async (user) => { const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const projectsMetaPath = path.join(newpath, packageInfo.name, 'users', user?.username, 'projects', `${projectName}_${projectId}`); // Create A REPO for the project diff --git a/renderer/src/components/Sync/Scribe/SyncToGiteaUtils.js b/renderer/src/components/Sync/Scribe/SyncToGiteaUtils.js index ba525d42..b7f65913 100644 --- a/renderer/src/components/Sync/Scribe/SyncToGiteaUtils.js +++ b/renderer/src/components/Sync/Scribe/SyncToGiteaUtils.js @@ -92,7 +92,7 @@ export const updateFiletoServer = async (fileContent, filePath, branch, repoName // sync profile updation export const createSyncProfile = async (auth) => { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); await localForage.getItem('userProfile').then(async (user) => { const currentUser = user?.username; @@ -165,7 +165,7 @@ export const getOrPutLastSyncInAgSettings = async (method, projectMeta, syncUser if (method === 'get' || method === 'put') { let currentUser = await localForage.getItem('userProfile'); currentUser = currentUser?.username; - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const id = Object.keys(projectMeta?.identification?.primary?.scribe); diff --git a/renderer/src/components/context/ProjectContext.js b/renderer/src/components/context/ProjectContext.js index 7540657e..83d0d8ff 100644 --- a/renderer/src/components/context/ProjectContext.js +++ b/renderer/src/components/context/ProjectContext.js @@ -181,7 +181,7 @@ const ProjectContextProvider = ({ children }) => { logger.error('ProjectContext.js', 'Unable to find current user'); return; } - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const file = path.join(newpath, packageInfo.name, 'users', currentUser, environment.USER_SETTING_FILE); if (fs.existsSync(file)) { const agUserSettings = await fs.readFileSync(file); @@ -279,7 +279,7 @@ const ProjectContextProvider = ({ children }) => { currentUser = value.username; setUsername(value.username); }); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const file = path.join(newpath, packageInfo.name, 'users', currentUser, environment.USER_SETTING_FILE); if (fs.existsSync(file)) { const agUserSettings = await fs.readFileSync(file); diff --git a/renderer/src/core/Login/handleJson.js b/renderer/src/core/Login/handleJson.js index d200d388..4eda99dd 100644 --- a/renderer/src/core/Login/handleJson.js +++ b/renderer/src/core/Login/handleJson.js @@ -16,7 +16,7 @@ const uniqueUser = (users, username) => users.some((user) => user.username === u */ export const loadUsers = async () => { const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', 'users.json'); if (fs.existsSync(file)) { diff --git a/renderer/src/core/Login/handleLogin.js b/renderer/src/core/Login/handleLogin.js index 445ad3ad..4e0071c6 100644 --- a/renderer/src/core/Login/handleLogin.js +++ b/renderer/src/core/Login/handleLogin.js @@ -42,7 +42,7 @@ export const createWebUser = async (values) => { */ export const writeToFile = (users) => { const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', 'users.json'); fs.writeFileSync(file, JSON.stringify(users), (err) => { diff --git a/renderer/src/core/Login/removeUser.js b/renderer/src/core/Login/removeUser.js index b8578069..54de61b3 100644 --- a/renderer/src/core/Login/removeUser.js +++ b/renderer/src/core/Login/removeUser.js @@ -3,7 +3,7 @@ import packageInfo from '../../../../package.json'; export const removeUser = async (userName) => { const newpath = await localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const folder = path.join(newpath, packageInfo.name, 'users', userName.toLowerCase()); const file = path.join(newpath, packageInfo.name, 'users', 'users.json'); diff --git a/renderer/src/core/burrito/importBurrito.js b/renderer/src/core/burrito/importBurrito.js index f30a1030..6334a356 100644 --- a/renderer/src/core/burrito/importBurrito.js +++ b/renderer/src/core/burrito/importBurrito.js @@ -32,7 +32,7 @@ export const checkImportDuplicate = async (folderList, projectName, metadata, pr export const checkDuplicate = async (metadata, currentUser, resource) => { logger.debug('importBurrito.js', 'In checkDuplicate'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const projectName = metadata.identification?.name?.en; let existingProject; let id; @@ -82,7 +82,7 @@ export const checkDuplicate = async (metadata, currentUser, resource) => { }; export const viewBurrito = async (filePath, currentUser, resource) => { logger.debug('importBurrito.js', 'Inside viewBurrito'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const result = {}; if (fs.existsSync(path.join(filePath, 'metadata.json'))) { logger.debug('importBurrito.js', 'Project has Burrito file metadata.json.'); @@ -186,7 +186,7 @@ const checkTheProjectIsAudioChapterLevel = async (metadata) => { // Core Function Handle Burrito Import for all type of Projects const importBurrito = async (filePath, currentUser, updateBurritoVersion, concatedLangs = []) => { logger.debug('importBurrito.js', 'Inside importBurrito'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const fse = window.require('fs-extra'); const status = []; const newpath = localStorage.getItem('userPath'); diff --git a/renderer/src/core/burrito/updateObsSB.js b/renderer/src/core/burrito/updateObsSB.js index 91f44df4..b66e8efc 100644 --- a/renderer/src/core/burrito/updateObsSB.js +++ b/renderer/src/core/burrito/updateObsSB.js @@ -32,7 +32,7 @@ const updateObsSB = async (username, project, updateBurrito) => new Promise((res logger.debug('updateObsSB.js', 'In updateObsSB for updating the burrito.'); const newpath = localStorage.getItem('userPath'); const folder = path.join(newpath, packageInfo.name, 'users', username, 'projects', `${project.name}_${project.id[0]}`); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const sb = fs.readFileSync(path.join(folder, 'metadata.json')); let metadata = JSON.parse(sb); // eslint-disable-next-line no-unused-vars diff --git a/renderer/src/core/burrito/updateTranslationSB.js b/renderer/src/core/burrito/updateTranslationSB.js index db5e4ca8..20ba7608 100644 --- a/renderer/src/core/burrito/updateTranslationSB.js +++ b/renderer/src/core/burrito/updateTranslationSB.js @@ -35,7 +35,7 @@ const updateTranslationSB = async (username, project, updateBurrito) => new Prom logger.debug('updateTranslationSB.js', 'In updateTranslationSB for updating the burrito.'); const newpath = localStorage.getItem('userPath'); const folder = path.join(newpath, packageInfo.name, 'users', username, 'projects', `${project.name}_${project.id[0]}`); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const sb = fs.readFileSync(path.join(folder, 'metadata.json')); let metadata = JSON.parse(sb); // eslint-disable-next-line no-unused-vars diff --git a/renderer/src/core/editor/readFile.js b/renderer/src/core/editor/readFile.js index 20aa06a5..2ada6d2d 100644 --- a/renderer/src/core/editor/readFile.js +++ b/renderer/src/core/editor/readFile.js @@ -13,7 +13,7 @@ export const readFile = async ({ filename, }) => { if (isElectron()) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const projectsPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectname, filename); diff --git a/renderer/src/core/editor/writeToFile.js b/renderer/src/core/editor/writeToFile.js index 4f60e036..a4a8066b 100644 --- a/renderer/src/core/editor/writeToFile.js +++ b/renderer/src/core/editor/writeToFile.js @@ -12,7 +12,7 @@ const writeToFile = async ({ data, }) => { if (isElectron()) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const newpath = localStorage.getItem('userPath'); const projectsPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectname, filename); diff --git a/renderer/src/core/export/exportHTML.js b/renderer/src/core/export/exportHTML.js index c0ad4931..b2689d18 100644 --- a/renderer/src/core/export/exportHTML.js +++ b/renderer/src/core/export/exportHTML.js @@ -103,7 +103,7 @@ export const exportHTML = () => { new Date(), )}.html`, ); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); fs.writeFile(filepath, inlineData, (err) => { if (err) { logger.info('dynamic-msg-went-wrong', err); @@ -165,7 +165,7 @@ export const exportHTML = () => { new Date(), )}.html`, ); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); fs.writeFile(filepath, inlineData, (err) => { if (err) { logger.info('dynamic-msg-went-wrong', err); diff --git a/renderer/src/core/projects/existProjectInBackEnd.js b/renderer/src/core/projects/existProjectInBackEnd.js index e9a33d68..49daa4b4 100644 --- a/renderer/src/core/projects/existProjectInBackEnd.js +++ b/renderer/src/core/projects/existProjectInBackEnd.js @@ -16,7 +16,7 @@ function isBackendProjectExist(ProjectDir) { localforage.getItem('userProfile').then(async (value) => { if (isElectron()) { const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if (value?.username) { const resourcePath = path.join(newpath, packageInfo.name, 'users', value.username, 'resources', ProjectDir); // check for path exist or not and resolve true or false will work for pane 1 now add for other panes diff --git a/renderer/src/core/projects/fetchProjectsMeta.js b/renderer/src/core/projects/fetchProjectsMeta.js index df743b29..a8ad5618 100644 --- a/renderer/src/core/projects/fetchProjectsMeta.js +++ b/renderer/src/core/projects/fetchProjectsMeta.js @@ -15,7 +15,7 @@ const fetchProjectsMeta = async ({ currentUser }) => { if (isElectron()) { logger.debug('fetchProjectsMeta.js', 'In fetchProjectsMeta'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const projectsMetaPath = path.join(newpath, packageInfo.name, 'users', currentUser, 'projects'); fs.mkdirSync(projectsMetaPath, { recursive: true }); diff --git a/renderer/src/core/projects/handleProfile.js b/renderer/src/core/projects/handleProfile.js index 9472c92e..054c280f 100644 --- a/renderer/src/core/projects/handleProfile.js +++ b/renderer/src/core/projects/handleProfile.js @@ -16,7 +16,7 @@ export const getorPutAppLangage = async (method, currentUser, appLang) => { if (isElectron()) { logger.error('handleProfile.js', 'In updateAppLang, for updating the App language Selection'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); let file; if (currentUser) { @@ -68,7 +68,7 @@ export const getorPutAppLangage = async (method, currentUser, appLang) => { const updateJson = async (userdata) => { logger.error('handleProfile.js', 'In UpdateJson, for updating the current user details'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', 'users.json'); const status = []; diff --git a/renderer/src/core/projects/metaFileReplace.js b/renderer/src/core/projects/metaFileReplace.js index dd62f621..6978cc04 100644 --- a/renderer/src/core/projects/metaFileReplace.js +++ b/renderer/src/core/projects/metaFileReplace.js @@ -3,7 +3,7 @@ import packageInfo from '../../../../package.json'; const metaFileReplace = ({ userData }) => { const newpath = localStorage.getItem('userPath'); const status = []; - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const json = JSON.stringify(userData); const projectsMetaPath = path.join(newpath, packageInfo.name, 'users', 'username', 'projects', 'projects.json'); diff --git a/renderer/src/core/projects/saveProjectFiles.js b/renderer/src/core/projects/saveProjectFiles.js index fdc244b8..25423060 100644 --- a/renderer/src/core/projects/saveProjectFiles.js +++ b/renderer/src/core/projects/saveProjectFiles.js @@ -6,7 +6,7 @@ const saveProjectsFiles = ({ filenames, }) => { const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); fs.mkdirSync(path.join(newpath, packageInfo.name, 'users', username, 'projects', projectname), { recursive: true, diff --git a/renderer/src/core/projects/saveProjetcsMeta.js b/renderer/src/core/projects/saveProjetcsMeta.js index ad55534b..bd308377 100644 --- a/renderer/src/core/projects/saveProjetcsMeta.js +++ b/renderer/src/core/projects/saveProjetcsMeta.js @@ -54,7 +54,7 @@ export const saveProjectsMeta = async (projectMetaObj) => { logger.debug('saveProjectsMeta.js', 'In saveProjectsMeta'); const newpath = localStorage.getItem('userPath'); const status = []; - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); let currentUser; await localforage.getItem('userProfile').then((value) => { diff --git a/renderer/src/core/projects/updateAgSettings.js b/renderer/src/core/projects/updateAgSettings.js index d18b0697..60f4d597 100644 --- a/renderer/src/core/projects/updateAgSettings.js +++ b/renderer/src/core/projects/updateAgSettings.js @@ -15,7 +15,7 @@ import { export const updateAgSettings = async (username, projectName, data, font, fontSize = 1) => { logger.debug('updateAgSettings.js', 'In updateAgSettings'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const result = Object.keys(data.ingredients).filter((key) => key.includes(environment.PROJECT_SETTING_FILE)); const folder = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName, result[0]); diff --git a/renderer/src/core/projects/userSettings.js b/renderer/src/core/projects/userSettings.js index 01b12e83..c994ba9a 100644 --- a/renderer/src/core/projects/userSettings.js +++ b/renderer/src/core/projects/userSettings.js @@ -8,7 +8,7 @@ export const readUserSettings = async () => { logger.debug('userSettings.js', 'In readUserSettings'); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, environment.USER_SETTING_FILE); @@ -32,7 +32,7 @@ export const readJsonFiles = async (fileType, dirName = 'ingredients') => { logger.debug('userSettings.js', 'In readSettings'); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); let filePath; @@ -72,7 +72,7 @@ export const saveJsonFiles = async (data, fileType, dirName = 'ingredients') => logger.debug('userSettings.js', 'In saveUserSettings'); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, 'projects'); let filePath; @@ -101,7 +101,7 @@ export const saveUserSettings = async (userSettingsJson) => { logger.debug('userSettings.js', 'In saveUserSettings'); const currentUser = await localForage.getItem('userProfile'); const newpath = localStorage.getItem('userPath'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); const file = path.join(newpath, packageInfo.name, 'users', currentUser.username, environment.USER_SETTING_FILE); await fs.writeFileSync(file, JSON.stringify(userSettingsJson)); diff --git a/renderer/src/core/reference/readCustomResources.js b/renderer/src/core/reference/readCustomResources.js index 1a2a4715..b5a0a6f5 100644 --- a/renderer/src/core/reference/readCustomResources.js +++ b/renderer/src/core/reference/readCustomResources.js @@ -14,7 +14,7 @@ export async function readCustomResources({ resourceId, translationData }) { // {id: 'tw', resourceType: "translationWords"}, // { id: 'obs-tq', resourceType: 'obsTranslationQuestions' }, ]; - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); const userProfile = await localforage.getItem('userProfile'); const currentUser = userProfile.username; diff --git a/renderer/src/core/reference/readIngredients.js b/renderer/src/core/reference/readIngredients.js index d6826e84..d0a1801a 100644 --- a/renderer/src/core/reference/readIngredients.js +++ b/renderer/src/core/reference/readIngredients.js @@ -4,7 +4,7 @@ export const readIngredients = async ({ filePath, }) => { logger.debug('readIngreadients.js', 'In readIngredients'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); return new Promise((resolve) => { if (fs.existsSync(filePath)) { diff --git a/renderer/src/core/reference/readRefBurrito.js b/renderer/src/core/reference/readRefBurrito.js index 1f853c2a..73f56fe1 100644 --- a/renderer/src/core/reference/readRefBurrito.js +++ b/renderer/src/core/reference/readRefBurrito.js @@ -8,7 +8,7 @@ export const readRefBurrito = async ({ }) => { if (isElectron()) { logger.debug('readRefBurrito.js', 'In readRefBurrito'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); return new Promise((resolve) => { if (fs.existsSync(metaPath)) { diff --git a/renderer/src/core/reference/readRefMeta.js b/renderer/src/core/reference/readRefMeta.js index e87a3834..2c732266 100644 --- a/renderer/src/core/reference/readRefMeta.js +++ b/renderer/src/core/reference/readRefMeta.js @@ -8,7 +8,7 @@ export const readRefMeta = async ({ projectsDir, }) => { if (isElectron()) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const path = require('path'); return new Promise((resolve) => { if (fs.existsSync(projectsDir)) { diff --git a/renderer/src/core/reference/readmanifest.js b/renderer/src/core/reference/readmanifest.js index e8a28ed3..36d44fd3 100644 --- a/renderer/src/core/reference/readmanifest.js +++ b/renderer/src/core/reference/readmanifest.js @@ -5,7 +5,7 @@ import { environment } from '../../../environment'; const path = require('path'); export async function readCustomResources({ resourceId }) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); let currentUser; await localforage.getItem('userProfile').then((value) => { diff --git a/renderer/src/core/reference/writeCustomResources.js b/renderer/src/core/reference/writeCustomResources.js index d56a54fb..994a2a46 100644 --- a/renderer/src/core/reference/writeCustomResources.js +++ b/renderer/src/core/reference/writeCustomResources.js @@ -5,7 +5,7 @@ import { environment } from '../../../environment'; const path = require('path'); export async function writeCustomResources({ resourceUrl }) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); let currentUser; await localforage.getItem('userProfile').then((value) => { diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index ad07bed6..ace7c4a0 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -97,7 +97,7 @@ function messageToPeople(json) { function createSection(folder, pickerJson) { const path = require('path'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const fixedPath = fixPath(folder); let projects; @@ -502,7 +502,7 @@ export default function InnerFramePopup() { }, [nameFile]); useEffect(() => { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const os = window.require('os'); const path = window.require('path'); @@ -819,7 +819,7 @@ export default function InnerFramePopup() { } } onClick={async () => { - const executablePath = await global.ipcRenderer.invoke('get-browser-path'); + let executablePath = await global.ipcRenderer.invoke('get-browser-path'); let browser; if (jsonValidation.length === 0) { try { @@ -827,14 +827,11 @@ export default function InnerFramePopup() { headless: 'new', args: [ '--disable-web-security', - '--no-sandbox', - '--disable-setuid-sandbox', ], - ignoreDefaultArgs: ['--disable-extensions'], executablePath, }); } catch (err) { - console.log('Puppeteer falling back to no-sandbox'); + logger.error('InnerFramePopup.js', 'Puppeteer falling back to no-sandbox'); browser = await global.puppeteer.launch({ headless: 'new', args: [ @@ -842,21 +839,12 @@ export default function InnerFramePopup() { '--no-sandbox', '--disable-setuid-sandbox', ], - ignoreDefaultArgs: ['--disable-extensions'], executablePath, }); } setMessagePrint(''); setMessagePrint('Generating Pdf ...'); try { - // setMessagePrint((prev) => `${prev }\nInstanciating browser ... `); - // let browser = await global.puppeteer.connect({ - // // browserURL: 'http://localhost:8000', - // browserWSEndpoint: wsEndpoint, - // // defaultViewport: null - // }); - console.log('browser ok! : browser.version()', await browser.version()); - // const browser = await ipcRenderer.invoke('instanciate-browserpie'); setMessagePrint((prev) => `${prev}\nInstanciating pdfGen`); const pdfGen = new global.PdfGenStatic( { ...JSON.parse(kitchenFaucet), browser }, diff --git a/renderer/src/layouts/editor/SectionContainer.js b/renderer/src/layouts/editor/SectionContainer.js index 4acaaae9..4e4415eb 100644 --- a/renderer/src/layouts/editor/SectionContainer.js +++ b/renderer/src/layouts/editor/SectionContainer.js @@ -22,7 +22,7 @@ const SectionContainer = () => { const username = value?.username; localforage.getItem('currentProject').then((projectName) => { const path = require('path'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); const metaPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName, 'metadata.json'); const data = fs.readFileSync(metaPath, 'utf-8'); diff --git a/renderer/src/layouts/editor/SectionPlaceholder1.js b/renderer/src/layouts/editor/SectionPlaceholder1.js index 44adfcf2..eb39a744 100644 --- a/renderer/src/layouts/editor/SectionPlaceholder1.js +++ b/renderer/src/layouts/editor/SectionPlaceholder1.js @@ -288,11 +288,11 @@ const SectionPlaceholder1 = ({ editor }) => { // if (isElectron()) { localforage.getItem('userProfile').then(async (user) => { if (_obsNavigation1 && referenceColumnOneData1.refName && referenceColumnOneData1.selectedResource === 'obs') { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); setStories1(core(fs, _obsNavigation1, referenceColumnOneData1.refName, user.username)); } if (_obsNavigation2 && referenceColumnOneData2.refName && referenceColumnOneData2.selectedResource === 'obs') { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); setStories2(core(fs, _obsNavigation2, referenceColumnOneData2.refName, user.username)); } }); diff --git a/renderer/src/layouts/editor/SectionPlaceholder2.js b/renderer/src/layouts/editor/SectionPlaceholder2.js index 70297a36..cde0d258 100644 --- a/renderer/src/layouts/editor/SectionPlaceholder2.js +++ b/renderer/src/layouts/editor/SectionPlaceholder2.js @@ -290,11 +290,11 @@ const SectionPlaceholder2 = ({ editor }) => { useEffect(() => { localforage.getItem('userProfile').then((user) => { if (_obsNavigation1 && referenceColumnTwoData1.refName && referenceColumnTwoData1.selectedResource === 'obs') { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); setStories1(core(fs, _obsNavigation1, referenceColumnTwoData1.refName, user.username)); } if (_obsNavigation2 && referenceColumnTwoData2.refName && referenceColumnTwoData2.selectedResource === 'obs') { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); setStories2(core(fs, _obsNavigation2, referenceColumnTwoData2.refName, user.username)); } }); diff --git a/renderer/src/layouts/editor/SubMenuBar.js b/renderer/src/layouts/editor/SubMenuBar.js index d5ac98b2..31c29817 100644 --- a/renderer/src/layouts/editor/SubMenuBar.js +++ b/renderer/src/layouts/editor/SubMenuBar.js @@ -131,7 +131,7 @@ export default function SubMenuBar() { const username = value?.username; localforage.getItem('currentProject').then((projectName) => { const path = require('path'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); const metaPath = path.join(newpath, packageInfo.name, 'users', username, 'projects', projectName, 'metadata.json'); const data = fs.readFileSync(metaPath, 'utf-8'); diff --git a/renderer/src/layouts/editor/pdfGenInterface/PdfPreview.js b/renderer/src/layouts/editor/pdfGenInterface/PdfPreview.js index 09d754f5..2a0097cd 100644 --- a/renderer/src/layouts/editor/pdfGenInterface/PdfPreview.js +++ b/renderer/src/layouts/editor/pdfGenInterface/PdfPreview.js @@ -12,7 +12,7 @@ // //This component is te pdf preview view, it is mostly a place holder for now // export function PdfPreview() { // const path = require('path'); -// const fs = window.require('graceful-fs'); +// const fs = window.require('fs'); // const [zoom, setZoom] = useState(1); // const [numPages, setNumPages] = useState(); // const [pageNumber, setPageNumber] = useState(1); diff --git a/renderer/src/layouts/projects/Export/ExportProjectPopUp.js b/renderer/src/layouts/projects/Export/ExportProjectPopUp.js index 3f114bb3..c253b12b 100644 --- a/renderer/src/layouts/projects/Export/ExportProjectPopUp.js +++ b/renderer/src/layouts/projects/Export/ExportProjectPopUp.js @@ -162,7 +162,7 @@ export default function ExportProjectPopUp(props) { }; const exportBible = async () => { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if (folderPath && fs.existsSync(folderPath)) { setValid(false); logger.debug('ExportProjectPopUp.js', 'Inside exportBible'); diff --git a/renderer/src/layouts/projects/Import/ConflictResolverUI.jsx b/renderer/src/layouts/projects/Import/ConflictResolverUI.jsx index 8d20d95f..fa557270 100644 --- a/renderer/src/layouts/projects/Import/ConflictResolverUI.jsx +++ b/renderer/src/layouts/projects/Import/ConflictResolverUI.jsx @@ -53,7 +53,7 @@ function ConflictResolverUI({ conflictData, setConflictPopup }) { const abortConflictResolution = async (conflictData) => { logger.debug('conflictResolverUI.jsx', 'in abort conflict'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); modelClose(); setConflictPopup({ open: false, diff --git a/renderer/src/layouts/projects/Import/mergeObsUtils.js b/renderer/src/layouts/projects/Import/mergeObsUtils.js index 0775f1c9..a14add8b 100644 --- a/renderer/src/layouts/projects/Import/mergeObsUtils.js +++ b/renderer/src/layouts/projects/Import/mergeObsUtils.js @@ -10,7 +10,7 @@ import OBSBack from '../../../lib/OBSback.md'; const path = require('path'); export async function parseObs(conflictData, selectedFileName) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const filePath = path.join(conflictData.data.mergeDirPath, selectedFileName); @@ -160,7 +160,7 @@ export async function updateAndSaveStory(story, currentUser, projectName, mergeD let title; let body = ''; let end; const path = require('path'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); story.forEach((s) => { if (Object.prototype.hasOwnProperty.call(s, 'title')) { @@ -185,7 +185,7 @@ export async function createAllMdInDir(dirPath) { try { // function to create 50 md story in a dir logger.debug('mergeObsUtils.js', 'Inside createAllMd - create empty md in a dir'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); await OBSData.forEach(async (storyJson) => { const currentFileName = `${storyJson.storyId.toString().padStart(2, 0)}.md`; const file = await JsonToMd(storyJson, ''); @@ -210,7 +210,7 @@ export async function createAllMdInDir(dirPath) { export async function copyFilesTempToOrginal(conflictData) { try { const path = require('path'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const fse = window.require('fs-extra'); // copy all md from merge main to project main diff --git a/renderer/src/layouts/projects/Import/mergeProject.js b/renderer/src/layouts/projects/Import/mergeProject.js index 938ceba4..bbd3d5d3 100644 --- a/renderer/src/layouts/projects/Import/mergeProject.js +++ b/renderer/src/layouts/projects/Import/mergeProject.js @@ -49,7 +49,7 @@ export const mergeProject = async (incomingPath, currentUser, setConflictPopup, const tempMergeIncoming = 'merge-incoming'; const mainBranch = `${packageInfo.name}-main`; let currentActiveBranch = mainBranch; - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const fse = window.require('fs-extra'); // read incoming meta let incomingMeta = await readIngredients({ diff --git a/renderer/src/layouts/projects/ImportProjectPopUp.js b/renderer/src/layouts/projects/ImportProjectPopUp.js index 71fc3d37..8d3b9080 100644 --- a/renderer/src/layouts/projects/ImportProjectPopUp.js +++ b/renderer/src/layouts/projects/ImportProjectPopUp.js @@ -109,7 +109,7 @@ export default function ImportProjectPopUp(props) { const removeExtractedZipDir = async() => { const path = require('path'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); // delete the extracted zip file after successfull / failed import if(importingIsZip && folderPath) { setImportingIsZip(false) @@ -138,7 +138,7 @@ export default function ImportProjectPopUp(props) { setImportProgress((prev)=>({...prev, importStarted:true, completedSteps: prev.completedSteps + 1 })) logger.debug('ImportProjectPopUp.js', 'Inside callImport'); const path = require('path'); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); await localforage.getItem('userProfile').then(async (value) => { const status = await importBurrito(folderPath, value.username, updateBurriot, languages); // delete the extracted zip file after successfull / failed import diff --git a/renderer/src/modules/projects/hooks/useEditProject.js b/renderer/src/modules/projects/hooks/useEditProject.js index 485ffa06..19979144 100644 --- a/renderer/src/modules/projects/hooks/useEditProject.js +++ b/renderer/src/modules/projects/hooks/useEditProject.js @@ -26,7 +26,7 @@ const useEditProject = () => { const userProfile = await localforage.getItem('userProfile'); if (isElectron()) { - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); const newpath = localStorage.getItem('userPath'); folder = path.join(newpath, packageInfo.name, 'users', userProfile.username, 'projects', `${project.name}_${project.id[0]}`); data = fs.readFileSync(path.join(folder, 'metadata.json'), 'utf-8'); diff --git a/renderer/src/util/createAudioVersification.js b/renderer/src/util/createAudioVersification.js index 98efa4af..aec228e7 100644 --- a/renderer/src/util/createAudioVersification.js +++ b/renderer/src/util/createAudioVersification.js @@ -33,7 +33,7 @@ export const createAudioVersification = ( logger.debug('createAudioVersification.js', 'Creating the files with selected scheme'); // eslint-disable-next-line import/no-dynamic-require const file = require(`../lib/versification/${scheme.file}`); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } diff --git a/renderer/src/util/createJuxtaContent.js b/renderer/src/util/createJuxtaContent.js index dc02abc5..41f19fae 100644 --- a/renderer/src/util/createJuxtaContent.js +++ b/renderer/src/util/createJuxtaContent.js @@ -38,7 +38,7 @@ export const createJuxtaContent = ( logger.debug('createJuxtaContent.js', `call == ${call}`); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } diff --git a/renderer/src/util/createObsContent.js b/renderer/src/util/createObsContent.js index de8fa232..bd581f5a 100644 --- a/renderer/src/util/createObsContent.js +++ b/renderer/src/util/createObsContent.js @@ -36,7 +36,7 @@ export const createObsContent = ( ingredientsDirName = ingredientsDirName[0].split(/[(\\)?(/)?]/gm).slice(0)[0]; } const folder = path.join(newpath, packageInfo.name, 'users', username, 'projects', `${project.projectName}_${id}`, ingredientsDirName); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); logger.debug('createObsContent.js', 'Creating the story md files'); // eslint-disable-next-line import/no-dynamic-require @@ -46,7 +46,7 @@ export const createObsContent = ( if (bookAvailable(importedFiles, currentFileName)) { logger.debug('createObsContent.js', `${currentFileName} has been Imported`); const file = importedFiles.filter((obj) => (obj.id === currentFileName)); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } @@ -64,7 +64,7 @@ export const createObsContent = ( } else { logger.debug('createObsContent.js', 'Creating the md file using RCL function JsonToMd'); const file = JsonToMd(storyJson, ''); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } @@ -148,7 +148,7 @@ export const createObsContent = ( logger.debug('createObsContent.js', `${file.id} has been Imported`); const currentStory = OBSData.filter((obj) => ( (obj.storyId).toString().padStart(2, 0) === (file.id).split('.')[0])); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); // if (!fs.existsSync(folder)) { // fs.mkdirSync(folder, { recursive: true }); // } diff --git a/renderer/src/util/createVersificationUSFM.js b/renderer/src/util/createVersificationUSFM.js index 89d8cfeb..55524749 100644 --- a/renderer/src/util/createVersificationUSFM.js +++ b/renderer/src/util/createVersificationUSFM.js @@ -55,7 +55,7 @@ export const createVersificationUSFM = ( if (bookAvailable(importedFiles, book)) { logger.debug('createVersificationUSFM.js', `${book} is been Imported`); const file = importedFiles.filter((obj) => (obj.id === book)); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } @@ -101,7 +101,7 @@ export const createVersificationUSFM = ( const isJsonValid = myJsonParser.validate(); if (isJsonValid) { const reCreatedUsfm = myJsonParser.toUSFM(); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); if (!fs.existsSync(folder)) { fs.mkdirSync(folder, { recursive: true }); } @@ -121,7 +121,7 @@ export const createVersificationUSFM = ( } } }); - const fs = window.require('graceful-fs'); + const fs = window.require('fs'); logger.debug('createVersificationUSFM.js', 'Creating versification.json file in ingredients'); await fs.writeFileSync(path.join(folder, 'versification.json'), JSON.stringify(file)); const stats = fs.statSync(path.join(folder, 'versification.json')); From a2750ddefa533369cd3a76d67c3b965625d713e7 Mon Sep 17 00:00:00 2001 From: danielc-n Date: Tue, 1 Oct 2024 14:56:10 +0200 Subject: [PATCH 24/27] resolved last eslint error --- renderer/src/layouts/editor/InnerFramePopup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renderer/src/layouts/editor/InnerFramePopup.js b/renderer/src/layouts/editor/InnerFramePopup.js index ace7c4a0..16bd2b16 100644 --- a/renderer/src/layouts/editor/InnerFramePopup.js +++ b/renderer/src/layouts/editor/InnerFramePopup.js @@ -819,7 +819,7 @@ export default function InnerFramePopup() { } } onClick={async () => { - let executablePath = await global.ipcRenderer.invoke('get-browser-path'); + const executablePath = await global.ipcRenderer.invoke('get-browser-path'); let browser; if (jsonValidation.length === 0) { try { From d89c9358e78052f2960d4612deb0cd514c6e057d Mon Sep 17 00:00:00 2001 From: danielc-n Date: Tue, 1 Oct 2024 15:30:25 +0200 Subject: [PATCH 25/27] removed my branch from yml file --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 3ed5e655..dc6a5b1a 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -5,7 +5,7 @@ name: Node.js CI on: push: - branches: [development, dcn/fix_windows_fs_bug] + branches: [development] jobs: build: From 56e16fe2f75b676cdfd4e50c765f052662976bbb Mon Sep 17 00:00:00 2001 From: danielc-n Date: Tue, 1 Oct 2024 16:31:00 +0200 Subject: [PATCH 26/27] fixed macos install yaml --- .github/workflows/node.js.yml | 131 ++++++++++++++++------------------ 1 file changed, 62 insertions(+), 69 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index dc6a5b1a..c5aab860 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -12,6 +12,7 @@ jobs: runs-on: ubuntu-latest env: CI: false + NODE_OPTIONS: --max-old-space-size=4096 strategy: matrix: node-version: [18.20.3] @@ -31,9 +32,6 @@ jobs: - name: yarn install run: yarn install - - name: set max memory allocation - run: export NODE_OPTIONS=-max_old_space_size=4096 - - name: package id: package run: | @@ -53,6 +51,7 @@ jobs: runs-on: ubuntu-latest env: CI: false + NODE_OPTIONS: --max-old-space-size=4096 strategy: matrix: node-version: [18.20.3] @@ -70,9 +69,6 @@ jobs: - name: set @bitregistry translation-help run: yarn config set '@bit:registry' https://node.bit.dev - - name: set max memory allocation - run: export NODE_OPTIONS=-max_old_space_size=4096 - - name: install dependencies run: yarn install @@ -96,66 +92,63 @@ jobs: path: artifacts overwrite: true # Commented the below code for getting the binaries build for windows and Ubuntu - # build-mac: - # runs-on: macos-latest - # env: - # CI: false - # strategy: - # matrix: - # node-version: [18.20.3] - - # steps: - # - uses: actions/checkout@v2 - # - name: Use Node.js 18.20.3 - # uses: actions/setup-node@v1 - # with: - # node-version: 18.20.3 - # - run: | - # node --version - # yarn --version - # - name: Increase file descriptor limit - # run: sudo sysctl -w kern.maxfiles=10485760 && sudo sysctl -w kern.maxfilesperproc=1048576 - # - name: set @bitregistry translation-help - # run: yarn config set '@bit:registry' https://node.bit.dev - - # - name: Install Homebrew - # run: | - # /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - # echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile - # eval "$(/opt/homebrew/bin/brew shellenv)" - - # - name: Install canvas dependencies - # run: | - # brew install pkg-config cairo pango libpng jpeg giflib librsvg python@3.12 - # brew reinstall jpeg - # echo 'export PATH="/opt/homebrew/opt/jpeg/bin:$PATH"' >> $HOME/.zprofile - # echo 'export LDFLAGS="-L/opt/homebrew/opt/jpeg/lib"' >> $HOME/.zprofile - # echo 'export CPPFLAGS="-I/opt/homebrew/opt/jpeg/include"' >> $HOME/.zprofile - # echo 'export PKG_CONFIG_PATH="/opt/homebrew/opt/jpeg/lib/pkgconfig"' >> $HOME/.zprofile - # eval "$(/opt/homebrew/bin/brew shellenv)" - # brew install python-setuptools - - - # - name: set max memory allocation - # run: export NODE_OPTIONS=-max_old_space_size=4096 - - # - name: yarn install - # run: yarn install --verbose - - # - name: install dmg-license - # run: yarn add dmg-license - - # - name: package - # id: package - # run: | - # yarn dist - - # - name: Cleanup artifacts - # run: | - # npx rimraf "dist/!(*.deb|*.AppImage|*.dmg)" - # - name: Upload artifacts - # uses: actions/upload-artifact@v4 - # with: - # name: Scribe-${{ github.run_id }}-${{ github.sha }} - # path: dist - # overwrite: true \ No newline at end of file + build-mac: + runs-on: macos-latest + env: + CI: false + NODE_OPTIONS: --max-old-space-size=4096 + strategy: + matrix: + node-version: [18.20.3] + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js 18.20.3 + uses: actions/setup-node@v1 + with: + node-version: 18.20.3 + - run: | + node --version + yarn --version + - name: Increase file descriptor limit + run: sudo sysctl -w kern.maxfiles=10485760 && sudo sysctl -w kern.maxfilesperproc=1048576 + - name: set @bitregistry translation-help + run: yarn config set '@bit:registry' https://node.bit.dev + + - name: Install Homebrew + run: | + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile + eval "$(/opt/homebrew/bin/brew shellenv)" + + - name: Install canvas dependencies + run: | + brew install pkg-config cairo pango libpng jpeg giflib librsvg python@3.12 + brew reinstall jpeg + echo 'export PATH="/opt/homebrew/opt/jpeg/bin:$PATH"' >> $HOME/.zprofile + echo 'export LDFLAGS="-L/opt/homebrew/opt/jpeg/lib"' >> $HOME/.zprofile + echo 'export CPPFLAGS="-I/opt/homebrew/opt/jpeg/include"' >> $HOME/.zprofile + echo 'export PKG_CONFIG_PATH="/opt/homebrew/opt/jpeg/lib/pkgconfig"' >> $HOME/.zprofile + eval "$(/opt/homebrew/bin/brew shellenv)" + brew install python-setuptools + + - name: yarn install + run: yarn install + + - name: install dmg-license + run: yarn add dmg-license + + - name: package + id: package + run: | + yarn dist + + - name: Cleanup artifacts + run: | + npx rimraf "dist/!(*.deb|*.AppImage|*.dmg)" + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: Scribe-${{ github.run_id }}-${{ github.sha }} + path: dist + overwrite: true \ No newline at end of file From ec5758f8eaafa62085a7132df46f4e7bda3fe68e Mon Sep 17 00:00:00 2001 From: danielc-n Date: Tue, 1 Oct 2024 18:34:09 +0200 Subject: [PATCH 27/27] last fix for this to work on all platforms --- main/index.js | 90 +++++++++++++++++---------------------------------- 1 file changed, 30 insertions(+), 60 deletions(-) diff --git a/main/index.js b/main/index.js index 786ffce4..410e69c7 100755 --- a/main/index.js +++ b/main/index.js @@ -21,19 +21,17 @@ function isDev() { async function setPermissions(chromePath) { try { - fs.chmodSync(chromePath, '755'); // Set the permissions to be executable - console.log(`Permissions set for: ${chromePath}`); + fs.chmodSync(chromePath, '755'); } catch (err) { console.error(`Failed to set permissions for ${chromePath}: `, err); } } function getChromeCacheDir() { - // Use Electron's app.getPath to get the userData directory (persistent) const dataDir = app.getPath('appData'); - // Define a custom subfolder for your app data const chromeDataDir = path.join(dataDir, 'chrome-cache'); + const chromeDataDirFilePath = path.join(chromeDataDir, 'executablePath'); // Create the folder if it doesn't exist try { @@ -41,61 +39,42 @@ function getChromeCacheDir() { } catch (err) { // If the directory doesn't exist, create it fs.mkdirSync(chromeDataDir, { recursive: true }); + fs.appendFileSync(chromeDataDirFilePath, '', 'utf8'); console.log(`Created persistent Chrome data directory at: ${chromeDataDir}`); } return chromeDataDir; } -function getChromeExecutablePath(platform, chromeDir, platformDir) { - let executableName = ''; - if (platform === 'linux') { - executableName = 'chrome-linux64/chrome'; - } else if (platform === 'darwin') { - executableName = 'chrome-mac/Chromium.app/Contents/MacOS/Chromium'; - } else if (platform === 'win64') { - executableName = 'chrome-win64/chrome.exe'; - } - - return path.join(chromeDir, platformDir, executableName); -} - async function verifyAndInstallChrome(version) { - const platform = process.platform === 'win32' ? 'win64' : process.platform; - // Get the persistent directory const cacheDir = getChromeCacheDir(); - const chromeDir = path.join(cacheDir, 'chrome'); - const platformDir = `${platform}-${version}`; - - const chromeExecutablePath = getChromeExecutablePath(platform, chromeDir, platformDir); - + const cacheDirFilePath = path.join(cacheDir, 'executablePath'); // Check if the browser is already installed - try { - fs.accessSync(chromeExecutablePath); - console.log(`Chrome version ${version} is already installed.`); - browserPath = chromeExecutablePath; - } catch (err) { - console.log(`Chrome version ${version} is not installed. Installing now...`); - await install({ - cacheDir, - browser: 'chrome', - buildId: version, - platform, - }).then((res) => { - const installedChromePath = getChromeExecutablePath(platform, chromeDir, platformDir); - if (fs.existsSync(installedChromePath)) { - browserPath = installedChromePath; - console.log(`Chrome version ${version} has been installed to ${browserPath}.`); - } - let bet = res.path; - console.log("## browserPath ==",bet); - setPermissions(browserPath); - }).catch((err) => { - throw new Error(`Failed to install Chrome version ${version}`); - }); + + // fs.accessSync(cacheDirFilePath); + const data = fs.readFileSync(cacheDirFilePath, 'utf8'); + if(data.trim() !== '') { + console.log(`Chrome version ${version} is already installed at '${data}'`); + browserPath = data; + return browserPath; } + console.log(`Chrome version ${version} is not installed. Installing now...`); + await install({ + cacheDir, + browser: 'chrome', + buildId: version, + }).then((res) => { + if (fs.existsSync(res.executablePath)) { + browserPath = res.executablePath; + fs.appendFileSync(cacheDirFilePath, res.executablePath, 'utf8'); + console.log(`Chrome version ${version} has been installed to ${browserPath}.`); + } + setPermissions(browserPath); + }).catch((err) => { + throw new Error(`Failed to install Chrome version ${version} : ${err}`); + }); } // Prepare the renderer once the app is ready @@ -133,20 +112,11 @@ async function createWindow() { autoUpdater.checkForUpdatesAndNotify(); } -// async function instanciateBrowserPuppeteer() { -// console.log("instanciateBrowserPuppeteer call"); -// const browser = await pie.connect(app, puppeteer); -// console.log("browser OK", browser.version()); -// // return browser; -// } - ipcMain.handle('get-browser-path', async (event) => { - if(!browserPath) { - verifyAndInstallChrome('121.0.6167.85').catch(err => { - console.error(`Failed to verify or install Chrome: ${err.message}`); - }); - } - return await browserPath; + await verifyAndInstallChrome('121.0.6167.85').catch(err => { + console.error(`Failed to verify or install Chrome: ${err.message}`); + }); + return browserPath; }); // prevent multiple app window opening