git: d76ff9fb2d41 - main - devel/RStudio: update 2022.12.0+353 → 2025.09.2+418
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 01 Dec 2025 19:39:32 UTC
The branch main has been updated by yuri:
URL: https://cgit.FreeBSD.org/ports/commit/?id=d76ff9fb2d4147615d348152e042c5c4719140a0
commit d76ff9fb2d4147615d348152e042c5c4719140a0
Author: Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2025-12-01 19:39:07 +0000
Commit: Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2025-12-01 19:39:27 +0000
devel/RStudio: update 2022.12.0+353 → 2025.09.2+418
---
devel/RStudio/Makefile | 201 +-
devel/RStudio/distinfo | 12 +-
devel/RStudio/files/Findhunspell.cmake | 25 +
devel/RStudio/files/package-lock-desktop.json | 13705 +++++++++++++++++++
devel/RStudio/files/patch-CMakeGlobals.txt | 46 -
devel/RStudio/files/patch-CMakeLists.txt | 11 +-
devel/RStudio/files/patch-src_cpp_CMakeLists.txt | 34 +-
.../files/patch-src_cpp_core_CMakeLists.txt | 7 +-
.../patch-src_cpp_core_include_core_Database.hpp | 12 +
...rc_cpp_core_include_core_ExponentialBackoff.hpp | 15 +
.../patch-src_cpp_core_include_core_FileLock.hpp | 13 +
...rc_cpp_core_include_core_IncrementalCommand.hpp | 12 +
...h-src_cpp_core_include_core_PeriodicCommand.hpp | 12 +
.../patch-src_cpp_core_include_core_Thread.hpp | 14 +-
.../patch-src_cpp_core_include_core_Timer.hpp | 12 +
...rc_cpp_core_include_core_r__util_RTokenizer.hpp | 2 +
.../files/patch-src_cpp_core_json_JsonRpc.cpp | 11 -
...patch-src_cpp_core_system_PosixChildProcess.cpp | 35 +-
.../patch-src_cpp_core_system_PosixSystem.cpp | 24 +-
...h-src_cpp_desktop_DesktopDownloadItemHelper.cpp | 15 -
.../files/patch-src_cpp_desktop_DesktopMain.cpp | 28 -
.../files/patch-src_cpp_diagnostics_CMakeLists.txt | 2 +
.../RStudio/files/patch-src_cpp_ext_CMakeLists.txt | 161 +
.../files/patch-src_cpp_server_CMakeLists.txt | 6 +-
...patch-src_cpp_server_auth_ServerAuthHandler.cpp | 26 -
.../files/patch-src_cpp_session_CMakeLists.txt | 140 +-
...pp_session_SessionConsoleProcessSocketTests.cpp | 13 +
.../patch-src_cpp_session_SessionHttpMethods.cpp | 6 +-
.../files/patch-src_cpp_session_SessionMain.cpp | 6 +-
.../patch-src_cpp_session_modules_SessionGit.cpp | 18 +-
.../patch-src_cpp_session_postback_CMakeLists.txt | 2 +
.../patch-src_cpp_session_session-config.h.in | 3 +
.../files/patch-src_cpp_shared__core_FilePath.cpp | 15 -
...tch-src_cpp_shared__core_system_PosixSystem.cpp | 14 +-
devel/RStudio/files/patch-src_gwt_build.xml | 54 +
.../files/patch-src_node_CMakeNodeTools.txt | 31 +
.../files/patch-src_node_desktop_CMakeLists.txt | 133 +
.../files/patch-src_node_desktop_forge.config.js | 13 +
...atch-src_node_desktop_scripts_install-fuses.mjs | 41 +
...ode_desktop_src_main_preferences_preferences.ts | 12 +
devel/RStudio/pkg-descr | 16 +-
devel/RStudio/pkg-message | 11 +-
42 files changed, 14615 insertions(+), 354 deletions(-)
diff --git a/devel/RStudio/Makefile b/devel/RStudio/Makefile
index 1a1beb297822..6c6e6c4edacb 100644
--- a/devel/RStudio/Makefile
+++ b/devel/RStudio/Makefile
@@ -3,15 +3,17 @@
PORTNAME= RStudio
DISTVERSIONPREFIX= v
-DISTVERSION= 2022.12.0+353
-PORTREVISION= 11
+DISTVERSION= 2025.09.2+418
CATEGORIES= devel math java
MASTER_SITES= https://s3.amazonaws.com/rstudio-buildtools/dictionaries/:dictionaries \
- https://s3.amazonaws.com/rstudio-buildtools/:buildtools
+ https://rstudio-buildtools.s3.amazonaws.com/rstudio-buildtools/:gin \
+ https://rstudio-buildtools.s3.us-east-1.amazonaws.com/gwt/:gwt \
+ https://github.com/quarto-dev/quarto/archive/:quarto_mono
DISTFILES= core-dictionaries.zip:dictionaries \
- gin-${GIN_VERSION}.zip:buildtools \
- gwt-${GWT_VERSION}.zip:buildtools \
- mathjax-27.zip:buildtools
+ gin-${GIN_VERSION}.zip:gin \
+ gwt-${GWT_VERSION}.tar.gz:gwt \
+ mathjax-27.zip:buildtools \
+ ${QUARTO_MONO_COMMIT}.tar.gz:quarto_mono
MAINTAINER= yuri@FreeBSD.org
COMMENT= Integrated development environment (IDE) for R
@@ -21,27 +23,34 @@ WWW= https://www.rstudio.com/ \
LICENSE= AGPLv3
LICENSE_FILE= ${WRKSRC}/COPYING
-BROKEN= fails to build with Boost>=1.87, see https://github.com/rstudio/rstudio/issues/15862
-BROKEN_i386= [ERROR] Line 101: Failed to resolve 'org.rstudio.studio.client.workbench.views.vcs.common.diff.LineActionButtonRenderer.GrayResources' via deferred binding
+BROKEN_i386= [ERROR] line 101: failed to resolve 'org.rstudio.studio.client.workbench.views.vcs.common.diff.LineActionButtonRenderer.GrayResources' via deferred binding
BUILD_DEPENDS= ant:devel/apache-ant \
${LOCALBASE}/include/sys/sysinfo.h:devel/libsysinfo \
node:www/node \
pandoc:textproc/hs-pandoc \
- R-cran-rstudioapi>0:devel/R-cran-rstudioapi
+ R-cran-rstudioapi>0:devel/R-cran-rstudioapi \
+ ${LOCALBASE}/include/gsl/gsl-lite.hpp:devel/gsl-lite \
+ ${LOCALBASE}/include/rapidjson/rapidjson.h:devel/rapidjson \
+ ${LOCALBASE}/include/websocketpp/version.hpp:devel/websocketpp \
+ ${LOCALBASE}/include/tl/expected.hpp:devel/tl-expected
LIB_DEPENDS= libR.so:math/R \
libboost_thread.so:devel/boost-libs \
libinotify.so:devel/libinotify \
libsoci_core.so:databases/soci \
libuuid.so:misc/libuuid \
- libyaml-cpp.so:devel/yaml-cpp
+ libyaml-cpp.so:devel/yaml-cpp \
+ libfmt.so:devel/libfmt \
+ libhunspell-1.7.so:textproc/hunspell
+BUILD_DEPENDS+= quarto:textproc/quarto
+RUN_DEPENDS= quarto:textproc/quarto
FLAVORS= desktop server
FLAVOR?= ${FLAVORS:[1]}
server_PKGNAMESUFFIX= -server
USES= cmake fortran java:build localbase:ldflags pgsql pkgconfig sqlite ssl
-JAVA_VERSION= 11 # Java 8 fails on aarch64: Internal Error (assembler_aarch64.hpp:237), pid=1644, tid=0x00000000000c62b6 guarantee(val < (1U << nbits)) failed: Field too big for insn
+JAVA_VERSION= 17 # Build requires Java 17 target
USE_GITHUB= yes
GH_PROJECT= ${PORTNAME:tl}
GH_TUPLE= rstudio:r2d3:v0.2.0:r2d3/dependencies/common/r2d3 \
@@ -50,33 +59,63 @@ GH_TUPLE= rstudio:r2d3:v0.2.0:r2d3/dependencies/common/r2d3 \
trestletech:plumber:v0.4.6:plumber/dependencies/common/plumber
CMAKE_ARGS= -DFREEBSD_RSTUDIO_VERSION:STRING=${PORTVERSION} \
- -DFREEBSD_LIBDIR:STRING=${PREFIX}/lib
+ -DFREEBSD_LIBDIR:STRING=${PREFIX}/lib \
+ -DRSTUDIO_DEPENDENCIES_QUARTO_DIR:STRING=${LOCALBASE}/share/quarto
CMAKE_ARGS+= -DQT_QMAKE_EXECUTABLE:STRING=${QMAKE}
CMAKE_ARGS+= -DRSTUDIO_BOOST_SIGNALS_VERSION=2
CMAKE_ARGS+= -DFREEBSD_PORT_VERSION:STRING=${DISTVERSION}
CMAKE_ARGS+= -DFREEBSD_LOCALBASE:STRING=${LOCALBASE} # SOCI package is looked up here, see patch patch-src_cpp_CMakeLists.txt
+#CMAKE_ON= RSTUDIO_USE_SYSTEM_DEPENDENCIES
CMAKE_ON= RSTUDIO_USE_SYSTEM_YAML_CPP \
- RSTUDIO_USE_SYSTEM_SOCI
+ RSTUDIO_USE_SYSTEM_BOOST \
+ RSTUDIO_USE_SYSTEM_HUNSPELL \
+ RSTUDIO_USE_SYSTEM_SOCI \
+ RSTUDIO_USE_SYSTEM_FMT \
+ RSTUDIO_USE_SYSTEM_GSL_LITE \
+ RSTUDIO_USE_SYSTEM_RAPIDJSON \
+ RSTUDIO_USE_SYSTEM_WEBSOCKETPP \
+ RSTUDIO_USE_SYSTEM_TL_EXPECTED \
+ RSTUDIO_INSTALL_FREEDESKTOP
+CMAKE_OFF= RSTUDIO_ENABLE_COPILOT \
+ BUILD_TESTING \
+ RSTUDIO_UNIT_TESTS_ENABLED
MAKE_ENV= HOME=${WRKDIR} \
JAVA_HOME=${JAVA_HOME} \
PATH=${JAVA_HOME}/bin:${PATH} \
ANT_OPTS="-Duser.home=${WRKDIR}"
LDFLAGS+= -lexecinfo
-GWT_VERSION= 2.8.1
+GWT_VERSION= 2.12.2 # GWT_VER in src/gwt/tools/build-gwt
GIN_VERSION= 2.1.2
+QUARTO_VERSION= 1.7.32 # Version expected by RStudio for panmirror build
+QUARTO_MONO_COMMIT= 591b3520eafbb4da7b26b9f31aac6948801f19d8 # Commit from quarto monorepo with panmirror
.if ${FLAVOR:U} == desktop
COMMENT+= (desktop UI version)
-USES+= desktop-file-utils qt:5 shared-mime-info
-USE_QT= core dbus declarative gui location network opengl printsupport quickcontrols sensors \
- sql svg webchannel webengine widgets xml xmlpatterns buildtools:build qmake:build
-CMAKE_ARGS+= -DRSTUDIO_TARGET=Desktop
+USES+= desktop-file-utils shared-mime-info
+FETCH_DEPENDS+= npm:www/npm \
+ yarn:www/yarn
+BUILD_DEPENDS+= npm:www/npm \
+ yarn:www/yarn \
+ electron37:devel/electron37 \
+ zip:archivers/zip
+RUN_DEPENDS+= electron37:devel/electron37
+CMAKE_ARGS+= -DRSTUDIO_TARGET=Electron
+MAKE_ENV+= ELECTRON_SKIP_BINARY_DOWNLOAD=1 \
+ npm_config_nodedir=${WRKDIR}/.electron-headers \
+ ELECTRON_ZIP_DIR=${WRKDIR}/.electron-zip
+LDFLAGS+= -linotify
INSTALL_SUBDIR= ${PORTNAME:tl}
EXECUTABLE= ${PORTNAME:tl}
+# npm dependencies are pre-fetched during do-fetch phase
+NPM_DISTDIR= ${DISTDIR}/${PORTNAME}
+NPM_TARBALL= ${PORTNAME}-desktop-node_modules-${DISTVERSION}${EXTRACT_SUFX}
+# quarto/panmirror dependencies (uses yarn workspaces)
+QUARTO_TARBALL= ${PORTNAME}-quarto-node_modules-${DISTVERSION}${EXTRACT_SUFX}
.endif
.if ${FLAVOR:U} == server
+BROKEN= doesn't build with the latest RSTudio version, needs to be fixed
COMMENT+= (web UI version)
CMAKE_ARGS+= -DRSTUDIO_TARGET=Server
LDFLAGS+= -linotify
@@ -88,26 +127,84 @@ USE_RC_SUBR= ${PORTNAME:tl}-server
.endif
OPTIONS_DEFINE= WITH_QUARTO
+OPTIONS_DEFAULT= WITH_QUARTO
WITH_QUARTO_DESC= Build with support for Quarto
-WITH_QUARTO_CMAKE_BOOL= FREEBSD_QUARTO_ENABLED
-WITH_QUARTO_BROKEN= Quarto isn't yet ported
+WITH_QUARTO_CMAKE_BOOL= QUARTO_ENABLED
+
+# Custom fetch for desktop npm dependencies
+.if ${FLAVOR:U} == desktop
+post-fetch:
+ @if ! [ -f ${NPM_DISTDIR}/${NPM_TARBALL} ]; then \
+ ${MKDIR} ${NPM_DISTDIR} && \
+ ${ECHO_MSG} "====> Fetching npm dependencies for desktop..." && \
+ ${MKDIR} /tmp/rstudio-npm-fetch && \
+ ${FETCH_CMD} -q "https://raw.githubusercontent.com/rstudio/rstudio/v${DISTVERSION}/src/node/desktop/package.json" -o /tmp/rstudio-npm-fetch/package.json && \
+ ${FETCH_CMD} -q "https://raw.githubusercontent.com/rstudio/rstudio/v${DISTVERSION}/src/node/desktop/package-lock.json" -o /tmp/rstudio-npm-fetch/package-lock.json && \
+ cd /tmp/rstudio-npm-fetch && \
+ HOME=/tmp/rstudio-npm-fetch npm ci --ignore-scripts && \
+ ${FIND} node_modules -exec ${TOUCH} -h -d 1970-01-01T00:00:00Z {} \; 2>/dev/null; \
+ ${TAR} -czf ${NPM_DISTDIR}/${NPM_TARBALL} node_modules && \
+ ${RM} -rf /tmp/rstudio-npm-fetch && \
+ ${ECHO_MSG} "====> Created npm dependencies tarball"; \
+ fi
+ @if ! [ -f ${NPM_DISTDIR}/${QUARTO_TARBALL} ]; then \
+ ${MKDIR} ${NPM_DISTDIR} && \
+ ${ECHO_MSG} "====> Fetching quarto/panmirror npm dependencies..." && \
+ ${MKDIR} /tmp/rstudio-quarto-fetch && \
+ cd /tmp/rstudio-quarto-fetch && \
+ ${FETCH_CMD} -q "https://github.com/quarto-dev/quarto/archive/${QUARTO_MONO_COMMIT}.tar.gz" -o quarto.tar.gz && \
+ ${TAR} -xzf quarto.tar.gz && \
+ cd quarto-${QUARTO_MONO_COMMIT} && \
+ HOME=/tmp/rstudio-quarto-fetch yarn install --ignore-scripts --network-timeout 240000 && \
+ cd apps/panmirror && PANMIRROR_OUTDIR=dist-rstudio yarn build --minify true --sourcemap true && cd ../.. && \
+ ${FIND} node_modules apps/*/node_modules packages/*/node_modules apps/panmirror/dist-rstudio -exec ${TOUCH} -h -d 1970-01-01T00:00:00Z {} \; 2>/dev/null; \
+ ${TAR} -czf ${NPM_DISTDIR}/${QUARTO_TARBALL} node_modules apps/*/node_modules packages/*/node_modules apps/panmirror/dist-rstudio && \
+ ${RM} -rf /tmp/rstudio-quarto-fetch && \
+ ${ECHO_MSG} "====> Created quarto npm dependencies tarball"; \
+ fi
+.endif
post-extract:
@${MKDIR} ${WRKSRC}/dependencies/dictionaries && ${MV} ${WRKDIR}/en_* ${WRKSRC}/dependencies/dictionaries/
@${MV} ${WRKDIR}/mathjax-* ${WRKSRC}/dependencies/
- @${MKDIR} ${WRKSRC}/src/gwt/lib/gwt && ${MV} ${WRKDIR}/gwt-${GWT_VERSION} ${WRKSRC}/src/gwt/lib/gwt/${GWT_VERSION}
- @${MKDIR} ${WRKSRC}/src/gwt/lib/gin/${GIN_VERSION} && ${MV} ${WRKDIR}/*.jar ${WRKSRC}/src/gwt/lib/gin/${GIN_VERSION}/
+ # GWT libraries go into dependencies/common/gwtproject
+ @${MKDIR} ${WRKSRC}/dependencies/common/gwtproject/gwt && ${MV} ${WRKDIR}/gwt/gwt-rstudio ${WRKSRC}/dependencies/common/gwtproject/gwt/
+ @${MKDIR} ${WRKSRC}/dependencies/common/gwtproject/gin/${GIN_VERSION}
+ @${MV} ${WRKDIR}/gin-${GIN_VERSION}.jar ${WRKSRC}/dependencies/common/gwtproject/gin/${GIN_VERSION}/
+ @${MV} ${WRKDIR}/aopalliance.jar ${WRKSRC}/dependencies/common/gwtproject/gin/${GIN_VERSION}/
+ @${MV} ${WRKDIR}/guice-*.jar ${WRKSRC}/dependencies/common/gwtproject/gin/${GIN_VERSION}/
+ @${MV} ${WRKDIR}/javax.inject.jar ${WRKSRC}/dependencies/common/gwtproject/gin/${GIN_VERSION}/
+ # Copy other gwtproject dependencies from extracted gwt tarball
+ @${MV} ${WRKDIR}/elemental2 ${WRKSRC}/dependencies/common/gwtproject/
+ @${MV} ${WRKDIR}/jsinterop ${WRKSRC}/dependencies/common/gwtproject/
+ @${MV} ${WRKDIR}/jspecify ${WRKSRC}/dependencies/common/gwtproject/
+ # Setup quarto monorepo for panmirror build
+ # Copy entire quarto monorepo structure (needed for yarn workspaces)
+ @${MV} ${WRKDIR}/quarto-${QUARTO_MONO_COMMIT} ${WRKSRC}/src/gwt/lib/quarto
+ # add hunspell discovery module
+ @${CP} ${FILESDIR}/Findhunspell.cmake ${WRKSRC}/cmake/modules
+.if ${FLAVOR:U} == desktop
+ # Extract pre-fetched npm node_modules for desktop electron build
+ @${ECHO_MSG} "====> Extracting pre-fetched npm dependencies..."
+ @cd ${WRKSRC}/src/node/desktop && ${TAR} -xzf ${NPM_DISTDIR}/${NPM_TARBALL}
+ # Extract pre-fetched quarto/panmirror npm dependencies
+ @${ECHO_MSG} "====> Extracting pre-fetched quarto npm dependencies..."
+ @cd ${WRKSRC}/src/gwt/lib/quarto && ${TAR} -xzf ${NPM_DISTDIR}/${QUARTO_TARBALL}
+ # Patch native modules binding.gyp to support FreeBSD (treat as Linux)
+ @${REINPLACE_CMD} "s/'OS==\"linux\"'/'OS==\"linux\" or OS==\"freebsd\"'/" \
+ ${WRKSRC}/src/node/desktop/node_modules/node-system-fonts/binding.gyp
+ # For msgpackr-extract: add FreeBSD support and set compiler to cc
+ @${REINPLACE_CMD} -e "s/\"OS=='linux'\"/\"OS=='linux' or OS=='freebsd'\"/" \
+ -e 's/"os_linux_compiler%": "gcc"/"os_linux_compiler%": "cc"/' \
+ ${WRKSRC}/src/node/desktop/node_modules/msgpackr-extract/binding.gyp
+.endif
post-patch:
+ # quarto node_modules are pre-fetched and extracted
+ # Add Java 17+ compatibility args for GWT/Guice reflection
@${REINPLACE_CMD} -e ' \
- s|target_link_libraries(rstudio|target_link_libraries(rstudio procstat|; \
- s|get_filename_component|#get_filename_component|; \
- s|set(CMAKE_PREFIX_PATH "$${QT_BIN_DIR}//..//lib//cmake")|set(CMAKE_PREFIX_PATH "${LOCALBASE}/lib/cmake")|; \
- s|/usr/share/|${PREFIX}/share/|g' \
- ${WRKSRC}/src/cpp/desktop/CMakeLists.txt
- @${REINPLACE_CMD} -e ' \
- s|</java>|<jvmarg value="-Duser.home=${WRKDIR}"/></java>|' \
+ s|</java>|<jvmarg value="-Duser.home=${WRKDIR}"/><jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED"/></java>|' \
${WRKSRC}/src/gwt/build.xml
@${REINPLACE_CMD} -e ' \
s|rHomePaths.push_back|//rHomePaths.push_back|; \
@@ -116,16 +213,52 @@ post-patch:
@${REINPLACE_CMD} -e ' \
s|<condition property="node.bin" value="../../../$${node.dir}/bin/node">|<condition property="node.bin" value="${LOCALBASE}/bin/node">|' \
${WRKSRC}/src/gwt/build.xml
+ # quarto dependency
+ ${LN} -s ${LOCALBASE}/share/quarto ${WRKSRC}/dependencies/quarto
# add $PREFIX/bin to PATH for the server daemon
.if ${FLAVOR:U} == server
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|' ${WRKSRC}/src/cpp/session/modules/SessionGit.cpp
.endif
+ # correct for boost-1.87+ class replacement
+ @${FIND} ${WRKSRC} -name "*.cpp" -o -name "*.hpp" | ${XARGS} ${REINPLACE_CMD} -i "" -e 's/io_service/io_context/g'
pre-build:
- @${CP} ${FILESDIR}/global-setenv.h ${WRKSRC}/src/cpp/desktop/
- @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' ${WRKSRC}/src/cpp/desktop/global-setenv.h
+ #@${CP} ${FILESDIR}/global-setenv.h ${WRKSRC}/src/cpp/desktop/
+ #@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' ${WRKSRC}/src/cpp/desktop/global-setenv.h
+.if ${FLAVOR:U} == desktop
+ # Create proper electron headers structure for node-gyp
+ # node-gyp expects common.gypi at root and headers at include/node
+ @${MKDIR} ${WRKDIR}/.electron-headers
+ @${LN} -sf ${LOCALBASE}/share/electron37/node_headers/include ${WRKDIR}/.electron-headers/include
+ @${LN} -sf ${LOCALBASE}/share/electron37/node_headers/include/node/common.gypi ${WRKDIR}/.electron-headers/common.gypi
+ # Create electron ZIP for electron-packager (expects electron-v{VERSION}-linux-x64.zip)
+ @${MKDIR} ${WRKDIR}/.electron-zip
+ @cd ${LOCALBASE}/share/electron37 && zip -rq ${WRKDIR}/.electron-zip/electron-v37.6.1-linux-x64.zip \
+ electron chromedriver *.so *.pak *.bin *.json locales resources version LICENSE LICENSES.chromium.html
+.endif
post-install:
+.if ${FLAVOR:U} == desktop
+ # Desktop flavor: create launcher script that uses electron37
+ @(echo "#!/bin/sh"; \
+ echo ""; \
+ echo "if ! [ -d /proc/curproc ]; then"; \
+ echo " echo \"${PORTNAME} needs /proc to be mounted as procfs\" >&2"; \
+ echo " exit 1"; \
+ echo "fi"; \
+ echo ""; \
+ echo "# Environment setup"; \
+ echo "export LD_PRELOAD=${PREFIX}/lib/gcc${GCC_DEFAULT}/libgcc_s.so"; \
+ echo "export JAVA_HOME=${JAVA_HOME}"; \
+ echo "export ELECTRON_IS_DEV=0"; \
+ echo "export ELECTRON_FORCE_IS_PACKAGED=true"; \
+ echo ""; \
+ echo "exec ${PREFIX}/bin/electron37 ${PREFIX}/resources/app \"\$$@\"" \
+ ) > ${STAGEDIR}${PREFIX}/bin/${EXECUTABLE}
+ @${CHMOD} +x ${STAGEDIR}${PREFIX}/bin/${EXECUTABLE}
+ -${REINPLACE_CMD} -i '' -e 's|^Exec=.*/rstudio|Exec=${PREFIX}/bin/${EXECUTABLE}|' ${STAGEDIR}${PREFIX}/share/applications/${EXECUTABLE}.desktop 2>/dev/null || true
+.else
+ # Server flavor: create launcher script for rserver
@(echo "#!/bin/sh"; \
echo ""; \
echo "if ! [ -d /proc/curproc ]; then"; \
@@ -134,15 +267,15 @@ post-install:
echo "fi"; \
echo ""; \
echo "# workaround for the problem that RStudio passes /lib with LD_LIBRARY_PATH that causes the /lib/libgcc_s.so.1 conflict with gcc"; \
- echo "LD_PRELOAD=${PREFIX}/lib/gcc${GCC_DEFAULT}/libgcc_s.so JAVA_HOME=${JAVA_HOME} ${PREFIX}/lib/${INSTALL_SUBDIR}/bin/${EXECUTABLE} \"$$"@"\"" \
+ echo "LD_PRELOAD=${PREFIX}/lib/gcc${GCC_DEFAULT}/libgcc_s.so JAVA_HOME=${JAVA_HOME} ${PREFIX}/lib/${INSTALL_SUBDIR}/bin/${EXECUTABLE} \"\$$@\"" \
) > ${STAGEDIR}${PREFIX}/bin/${EXECUTABLE}
@${CHMOD} +x ${STAGEDIR}${PREFIX}/bin/${EXECUTABLE}
-.if ${FLAVOR:U} == desktop
- ${REINPLACE_CMD} -i '' -e 's|^Exec=.*/rstudio|Exec=${PREFIX}/bin/${EXECUTABLE}|' ${STAGEDIR}${PREFIX}/share/applications/${EXECUTABLE}.desktop
.endif
.if ${FLAVOR:U} == server
${RM} ${STAGEDIR}${LOCALBASE}/lib/${INSTALL_SUBDIR}/bin/rstudio-server # not compatible with FreeBSD
.endif
+ # Remove quarto files since quarto is installed by the quarto port
+ ${RM} -rf ${STAGEDIR}${PREFIX}/bin/quarto
# Some functions expect the pandoc symlink.
@${MKDIR} ${STAGEDIR}${PREFIX}/lib/${INSTALL_SUBDIR}/bin/pandoc
@cd ${STAGEDIR}${PREFIX}/lib/${INSTALL_SUBDIR}/bin/pandoc && ${LN} -s ../../../../bin/pandoc
diff --git a/devel/RStudio/distinfo b/devel/RStudio/distinfo
index 5b7326f0a4e5..203234b4cc7d 100644
--- a/devel/RStudio/distinfo
+++ b/devel/RStudio/distinfo
@@ -1,14 +1,16 @@
-TIMESTAMP = 1672353588
+TIMESTAMP = 1764480214
SHA256 (core-dictionaries.zip) = 4341a9630efb9dcf7f215c324136407f3b3d6003e1c96f2e5e1f9f14d5787494
SIZE (core-dictionaries.zip) = 876339
SHA256 (gin-2.1.2.zip) = b98e704164f54be596779696a3fcd11be5785c9907a99ec535ff6e9525ad5f9a
SIZE (gin-2.1.2.zip) = 1341053
-SHA256 (gwt-2.8.1.zip) = 0b7af89fdadb4ec51cdb400ace94637d6fe9ffa401b168e2c3d372392a00a0a7
-SIZE (gwt-2.8.1.zip) = 95650299
+SHA256 (gwt-2.12.2.tar.gz) = 27284accdad05ff8919a7ac6dc5f939a511a90842a35f6393517506d74809e76
+SIZE (gwt-2.12.2.tar.gz) = 96737661
SHA256 (mathjax-27.zip) = c56cbaa6c4ce03c1fcbaeb2b5ea3c312d2fb7626a360254770cbcb88fb204176
SIZE (mathjax-27.zip) = 3285230
-SHA256 (RStudio-rstudio-v2022.12.0+353_GH0.tar.gz) = e4f3503e2ad4229301360f56fd5288e5c8e769c490073dae7fe40366237ecce0
-SIZE (RStudio-rstudio-v2022.12.0+353_GH0.tar.gz) = 266546261
+SHA256 (591b3520eafbb4da7b26b9f31aac6948801f19d8.tar.gz) = 443f0003c06cc451b47650944b55494825e4378fd3554b50e52e4c204e2de7a2
+SIZE (591b3520eafbb4da7b26b9f31aac6948801f19d8.tar.gz) = 5855683
+SHA256 (RStudio-rstudio-v2025.09.2+418_GH0.tar.gz) = 7e64e65bd3457855e981698dfb61f84e23de0d8bfcb2b1ffc28a38b5b964a769
+SIZE (RStudio-rstudio-v2025.09.2+418_GH0.tar.gz) = 192101135
SHA256 (rstudio-r2d3-v0.2.0_GH0.tar.gz) = 6355a7632134c8c9487056019a9c458db2c98d10388cf66b018d5461d0a947af
SIZE (rstudio-r2d3-v0.2.0_GH0.tar.gz) = 21977747
SHA256 (rstudio-rmarkdown-aed26ac_GH0.tar.gz) = b6f6f48dd9930514204739d8957c2737f0b1d110aebf9f89fa31de10598cb29b
diff --git a/devel/RStudio/files/Findhunspell.cmake b/devel/RStudio/files/Findhunspell.cmake
new file mode 100644
index 000000000000..8bb031f34273
--- /dev/null
+++ b/devel/RStudio/files/Findhunspell.cmake
@@ -0,0 +1,25 @@
+# - Try to find HUNSPELL
+# Once done this will define
+#
+# HUNSPELL_FOUND - system has HUNSPELL
+# HUNSPELL_INCLUDE_DIR - the HUNSPELL include directory
+# HUNSPELL_LIBRARIES - The libraries needed to use HUNSPELL
+# HUNSPELL_DEFINITIONS - Compiler switches required for using HUNSPELL
+
+
+IF (HUNSPELL_INCLUDE_DIR AND HUNSPELL_LIBRARIES)
+ # Already in cache, be silent
+ SET(HUNSPELL_FIND_QUIETLY TRUE)
+ENDIF (HUNSPELL_INCLUDE_DIR AND HUNSPELL_LIBRARIES)
+
+FIND_PATH(HUNSPELL_INCLUDE_DIR hunspell/hunspell.hxx )
+
+FIND_LIBRARY(HUNSPELL_LIBRARIES NAMES hunspell-2.0 hunspell-1.7 hunspell-1.6 hunspell-1.5 hunspell-1.4 hunspell-1.3 hunspell-1.2)
+
+# handle the QUIETLY and REQUIRED arguments and set HUNSPELL_FOUND to TRUE if
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(HUNSPELL DEFAULT_MSG HUNSPELL_LIBRARIES HUNSPELL_INCLUDE_DIR)
+
+
+MARK_AS_ADVANCED(HUNSPELL_INCLUDE_DIR HUNSPELL_LIBRARIES)
diff --git a/devel/RStudio/files/package-lock-desktop.json b/devel/RStudio/files/package-lock-desktop.json
new file mode 100644
index 000000000000..3c99445a5d72
--- /dev/null
+++ b/devel/RStudio/files/package-lock-desktop.json
@@ -0,0 +1,13705 @@
+{
+ "name": "rstudio",
+ "version": "99.9.9-dev+999",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "rstudio",
+ "version": "99.9.9-dev+999",
+ "hasInstallScript": true,
+ "license": "AGPL-3.0-only",
+ "dependencies": {
+ "@electron/fuses": "1.8.0",
+ "@vueuse/core": "13.1.0",
+ "crc": "4.3.2",
+ "electron-store": "10.1.0",
+ "i18next": "25.0.2",
+ "line-reader": "0.4.0",
+ "lodash.debounce": "4.0.8",
+ "net-ipc": "2.2.0",
+ "node-abi": "4.8.0",
+ "node-addon-api": "8.3.1",
+ "node-system-fonts": "1.0.1",
+ "properties-reader": "2.3.0",
+ "semver": "7.7.1",
+ "uuid": "11.1.0",
+ "vue": "3.5.13",
+ "winston": "3.17.0",
+ "winston-syslog": "2.7.1"
+ },
+ "devDependencies": {
+ "@electron-forge/cli": "7.8.1",
+ "@electron-forge/plugin-webpack": "7.8.1",
+ "@electron/packager": "18.3.6",
+ "@eslint/eslintrc": "3.3.1",
+ "@eslint/js": "9.25.1",
+ "@types/chai": "5.2.1",
+ "@types/line-reader": "0.0.37",
+ "@types/lodash.debounce": "4.0.9",
+ "@types/mocha": "10.0.10",
+ "@types/node": "22.15.17",
+ "@types/properties-reader": "2.1.3",
+ "@types/sinon": "17.0.4",
+ "@types/winston-syslog": "2.4.3",
+ "@typescript-eslint/eslint-plugin": "8.31.1",
+ "@typescript-eslint/parser": "8.31.1",
+ "@vercel/webpack-asset-relocator-loader": "1.7.3",
+ "chai": "5.2.0",
+ "copy-webpack-plugin": "13.0.0",
+ "css-loader": "7.1.2",
+ "electron": "37.6.1",
+ "electron-mocha": "13.1.0",
+ "eslint": "9.27.0",
+ "fork-ts-checker-webpack-plugin": "9.1.0",
+ "globals": "16.0.0",
+ "json": "11.0.0",
+ "json-schema-to-typescript": "15.0.4",
+ "lint-staged": "15.5.1",
+ "mocha": "11.7.1",
+ "nan": "2.22.2",
+ "node-loader": "2.1.0",
+ "nyc": "17.1.0",
+ "prettier": "3.5.3",
+ "process": "0.11.10",
+ "sinon": "20.0.0",
+ "style-loader": "4.0.0",
+ "ts-loader": "9.5.2",
+ "ts-node": "10.9.2",
+ "typescript": "5.8.3",
+ "vue-loader": "17.4.2",
+ "webpack": "5.99.7"
+ }
+ },
+ "node_modules/@apidevtools/json-schema-ref-parser": {
+ "version": "11.9.3",
+ "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.9.3.tgz",
+ "integrity": "sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jsdevtools/ono": "^7.1.3",
+ "@types/json-schema": "^7.0.15",
+ "js-yaml": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/philsturgeon"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz",
+ "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
+ "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.4",
+ "@babel/parser": "^7.28.4",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.4",
+ "@babel/types": "^7.28.4",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
+ "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.3",
+ "@babel/types": "^7.28.2",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
+ "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.4"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
+ "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz",
+ "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.3",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.4",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
+ "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@colors/colors": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz",
+ "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "0.3.9"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
+ "node_modules/@dabh/diagnostics": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz",
+ "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@so-ric/colorspace": "^1.1.6",
+ "enabled": "2.0.x",
+ "kuler": "^2.0.0"
+ }
+ },
+ "node_modules/@electron-forge/cli": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.8.1.tgz",
+ "integrity": "sha512-QI3EShutfq9Y+2TWWrPjm4JZM3eSAKzoQvRZdVhAfVpUbyJ8K23VqJShg3kGKlPf9BXHAGvE+8LyH5s2yDr1qA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/malept"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-cli?utm_medium=referral&utm_source=npm_fund"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@electron-forge/core": "7.8.1",
+ "@electron-forge/core-utils": "7.8.1",
+ "@electron-forge/shared-types": "7.8.1",
+ "@electron/get": "^3.0.0",
+ "chalk": "^4.0.0",
+ "commander": "^11.1.0",
+ "debug": "^4.3.1",
+ "fs-extra": "^10.0.0",
+ "listr2": "^7.0.2",
+ "log-symbols": "^4.0.0",
+ "semver": "^7.2.1"
+ },
+ "bin": {
+ "electron-forge": "dist/electron-forge.js",
+ "electron-forge-vscode-nix": "script/vscode.sh",
+ "electron-forge-vscode-win": "script/vscode.cmd"
+ },
+ "engines": {
+ "node": ">= 16.4.0"
+ }
+ },
+ "node_modules/@electron-forge/core": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.8.1.tgz",
+ "integrity": "sha512-jkh0QPW5p0zmruu1E8+2XNufc4UMxy13WLJcm7hn9jbaXKLkMbKuEvhrN1tH/9uGp1mhr/t8sC4N67gP+gS87w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/malept"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-core?utm_medium=referral&utm_source=npm_fund"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@electron-forge/core-utils": "7.8.1",
+ "@electron-forge/maker-base": "7.8.1",
+ "@electron-forge/plugin-base": "7.8.1",
+ "@electron-forge/publisher-base": "7.8.1",
+ "@electron-forge/shared-types": "7.8.1",
+ "@electron-forge/template-base": "7.8.1",
+ "@electron-forge/template-vite": "7.8.1",
+ "@electron-forge/template-vite-typescript": "7.8.1",
+ "@electron-forge/template-webpack": "7.8.1",
+ "@electron-forge/template-webpack-typescript": "7.8.1",
+ "@electron-forge/tracer": "7.8.1",
+ "@electron/get": "^3.0.0",
+ "@electron/packager": "^18.3.5",
+ "@electron/rebuild": "^3.7.0",
+ "@malept/cross-spawn-promise": "^2.0.0",
+ "chalk": "^4.0.0",
+ "debug": "^4.3.1",
+ "fast-glob": "^3.2.7",
+ "filenamify": "^4.1.0",
+ "find-up": "^5.0.0",
+ "fs-extra": "^10.0.0",
+ "global-dirs": "^3.0.0",
+ "got": "^11.8.5",
+ "interpret": "^3.1.1",
+ "jiti": "^2.4.2",
+ "listr2": "^7.0.2",
+ "lodash": "^4.17.20",
+ "log-symbols": "^4.0.0",
+ "node-fetch": "^2.6.7",
+ "rechoir": "^0.8.0",
+ "semver": "^7.2.1",
+ "source-map-support": "^0.5.13",
+ "sudo-prompt": "^9.1.1",
+ "username": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 16.4.0"
+ }
+ },
+ "node_modules/@electron-forge/core-utils": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.8.1.tgz",
+ "integrity": "sha512-mRoPLDNZgmjyOURE/K0D3Op53XGFmFRgfIvFC7c9S/BqsRpovVblrqI4XxPRdNmH9dvhd8On9gGz+XIYAKD3aQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@electron-forge/shared-types": "7.8.1",
+ "@electron/rebuild": "^3.7.0",
+ "@malept/cross-spawn-promise": "^2.0.0",
+ "chalk": "^4.0.0",
+ "debug": "^4.3.1",
+ "find-up": "^5.0.0",
+ "fs-extra": "^10.0.0",
+ "log-symbols": "^4.0.0",
+ "semver": "^7.2.1"
+ },
+ "engines": {
+ "node": ">= 16.4.0"
+ }
+ },
+ "node_modules/@electron-forge/maker-base": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.8.1.tgz",
+ "integrity": "sha512-GUZqschGuEBzSzE0bMeDip65IDds48DZXzldlRwQ+85SYVA6RMU2AwDDqx3YiYsvP2OuxKruuqIJZtOF5ps4FQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@electron-forge/shared-types": "7.8.1",
+ "fs-extra": "^10.0.0",
+ "which": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 16.4.0"
+ }
+ },
+ "node_modules/@electron-forge/plugin-base": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.8.1.tgz",
+ "integrity": "sha512-iCZC2d7CbsZ9l6j5d+KPIiyQx0U1QBfWAbKnnQhWCSizjcrZ7A9V4sMFZeTO6+PVm48b/r9GFPm+slpgZtYQLg==",
*** 14502 LINES SKIPPED ***