Node upgrade 18->22 (#12836)

* node upgrade initial commit

* Removed node-saas and added saas. Fixed the CSS warnings from saas

* add node version 22 to dockerfile and AMI setup script

* change the base image to debian 12

* Update the node version (#12860)

* correction in builder image

* Update ce-production.Dockerfile

* upgrade node to 22.15.1

* server package lock

* package upgrade

* package upgrade

* base directory package upgrade

* revert sentry package upgrade

* fix

* added copy files

* fix dockerfile for copywrite package issue

* removed copy files package

* fix dockerfile for copywrite package issue

---------

Co-authored-by: Kavin Venkatachalam <kavin.saratha@gmail.com>
Co-authored-by: Adish M <adish.madhu@gmail.com>
Co-authored-by: Ajith KV <ajith.jaban@gmail.com>
Co-authored-by: Adish M <44204658+adishM98@users.noreply.github.com>
Co-authored-by: Muhsin Shah C P <muhsinshah21@gmail.com>
This commit is contained in:
Midhun G S 2025-06-17 13:01:46 +05:30 committed by GitHub
parent 643049d10d
commit 175345479a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
32 changed files with 21219 additions and 45082 deletions

View file

@ -33,7 +33,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 18.18.2
node-version: 22.15.1
- name: Set up Git authentication for private submodules
run: |
@ -160,9 +160,9 @@ jobs:
name: screenshots-appbuilder-${{ matrix.edition }}
path: cypress-tests/cypress/screenshots
# Cypress-App-builder-Subpath:
# Cypress-App-builder-Subpath:
# runs-on: ubuntu-22.04
# if: contains(github.event.pull_request.labels.*.name, 'run-cypress') ||
# if: contains(github.event.pull_request.labels.*.name, 'run-cypress') ||
# contains(github.event.pull_request.labels.*.name, 'run-cypress-app-builder-subpath')
# steps:

View file

@ -228,7 +228,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 18.18.2
node-version: 22.15.1
- name: Set up Git authentication for private submodules
run: |
@ -364,7 +364,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 18.18.2
node-version: 22.15.1
- name: Set up Git authentication for private submodules
run: |
@ -512,7 +512,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 18.18.2
node-version: 22.15.1
- name: Set up Git authentication for private submodules
run: |

View file

@ -8,8 +8,8 @@
"typescript",
"typescriptreact"
],
"eslint.format.enable": true,
"editor.formatOnSave": true,
"eslint.format.enable": false,
"editor.formatOnSave": false,
"json.schemas": [
{
"fileMatch": [

View file

@ -1,4 +1,4 @@
FROM node:18.18.2-buster AS builder
FROM node:22.15.1 AS builder
# Fix for JS heap limit allocation issue
ENV NODE_OPTIONS="--max-old-space-size=4096"
@ -50,10 +50,11 @@ ENV TOOLJET_EDITION=ee
COPY ./server/package.json ./server/package-lock.json ./server/
RUN npm --prefix server install
COPY ./server/ ./server/
RUN npm install -g @nestjs/cli
RUN npm install -g @nestjs/cli
RUN npm install -g copyfiles
RUN npm --prefix server run build
FROM node:18.18.2-bullseye
FROM node:22.15.1
RUN apt-get update -yq \
&& apt-get install curl wget gnupg zip -yq \

View file

@ -7,10 +7,12 @@ sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates apt-u
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install 18.18.2
nvm install 22.15.1
sudo ln -s "$(which node)" /usr/bin/node
sudo ln -s "$(which npm)" /usr/bin/npm
sudo npm i -g npm@10.9.2
# Setup openresty
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
echo "deb http://openresty.org/package/ubuntu bionic main" > openresty.list
@ -56,10 +58,10 @@ envsubst "${VARS_TO_SUBSTITUTE}" < /tmp/nginx.conf > /tmp/nginx-substituted.conf
sudo cp /tmp/nginx-substituted.conf /usr/local/openresty/nginx/conf/nginx.conf
# Download and setup postgrest binary
curl -OL https://github.com/PostgREST/postgrest/releases/download/v10.1.1/postgrest-v10.1.1-linux-static-x64.tar.xz
tar xJf postgrest-v10.1.1-linux-static-x64.tar.xz
curl -OL https://github.com/PostgREST/postgrest/releases/download/v12.2.0/postgrest-v12.2.0-linux-static-x64.tar.xz
tar xJf postgrest-v12.2.0-linux-static-x64.tar.xz
sudo mv ./postgrest /bin/postgrest
sudo rm postgrest-v10.1.1-linux-static-x64.tar.xz
sudo rm postgrest-v12.2.0-linux-static-x64.tar.xz
# Setup app and postgrest as systemd service
sudo cp /tmp/nest.service /lib/systemd/system/nest.service
@ -74,7 +76,7 @@ mv /tmp/.env ~/app/.env
mv /tmp/setup_app ~/app/setup_app
sudo chmod +x ~/app/setup_app
npm install -g npm@9.8.1
npm install -g npm@10.9.2
# Building ToolJet app
npm install -g @nestjs/cli

View file

@ -7,11 +7,11 @@ sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates apt-u
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install 18.18.2
nvm install 22.15.1
sudo ln -s "$(which node)" /usr/bin/node
sudo ln -s "$(which npm)" /usr/bin/npm
sudo npm i -g npm@9.8.1
sudo npm i -g npm@10.9.2
# Setup openresty
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
@ -58,10 +58,10 @@ envsubst "${VARS_TO_SUBSTITUTE}" < /tmp/nginx.conf > /tmp/nginx-substituted.conf
sudo cp /tmp/nginx-substituted.conf /usr/local/openresty/nginx/conf/nginx.conf
# Download and setup postgrest binary
curl -OL https://github.com/PostgREST/postgrest/releases/download/v12.0.2/postgrest-v12.0.2-linux-static-x64.tar.xz
tar xJf postgrest-v12.0.2-linux-static-x64.tar.xz
curl -OL https://github.com/PostgREST/postgrest/releases/download/v12.2.0/postgrest-v12.2.0-linux-static-x64.tar.xz
tar xJf postgrest-v12.2.0-linux-static-x64.tar.xz
sudo mv ./postgrest /bin/postgrest
sudo rm postgrest-v12.0.2-linux-static-x64.tar.xz
sudo rm postgrest-v12.2.0-linux-static-x64.tar.xz
# Add the Redis APT repository
sudo add-apt-repository ppa:redislabs/redis -y
@ -92,7 +92,7 @@ mv /tmp/.env ~/app/.env
mv /tmp/setup_app ~/app/setup_app
sudo chmod +x ~/app/setup_app
npm install -g npm@9.8.1
npm install -g npm@10.9.2
# Building ToolJet app
npm install -g @nestjs/cli

View file

@ -1,4 +1,4 @@
FROM node:18.18.2-buster AS builder
FROM node:22.15.1 AS builder
# Fix for JS heap limit allocation issue
ENV NODE_OPTIONS="--max-old-space-size=4096"
@ -30,9 +30,10 @@ COPY ./server/package.json ./server/package-lock.json ./server/
RUN npm --prefix server install
COPY ./server/ ./server/
RUN npm install -g @nestjs/cli
RUN npm install -g copyfiles
RUN npm --prefix server run build
FROM node:18.18.2-bullseye
FROM node:22.15.1
# copy postgrest executable
COPY --from=postgrest/postgrest:v12.2.0 /bin/postgrest /bin

View file

@ -1,9 +1,9 @@
FROM node:18.18.2-buster AS builder
FROM node:22.15.1 AS builder
# Fix for JS heap limit allocation issue
ENV NODE_OPTIONS="--max-old-space-size=4096"
ENV NODE_OPTIONS="--max-old-space-size=8096"
RUN npm i -g npm@9.8.1
RUN npm i -g npm@10.9.2
RUN mkdir -p /app
WORKDIR /app
@ -31,10 +31,11 @@ ENV NODE_ENV=production
COPY ./server/package.json ./server/package-lock.json ./server/
RUN npm --prefix server install
COPY ./server/ ./server/
RUN npm install -g @nestjs/cli
RUN npm install -g @nestjs/cli
RUN npm install -g copyfiles
RUN npm --prefix server run build
FROM debian:11
FROM debian:12
RUN apt-get update -yq \
&& apt-get install curl gnupg zip -yq \
@ -42,12 +43,12 @@ RUN apt-get update -yq \
&& apt-get clean -y
RUN curl -O https://nodejs.org/dist/v18.18.2/node-v18.18.2-linux-x64.tar.xz \
&& tar -xf node-v18.18.2-linux-x64.tar.xz \
&& mv node-v18.18.2-linux-x64 /usr/local/lib/nodejs \
RUN curl -O https://nodejs.org/dist/v22.15.1/node-v22.15.1-linux-x64.tar.xz \
&& tar -xf node-v22.15.1-linux-x64.tar.xz \
&& mv node-v22.15.1-linux-x64 /usr/local/lib/nodejs \
&& echo 'export PATH="/usr/local/lib/nodejs/bin:$PATH"' >> /etc/profile.d/nodejs.sh \
&& /bin/bash -c "source /etc/profile.d/nodejs.sh" \
&& rm node-v18.18.2-linux-x64.tar.xz
&& rm node-v22.15.1-linux-x64.tar.xz
ENV PATH=/usr/local/lib/nodejs/bin:$PATH
ENV NODE_ENV=production

View file

@ -1,4 +1,4 @@
FROM node:18.18.2-buster AS builder
FROM node:22.15.1 AS builder
# Fix for JS heap limit allocation issue
ENV NODE_OPTIONS="--max-old-space-size=4096"
@ -50,10 +50,11 @@ ENV TOOLJET_EDITION=ee
COPY ./server/package.json ./server/package-lock.json ./server/
RUN npm --prefix server install
COPY ./server/ ./server/
RUN npm install -g @nestjs/cli
RUN npm install -g @nestjs/cli
RUN npm install -g copyfiles
RUN npm --prefix server run build
FROM node:18.18.2-bullseye
FROM node:22.15.1
RUN apt-get update -yq \
&& apt-get install curl gnupg zip -yq \

View file

@ -1,11 +1,11 @@
FROM node:18.18.2-buster AS builder
FROM node:22.15.1 AS builder
# Fix for JS heap limit allocation issue
ENV NODE_OPTIONS="--max-old-space-size=4096"
RUN npm i -g npm@9.8.1
RUN npm i -g npm@10.9.2
RUN mkdir -p /app
# RUN npm cache clean --force
RUN npm cache clean --force
WORKDIR /app
@ -54,10 +54,11 @@ ENV TOOLJET_EDITION=ee
COPY ./server/package.json ./server/package-lock.json ./server/
RUN npm --prefix server install
COPY ./server/ ./server/
RUN npm install -g @nestjs/cli
RUN npm install -g @nestjs/cli
RUN npm install -g copyfiles
RUN npm --prefix server run build
FROM debian:11
FROM debian:12
RUN apt-get update -yq \
&& apt-get install curl wget gnupg zip -yq \
@ -113,12 +114,12 @@ exec /bin/postgrest-original "$@" 2>&1 | sed "s/^/[PostgREST] /"\n\
chmod +x /bin/postgrest
RUN curl -O https://nodejs.org/dist/v18.18.2/node-v18.18.2-linux-x64.tar.xz \
&& tar -xf node-v18.18.2-linux-x64.tar.xz \
&& mv node-v18.18.2-linux-x64 /usr/local/lib/nodejs \
RUN curl -O https://nodejs.org/dist/v22.15.1/node-v22.15.1-linux-x64.tar.xz \
&& tar -xf node-v22.15.1-linux-x64.tar.xz \
&& mv node-v22.15.1-linux-x64 /usr/local/lib/nodejs \
&& echo 'export PATH="/usr/local/lib/nodejs/bin:$PATH"' >> /etc/profile.d/nodejs.sh \
&& /bin/bash -c "source /etc/profile.d/nodejs.sh" \
&& rm node-v18.18.2-linux-x64.tar.xz
&& rm node-v22.15.1-linux-x64.tar.xz
ENV PATH=/usr/local/lib/nodejs/bin:$PATH
ENV NODE_ENV=production

33221
frontend/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -185,11 +185,11 @@
"html-loader": "^4.2.0",
"html-webpack-plugin": "^5.5.0",
"jest": "^29.4.2",
"node-sass": "^8.0.0",
"path": "^0.12.7",
"postcss": "^8.4.35",
"postcss-loader": "^8.1.0",
"prettier": "^2.8.4",
"sass": "^1.78.0",
"sass-loader": "^13.2.0",
"storybook": "^7.2.1",
"style-loader": "^3.3.1",
@ -264,4 +264,4 @@
"jsx"
]
}
}
}

View file

@ -4,15 +4,16 @@
}
}
.page-handler.ghost{
.page-handler.ghost {
background-color: #ECEEF0;
&.dark-theme{
background-color: var(--slate4);
}
border-radius: 4px;
position: relative;
width: 100%;
opacity: 0.8;
&.dark-theme {
background-color: var(--slate4);
}
}
.edit-page-overlay-toggle {
@ -40,7 +41,7 @@
display: none !important;
}
.page-group-icon-text{
.page-group-icon-text {
font-size: 12px;
font-weight: 400;
line-height: 18px;
@ -53,16 +54,27 @@
}
.page-handler {
.page-menu-item{
.page-menu-item {
height: 32px;
border-radius: 4px;
display: flex;
align-items: center;
padding: 0px 8px;
margin-top: 2px;
justify-content: space-between;
&.highlight {
border: 2px solid #3D63DC;
}
&.is-selected {
background-color: #f0f4ff;
&.dark-theme {
background-color: var(--slate5);
}
}
.page-group-actions {
transition: 0.2s ease;
opacity: 0;
@ -70,6 +82,7 @@
display: flex;
width: unset !important;
height: unset !important;
button {
border-radius: var(--2, 4px);
border: 1px solid var(--border-default, #CCD1D5);
@ -84,7 +97,8 @@
justify-content: center;
}
}
.meta-text{
.meta-text {
color: var(--slate8);
font-size: 12px;
font-style: normal;
@ -92,33 +106,35 @@
line-height: 18px;
margin-top: 3px;
}
button.edit-page-overlay-toggle{
button.edit-page-overlay-toggle {
opacity: 0;
}
&:hover{
&:hover {
background-color: #ECEEF0;
button.edit-page-overlay-toggle{
button.edit-page-overlay-toggle {
opacity: 1;
}
.page-group-actions {
opacity: 1;
}
&.dark-theme {
&:hover {
background-color: var(--slate4);
}
}
}
height:32px;
border-radius: 4px;
display: flex;
align-items: center;
padding: 0px 8px;
margin-top: 2px;
justify-content: space-between;
.left{
.left {
display: flex;
align-items: center;
// margin-left: 15px;
.page-name{
.page-name {
overflow: hidden;
color: var(--slate12);
font-size: 14px;
@ -127,8 +143,7 @@
max-width: 246px;
margin-top: 3px;
}
display: flex;
align-items: center;
}
.right {
@ -150,6 +165,7 @@
}
}
}
&:hover {
.edit-page-overlay-toggle {
opacity: 1;
@ -200,7 +216,7 @@
line-height: 18px;
}
.page-menu-action-buttons{
.page-menu-action-buttons {
display: inline-flex;
align-items: center;
height: 28px;
@ -211,12 +227,14 @@
outline: none;
border-radius: 6px;
background: transparent;
svg path{
svg path {
fill: #6A727C;
}
&:hover{
background: var(--button-outline-hover, rgba(136, 144, 153, 0.12));
}
&:hover {
background: var(--button-outline-hover, rgba(136, 144, 153, 0.12));
}
}
@ -226,7 +244,8 @@
border: 1px solid var(--border-weak, #E4E7EB);
background: var(--button-secondary, #FFF);
box-shadow: 0px 0px 1px 0px var(--dropshadow-100700-layer-1, rgba(48, 50, 51, 0.05)), 0px 1px 1px 0px var(--dropshadow-100400-layer-2, rgba(48, 50, 51, 0.10));
&:hover{
&:hover {
border-radius: 6px;
border: 1px solid var(--border-default, #CCD1D5);
background: linear-gradient(0deg, var(--button-outline-hover, rgba(136, 144, 153, 0.12)) 0%, var(--button-outline-hover, rgba(136, 144, 153, 0.12)) 100%), var(--button-outline, #FFF);
@ -237,18 +256,20 @@
border: none;
background: transparent;
border-radius: 10px;
&.dark-theme {
.popover-body {
box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.9), 0px 8px 16px 0px #000000;
}
}
.popover-body {
width: 160px;
padding: 8px;
border-radius: 10px;
background: var(--background-surface-layer-01);
box-shadow: 0px 0px 1px 0px rgba(48, 50, 51, 0.05), 0px 8px 16px 0px rgba(48, 50, 51, 0.1);
.menu-options {
.option {
display: flex;
@ -260,7 +281,8 @@
align-self: stretch;
border-radius: 6px;
cursor: pointer;
&:hover{
&:hover {
background: rgba(136, 144, 153, 0.08);
}
}
@ -283,7 +305,7 @@
.permission-type-select {
align-items: center;
.col-auto {
padding-right: 0px;
}
@ -299,7 +321,7 @@
.react-select__option {
padding: 8px 0px;
input {
margin-right: 10px;
}
@ -314,40 +336,40 @@
align-items: center;
padding: 8px 12px;
cursor: pointer;
&.focused {
background-color: #f3f4f6; // Tailwind's gray-100 vibe
background-color: #f3f4f6; // Tailwind's gray-100 vibe
}
.avatar {
background-color: var(--slate5); // light gray
color: var(--slate12); // dark text
font-weight: 500;
font-size: 16px;
width: 36px;
height: 36px;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
flex-shrink: 0;
}
.user-info {
display: flex;
flex-direction: column;
.name {
background-color: var(--slate5); // light gray
color: var(--slate12); // dark text
font-weight: 500;
font-size: 14px;
color: var(--slate12);
}
.email {
font-size: 12px;
color: var(--slate10);
}
font-size: 16px;
width: 36px;
height: 36px;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
flex-shrink: 0;
}
.user-info {
display: flex;
flex-direction: column;
.name {
font-weight: 500;
font-size: 14px;
color: var(--slate12);
}
.email {
font-size: 12px;
color: var(--slate10);
}
}
.group-info {
@ -355,19 +377,19 @@
flex-direction: row;
gap: 8px;
align-items: center;
.name {
font-weight: 400;
font-size: 14px;
color: var(--slate12);
font-weight: 400;
font-size: 14px;
color: var(--slate12);
}
.count {
font-size: 12px;
color: var(--slate9);
font-size: 12px;
color: var(--slate9);
}
}
}
}
}
}
.page-permission {

View file

@ -1,13 +1,14 @@
.tj-datepicker-widget {
&.react-datepicker-popper {
z-index: 3;
}
border-radius: 6px !important;
border: 1px solid var(--slate5) !important;
box-shadow: 0px 32px 64px -12px rgba(16, 24, 40, 0.14);
width: 250px;
padding: 0px;
&.react-datepicker-popper {
z-index: 3;
}
}
.tj-timepicker-widget {

View file

@ -1,13 +1,14 @@
.tj-datepicker-widget {
&.react-datepicker-popper {
z-index: 3;
}
border-radius: 6px !important;
border: 1px solid var(--slate5) !important;
box-shadow: 0px 32px 64px -12px rgba(16, 24, 40, 0.14);
width: 250px;
padding: 0px;
&.react-datepicker-popper {
z-index: 3;
}
}
.tj-timepicker-widget {

View file

@ -15,8 +15,8 @@
// margin-right: 6px !important;
// }
.tj-database-column-header:hover{
.primaryKeyTooltip{
.tj-database-column-header:hover {
.primaryKeyTooltip {
width: 88% !important;
}
}
@ -57,6 +57,9 @@
}
&:last-child {
border-right: 0px;
border-color: inherit;
&::before {
content: '';
position: absolute;
@ -68,8 +71,6 @@
background-color: rgba(101, 109, 119, 0.16) !important;
}
border-right: 0px;
border-color: inherit;
}
}
@ -112,6 +113,10 @@
}
&:last-child {
border-right: 0px;
border-color: inherit;
&::before {
content: '';
position: absolute;
@ -122,9 +127,6 @@
height: 100%;
background-color: rgba(101, 109, 119, 0.16) !important;
}
border-right: 0px;
border-color: inherit;
}
}
@ -168,18 +170,20 @@
width: 80%;
}
}
&:has(.tjdb-dashboard-codehinter-wrapper-cell){
&:has(.tjdb-dashboard-codehinter-wrapper-cell) {
padding: 0 !important;
}
.tjdb-dashboard-codehinter-wrapper-cell{
.cm-editor{
border: 0 !important;
}
.codehinter-input.focused .cm-editor{
border: 0 !important;
}
.tjdb-dashboard-codehinter-wrapper-cell {
.cm-editor {
border: 0 !important;
}
.codehinter-input.focused .cm-editor {
border: 0 !important;
}
}
}
@ -191,10 +195,10 @@
padding-bottom: 0px !important;
.cell-menu-text {
white-space: nowrap ;
overflow: hidden ;
text-overflow: ellipsis ;
width: 85% ;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 85%;
color: var(--slate11) !important;
cursor: default;
border-radius: 6px;
@ -209,6 +213,7 @@
.tjdb-td-wrapper {
div {
padding-bottom: 0px !important;
.cell-menu-text {
white-space: nowrap;
overflow: hidden;
@ -431,13 +436,15 @@
background: #1C252F !important;
}
&::-webkit-scrollbar{
&::-webkit-scrollbar {
display: none;
}
&::-webkit-scrollbar-track{
&::-webkit-scrollbar-track {
background-color: transparent;
}
&:hover::-webkit-scrollbar{
&:hover::-webkit-scrollbar {
display: block;
}
}

View file

@ -17,7 +17,7 @@ $btn-dark-color: #FFFFFF;
transition: all 0.3s ease-in-out;
&:hover {
@if $bg !=none {
@if $bg !=none {
background-color: darken($bg, 10%);
}
}
@ -26,13 +26,17 @@ $btn-dark-color: #FFFFFF;
.base-button {
@include button($btn-bg, $btn-color);
border-radius: $base-border-radius;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
padding: 4px 16px;
border: 1px solid #D7DBDF;
& {
border-radius: $base-border-radius;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
padding: 4px 16px;
border: 1px solid #D7DBDF;
}
}
.base-button.dark {
@ -52,11 +56,14 @@ $btn-dark-color: #FFFFFF;
.unstyled-button {
@include button(none, inherit);
border: none;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 20px;
& {
border: none;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 20px;
}
}
.unstyled-button.dark {
@ -273,74 +280,86 @@ $btn-dark-color: #FFFFFF;
}
}
.delete-folder-modal{
&.dark-theme{
.delete-all-button{
&:hover{
.delete-folder-modal {
&.dark-theme {
.delete-all-button {
&:hover {
background: #fff;
box-shadow: none;
border: 1px solid rgb(77, 114, 250);
}
}
}
.delete-all-button{
.delete-all-button {
margin: 0;
border-radius: 6px;
border: 1px solid#CCD1D5;
background:#FFF;
background: #FFF;
box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.10);
padding: 5px 10px;
display: flex;
align-items: center;
gap: 6px;
&:hover{
&:hover {
background: rgba(172, 178, 185, 0.30);
box-shadow: none;
}
span{
span {
font-size: 12px;
font-style: normal;
font-weight: 500;
line-height: 18px; /* 150% */
line-height: 18px;
/* 150% */
}
&.danger{
&.danger {
border-radius: 6px;
background: #D72D39;
border:none;
border: none;
box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.10);
span{
span {
color: #fff;
}
&:hover{
&:hover {
border: none;
background: #B5121D;
box-shadow: none;
}
}
}
.modal-title{
.modal-title {
font-size: 14px;
font-style: normal;
font-weight: 500;
}
.modal-dialog{
.modal-dialog {
width: 408px;
}
.modal-body{
.modal-body {
padding: 16px 0;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 18px;
}
.modal-content{
.modal-content {
border-radius: 12px;
padding: 16px;
}
.modal-header{
.modal-header {
padding: 0;
min-height: unset;
border: none;
@ -349,7 +368,8 @@ $btn-dark-color: #FFFFFF;
font-style: normal;
font-weight: 500;
}
.modal-footer{
.modal-footer {
margin: 0;
padding: 0;
justify-content: unset;
@ -398,7 +418,7 @@ $btn-dark-color: #FFFFFF;
}
.page-handler-input {
border-radius: $base-border-radius !important;
border-radius: $base-border-radius !important;
}
}
@ -475,12 +495,12 @@ $btn-dark-color: #FFFFFF;
#page-handler-menu.global-settings {
background-color: var(--base);
border: none;
.popover-body {
color: var(--slate12);
}
border: none;
}
#inspector-tabpane-properties .code-hinter textarea {
@ -490,14 +510,17 @@ $btn-dark-color: #FFFFFF;
}
// Style for Chart component
.widget-chart{
.js-plotly-plot{
.widget-chart {
.js-plotly-plot {
border-radius: inherit;
.plot-container{
.plot-container {
border-radius: inherit;
.svg-container{
.svg-container {
border-radius: inherit;
.main-svg{
.main-svg {
border-radius: inherit;
}
}
@ -509,6 +532,7 @@ $btn-dark-color: #FFFFFF;
.widget-type-container {
overflow: hidden auto;
scrollbar-width: none;
&:hover {
scrollbar-width: auto;
}

View file

@ -500,7 +500,7 @@
line-break: anywhere;
text-align: center;
}
.signup-password-wrap,
@ -1603,13 +1603,14 @@
gap: 20px;
.body-row {
.feature-title {
width: 70%;
}
display: grid;
grid-template-columns: 1fr 0.2fr 0.1fr;
.feature-title {
width: 70%;
}
.form-check-input {
background-image: none !important;
}

View file

@ -4,12 +4,12 @@
$border-radius: 4px;
.query-manager {
user-select: none;
.react-select__value-container {
margin-bottom: 0px !important;
}
user-select: none;
.btn {
height: 31px;
}
@ -89,6 +89,20 @@ $border-radius: 4px;
}
.query-pane {
height: 400px;
position: fixed;
left: 48px;
right: 300px;
bottom: 0;
overflow-x: hidden;
flex: 1 1 auto;
font-size: 12px;
line-height: 20px;
border-top: 1px solid var(--slate5);
border-width: 1px 0px 0px 0px;
background-color: var(--base);
&.expanded {
z-index: 12 !important;
}
@ -107,19 +121,6 @@ $border-radius: 4px;
}
}
height: 400px;
position: fixed;
left: 48px;
right: 300px;
bottom: 0;
overflow-x: hidden;
flex: 1 1 auto;
font-size: 12px;
line-height: 20px;
border-top: 1px solid var(--slate5);
border-width: 1px 0px 0px 0px;
background-color: var(--base);
&#query-manager {
border-width: 3px 0px 0px 0px;
}
@ -1131,6 +1132,8 @@ $border-radius: 4px;
justify-content: space-between;
.left {
cursor: pointer;
span {
color: var(--slate12);
font-family: 'source-code-pro', Menlo, 'Courier New', Consolas, monospace;
@ -1145,7 +1148,6 @@ $border-radius: 4px;
fill: var(--slate12) !important;
}
cursor: pointer;
}
}

View file

@ -222,6 +222,8 @@
.td {
display: flex !important;
// padding: 6px 12px;
.text-container:focus-visible,
.text-container:focus,
@ -237,8 +239,6 @@
}
display: flex !important;
.td-container {
margin-top: auto;
margin-bottom: auto;
@ -317,6 +317,7 @@
}
.jet-data-table {
overflow: hidden;
.th:first-child,
td:first-child {
@ -328,8 +329,6 @@
border-right: none;
}
overflow: hidden;
.form-check {
margin-bottom: 0;
}
@ -719,6 +718,7 @@
width: 100%;
color: var(--slate12) !important;
height: 100% !important;
overflow-wrap: wrap;
.dropdown-item {
display: flex;
@ -734,7 +734,6 @@
}
}
overflow-wrap: wrap;
.dropdown-item {
&:hover {
@ -1148,9 +1147,12 @@
}
.table-select-custom-menu-list {
box-shadow: var(--elevation-400-box-shadow) !important;
.react-select__menu-list {
display: flex;
flex-direction: column;
background-color: var(--surfaces-surface-01) !important;
.option-wrapper {
align-items: center;
@ -1185,10 +1187,8 @@
}
}
background-color: var(--surfaces-surface-01) !important;
}
box-shadow: var(--elevation-400-box-shadow) !important;
}

View file

@ -4116,11 +4116,13 @@ input[type="text"] {
}
.rbc-event {
background-color: var(--primary-brand) !important;
border: transparent;
.rbc-event-label {
display: none;
}
background-color: var(--primary-brand) !important;
border: transparent
}
.rbc-off-range-bg {
@ -4326,6 +4328,11 @@ input[type="text"] {
left: 50%;
top: 5%;
z-index: 1400;
transform: translate(-60%, 0%);
height: 350px;
width: auto;
max-height: 500px;
padding: 0px;
.modal-body {
width: 500px !important;
@ -4333,11 +4340,6 @@ input[type="text"] {
padding: 0px !important;
}
transform: translate(-60%, 0%);
height: 350px;
width: auto;
max-height: 500px;
padding: 0px;
.modal-content {
border-radius: 5px !important;
@ -5112,8 +5114,12 @@ input[type="text"] {
.button-family-secondary {
@include button-outline($light-theme: true);
height: 32px;
width: 112px;
& {
height: 32px;
width: 112px;
}
}
.button-family-secondary.dark {
@ -9163,12 +9169,13 @@ tbody {
}
.git-sync-btn.disabled-action-tooltip {
opacity: 1;
background: var(--slate3);
.license-tooltip {
opacity: 1;
}
opacity: 1;
background: var(--slate3);
rect {
fill: var(--slate3);
@ -12305,11 +12312,11 @@ tbody {
}
.design-component-inputs textarea {
&.valid-textarea {
border: 1.5px solid #519b62 !important;
}
&.invalid-textarea {
border: 1.5px solid #e26367 !important;
}
@ -13947,16 +13954,17 @@ tbody {
.tj-foreignKey {
.tj-secondary-btn {
font-size: 12px;
background: transparent !important;
display: flex;
justify-content: flex-end;
svg {
path {
fill: #3e63dd !important
}
}
font-size: 12px;
background: transparent !important;
display: flex;
justify-content: flex-end;
}
}
}
@ -13978,16 +13986,17 @@ tbody {
.tj-foreignKey {
.tj-secondary-btn {
font-size: 12px;
background: transparent !important;
display: flex;
justify-content: flex-end;
svg {
path {
fill: #3e63dd !important
}
}
font-size: 12px;
background: transparent !important;
display: flex;
justify-content: flex-end;
}
}
}
@ -14004,16 +14013,17 @@ tbody {
.tj-foreignKey {
.tj-secondary-btn {
font-size: 12px;
background: transparent !important;
display: flex;
justify-content: flex-end;
svg {
path {
fill: #3e63dd !important
}
}
font-size: 12px;
background: transparent !important;
display: flex;
justify-content: flex-end;
}
}
}
@ -15751,7 +15761,7 @@ tbody {
/* Set the desired width */
}
textarea.tj-text-input-widget{
textarea.tj-text-input-widget {
resize: none !important;
overflow-y: auto !important;
}
@ -16283,6 +16293,7 @@ fieldset:disabled {
.date-validation-wrapper {
margin-bottom: 3px;
.field {
height: 24px;
@ -16292,7 +16303,6 @@ fieldset:disabled {
flex-wrap: wrap;
}
margin-bottom: 3px;
}
.tj-inspector-datepicker {
@ -16699,6 +16709,8 @@ fieldset:disabled {
background-color: transparent !important;
border: none;
outline: none;
display: flex;
align-items: center;
&:hover {
background-color: #f1f1f1 !important;
@ -16710,8 +16722,6 @@ fieldset:disabled {
// box-shadow: 0px 0px 0px 2px var(--Interactive-focusActive, #4368E3);
// }
display: flex;
align-items: center;
}
button.submit {
@ -16865,6 +16875,8 @@ section.ai-message-prompt-input-wrapper {
background-color: transparent !important;
border: none;
outline: none;
display: flex;
align-items: center;
&:hover {
background-color: #f1f1f1 !important;
@ -16876,8 +16888,6 @@ section.ai-message-prompt-input-wrapper {
// box-shadow: 0px 0px 0px 2px var(--Interactive-focusActive, #4368E3);
// }
display: flex;
align-items: center;
}
button.submit {
@ -17400,6 +17410,15 @@ section.ai-message-prompt-input-wrapper {
flex-direction: column;
overflow-x: hidden;
position: relative;
height: 100%;
transition: right 0.3s ease;
z-index: 1000;
overflow-y: auto;
border-left: 1px solid var(--border-weak, #E4E7EB);
background-color: #fff;
box-shadow: 0px 0px 1px 0px var(--dropshadow-100700-layer-1, rgba(48, 50, 51, 0.05)),
0px 8px 16px 0px var(--dropshadow-100400-layer-2, rgba(48, 50, 51, 0.10));
.input-box-gradient {
position: absolute;
@ -17426,15 +17445,6 @@ section.ai-message-prompt-input-wrapper {
outline: none;
}
height: 100%;
transition: right 0.3s ease;
z-index: 1000;
overflow-y: auto;
border-left: 1px solid var(--border-weak, #E4E7EB);
background-color: #fff;
box-shadow: 0px 0px 1px 0px var(--dropshadow-100700-layer-1, rgba(48, 50, 51, 0.05)),
0px 8px 16px 0px var(--dropshadow-100400-layer-2, rgba(48, 50, 51, 0.10));
&.dark-theme {
background-color: #1f2936;
@ -17621,6 +17631,12 @@ section.ai-message-prompt-input-wrapper {
}
.suggestion {
display: flex;
padding: 4px 8px;
align-items: center;
gap: 4px;
border-radius: 6px;
p {
margin: 0;
color: var(--text-default, #1B1F24);
@ -17629,11 +17645,6 @@ section.ai-message-prompt-input-wrapper {
font-weight: 400;
}
display: flex;
padding: 4px 8px;
align-items: center;
gap: 4px;
border-radius: 6px;
// &:hover {
// background: var(--interactive-hover, rgba(136, 144, 153, 0.12));
@ -18136,11 +18147,6 @@ section.ai-message-prompt-input-wrapper {
display: inline-block;
border-radius: 8px;
background: #F5F6F7;
&.dark-theme {
background-color: #1B1F24;
}
padding: 8px 16px;
justify-content: flex-end;
align-items: center;
@ -18153,6 +18159,11 @@ section.ai-message-prompt-input-wrapper {
line-height: 18px;
margin-left: auto;
&.dark-theme {
background-color: #1B1F24;
}
}
}
}
@ -18161,9 +18172,6 @@ section.ai-message-prompt-input-wrapper {
}
section.template-cards {
&::-webkit-scrollbar {
display: none;
}
overflow-x: auto;
margin-top: 6px;
@ -18172,6 +18180,10 @@ section.ai-message-prompt-input-wrapper {
gap: 16px;
display: flex;
&::-webkit-scrollbar {
display: none;
}
.section-card {
flex: 0 0 auto;
// display: flex;
@ -18663,8 +18675,8 @@ section.ai-message-prompt-input-wrapper {
}
.codebuilder-color-swatches-options {
width:100%;
height:30px;
width: 100%;
height: 30px;
padding: 6px 8px;
border-radius: 6px;
@ -18697,8 +18709,8 @@ section.ai-message-prompt-input-wrapper {
.theme-create-btn {
width: 100%;
margin-bottom: 8px;
height:32px;
color:#000;
height: 32px;
color: #000;
border: 1px solid var(--Border-brand-weak, #97AEFC);
}
@ -18721,14 +18733,14 @@ section.ai-message-prompt-input-wrapper {
border-color: var(--primary-brand);
}
.multiselct-widget-option{
.multiselct-widget-option {
input:checked {
background-color: var(--primary-brand);
}
}
.multiselect-box {
.options{
.options {
input:checked {
background-color: var(--primary-brand);
}
@ -18737,6 +18749,7 @@ section.ai-message-prompt-input-wrapper {
.timer-btn {
background-color: var(--primary-brand);
&:hover {
background-color: var(--primary-brand);
}
@ -18775,6 +18788,7 @@ section.ai-message-prompt-input-wrapper {
color: #ffffff;
border: 1px solid transparent;
}
.canvas-styles-header {
background-color: #212325;
color: #ffffff;
@ -18820,8 +18834,9 @@ section.ai-message-prompt-input-wrapper {
}
#inspector-tabpane-properties .accordion-header {
height:32px;
height: 32px;
}
.cm-tooltip {
z-index: 9999 !important;
}

View file

@ -1,4 +1,5 @@
@import "../colors.scss";
.handle {
display: flex;
width: 12px;
@ -54,6 +55,7 @@ $focused-outline-color: #4c9ffe;
transform: scale(1);
box-shadow: var(--box-shadow);
}
100% {
transform: scale(var(--scale));
box-shadow: var(--box-shadow-picked-up);
@ -64,6 +66,7 @@ $focused-outline-color: #4c9ffe;
0% {
opacity: 0;
}
100% {
opacity: 1;
}
@ -72,8 +75,7 @@ $focused-outline-color: #4c9ffe;
.kanban-item {
display: flex;
box-sizing: border-box;
transform: translate3d(var(--translate-x, 0), var(--translate-y, 0), 0)
scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1));
transform: translate3d(var(--translate-x, 0), var(--translate-y, 0), 0) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1));
transform-origin: 0 0;
touch-action: manipulation;
min-width: 100px;
@ -115,7 +117,7 @@ $focused-outline-color: #4c9ffe;
transform: scale(1);
transition: box-shadow 200ms cubic-bezier(0.18, 0.67, 0.6, 1.22);
&.dark-light{
&.dark-light {
border: 1px solid rgba(229, 229, 229, 0.08);
}
@ -129,7 +131,7 @@ $focused-outline-color: #4c9ffe;
}
&.dragging:not(.dragOverlay) {
opacity: 0.5;
opacity: 0.5;
z-index: 0;
&:focus {
@ -138,12 +140,13 @@ $focused-outline-color: #4c9ffe;
}
&.disabled {
cursor: not-allowed;
color: #999;
background-color: #f1f1f1;
&:focus {
box-shadow: 0 0px 4px 1px rgba(0, 0, 0, 0.1), $box-shadow;
}
cursor: not-allowed;
}
&.dragOverlay {
@ -154,7 +157,8 @@ $focused-outline-color: #4c9ffe;
opacity: 1;
}
}
.subcontainer-container{
.subcontainer-container {
width: 100%;
height: 100%;
}
@ -165,6 +169,7 @@ $focused-outline-color: #4c9ffe;
top: 8px;
}
}
.kanban-container {
display: flex;
flex-direction: column;
@ -182,7 +187,7 @@ $focused-outline-color: #4c9ffe;
border: 1px solid rgba(0, 0, 0, 0.05);
font-size: 1em;
.container-name{
.container-name {
display: inline-flex;
justify-content: center;
align-items: center;
@ -213,6 +218,7 @@ $focused-outline-color: #4c9ffe;
overflow-y: auto;
}
}
&.hover {
background-color: rgba(235, 235, 235, 1);
}
@ -234,6 +240,7 @@ $focused-outline-color: #4c9ffe;
&.shadow {
box-shadow: 0 1px 10px 0 rgba(34, 33, 81, 0.1);
}
.header {
display: flex;
padding: 10px 20px;
@ -244,18 +251,20 @@ $focused-outline-color: #4c9ffe;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
&.dark{
&.dark {
border-bottom: 1px solid rgba(229, 229, 229, 0.08);
}
}
.actions {
display: flex;
.add-card-btn{
.add-card-btn {
font-size: 12px;
padding: 5px 10px;
border: 1px solid rgba(0, 0, 0, 0.08);;
border: 1px solid rgba(0, 0, 0, 0.08);
;
}
}
@ -267,7 +276,8 @@ $focused-outline-color: #4c9ffe;
right: 10px;
z-index: 1;
}
.kanban-add-card-button{
.kanban-add-card-button {
position: fixed;
top: 15px;
right: 20px;
@ -275,9 +285,10 @@ $focused-outline-color: #4c9ffe;
font-size: 12px !important;
}
.dark-light{
background-color: $bg-dark-light !important;
}
.dark{
background-color: $bg-dark !important;
.dark-light {
background-color: $bg-dark-light !important;
}
.dark {
background-color: $bg-dark !important;
}

View file

@ -303,18 +303,17 @@
.manage-resource-permission {
.tj-text-xxsm {
color: var(--slate11)
}
transition: background-color 0.3s ease;
border-bottom: 1px solid var(--slate5);
display: flex;
align-items:flex-start;
align-items: flex-start;
padding: 12px;
gap: 10px;
.tj-text-xxsm {
color: var(--slate11)
}
.resource-name {
display: flex;
gap: 5px;

2222
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -3,8 +3,8 @@
"version": "1.18.0",
"description": "ToolJet is an open-source low-code framework to build and deploy internal tools.",
"engines": {
"node": "18.18.2",
"npm": "9.8.1"
"node": "22.15.1",
"npm": "10.9.2"
},
"lint-staged": {
"./frontend/src/**/*.{js,jsx}": [
@ -19,11 +19,11 @@
},
"devDependencies": {
"@tooljet/cli": "^0.0.13",
"eslint": "^8.56.0",
"eslint-plugin-jest": "^28.6.0",
"eslint-plugin-prettier": "^5.1.3",
"husky": "^8.0.3",
"lint-staged": "^13.1.2"
"eslint": "^9.28.0",
"eslint-plugin-jest": "^28.13.3",
"eslint-plugin-prettier": "^5.4.1",
"husky": "^9.1.7",
"lint-staged": "^16.1.0"
},
"scripts": {
"prebuild:plugins": "npm run install:plugins",
@ -56,7 +56,7 @@
"update-version": "node update-version.js"
},
"dependencies": {
"@typescript-eslint/eslint-plugin": "^7.12.0",
"eslint-config-prettier": "^9.1.0"
"@typescript-eslint/eslint-plugin": "^8.34.0",
"eslint-config-prettier": "^10.1.5"
}
}
}

View file

@ -47,7 +47,6 @@ function buildConnectionOptions(): TypeOrmModuleOptions {
migrationsTransactionMode: 'all',
logging: data.ORM_LOGGING || false,
migrations: [__dirname + '/data-migrations/**/*{.ts,.js}'],
keepConnectionAlive: true,
};
}

View file

@ -64,7 +64,6 @@ function buildConnectionOptions(data): TypeOrmModuleOptions {
migrationsTransactionMode: 'all',
logging: data.ORM_LOGGING || false,
migrations: [__dirname + '/migrations/**/*{.ts,.js}'],
keepConnectionAlive: true,
};
}
@ -93,7 +92,6 @@ function buildToolJetDbConnectionOptions(data): TypeOrmModuleOptions {
migrationsRun: false,
migrationsTransactionMode: 'all',
logging: data.ORM_LOGGING || false,
keepConnectionAlive: true,
};
}

30033
server/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -40,27 +40,27 @@
"worker:prod": "WORKER=true NODE_ENV=production node dist/src/main"
},
"dependencies": {
"@casl/ability": "^5.3.1",
"@css-inline/css-inline": "^0.14.1",
"@dagrejs/graphlib": "^2.1.12",
"@nestjs/bull": "^10.1.1",
"@nestjs/common": "^10.3.9",
"@nestjs/config": "^3.2.2",
"@nestjs/core": "^10.3.9",
"@nestjs/event-emitter": "^2.0.2",
"@nestjs/jwt": "^10.2.0",
"@nestjs/mapped-types": "^2.0.2",
"@nestjs/microservices": "^10.3.9",
"@nestjs/passport": "^10.0.3",
"@nestjs/platform-express": "^10.3.9",
"@nestjs/platform-ws": "^10.3.9",
"@nestjs/schedule": "^4.0.2",
"@nestjs/serve-static": "^4.0.2",
"@nestjs/throttler": "^5.0.1",
"@nestjs/typeorm": "^10.0.2",
"@nestjs/websockets": "^10.3.9",
"@casl/ability": "^6.7.3",
"@css-inline/css-inline": "^0.14.3",
"@dagrejs/graphlib": "^2.2.4",
"@nestjs/bull": "^11.0.2",
"@nestjs/common": "^11.1.3",
"@nestjs/config": "^4.0.2",
"@nestjs/core": "^11.1.3",
"@nestjs/event-emitter": "^3.0.1",
"@nestjs/jwt": "^11.0.0",
"@nestjs/mapped-types": "^2.1.0",
"@nestjs/microservices": "^11.1.3",
"@nestjs/passport": "^11.0.5",
"@nestjs/platform-express": "^11.1.3",
"@nestjs/platform-ws": "^11.1.3",
"@nestjs/schedule": "^6.0.0",
"@nestjs/serve-static": "^5.0.3",
"@nestjs/throttler": "^6.2.1",
"@nestjs/typeorm": "^11.0.0",
"@nestjs/websockets": "^11.1.3",
"@node-saml/node-saml": "^4.0.5",
"@octokit/rest": "^18.12.0",
"@octokit/rest": "^22.0.0",
"@sentry/node": "6.17.6",
"@sentry/tracing": "6.17.6",
"@temporalio/activity": "^1.11.6",
@ -72,34 +72,31 @@
"acorn-walk": "^8.3.4",
"ajv": "^8.14.0",
"bcrypt": "^5.0.1",
"bull": "^4.10.4",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.1",
"compression": "^1.7.4",
"cookie-parser": "^1.4.6",
"copyfiles": "^2.4.1",
"class-validator": "^0.14.2",
"compression": "^1.8.0",
"cookie-parser": "^1.4.7",
"cron-validator": "^1.3.1",
"dotenv": "^10.0.0",
"express-http-proxy": "^1.6.3",
"fast-csv": "^4.3.6",
"fast-xml-parser": "^4.2.7",
"dotenv": "^16.5.0",
"express-http-proxy": "^2.1.1",
"fast-csv": "^5.0.2",
"fast-xml-parser": "^5.2.5",
"flatted": "^3.3.1",
"futoin-hkdf": "^1.4.2",
"global-agent": "^3.0.0",
"google-auth-library": "^7.9.2",
"got": "^11.8.2",
"handlebars": "^4.7.7",
"helmet": "^4.6.0",
"helmet": "^8.1.0",
"humps": "^2.0.1",
"ioredis": "^5.0.4",
"isolated-vm": "^4.6.0",
"isolated-vm": "^5.0.4",
"joi": "^17.4.1",
"js-base64": "^3.7.2",
"json5": "^2.2.3",
"jszip": "^3.10.1",
"ldapjs": "^3.0.3",
"ldapjs": "^3.0.7",
"lodash": "^4.17.21",
"module-from-string": "^3.3.0",
"module-from-string": "^3.3.1",
"moment": "^2.29.4",
"nest-winston": "^1.9.4",
"nestjs-pino": "^1.4.0",
@ -115,7 +112,7 @@
"protobufjs": "^7.2.3",
"reflect-metadata": "^0.1.13",
"request-ip": "^3.3.0",
"rimraf": "^3.0.2",
"rimraf": "^6.0.1",
"rxjs": "^7.2.0",
"sanitize-html": "^2.7.0",
"semver": "^7.5.4",
@ -123,14 +120,15 @@
"sshpk": "^1.17.0",
"ts-node": "^10.0.0",
"tsconfig-paths": "^3.10.1",
"typeorm": "^0.3.20",
"typeorm": "^0.3.24",
"uuid": "^8.3.2",
"winston": "^3.13.1",
"winston-daily-rotate-file": "^4.7.1",
"ws": "^8.17.1",
"y-websocket": "^1.4.0"
},
"peerDependencies": {
"@nestjs/cli": "^9.0.0"
"@nestjs/cli": "^11.0.7"
},
"overrides": {
"@nestjs/platform-ws": {
@ -144,49 +142,49 @@
"devDependencies": {
"@golevelup/ts-jest": "^0.3.2",
"@jest/types": "^29.6.3",
"@nestjs/schematics": "^8.0.0",
"@nestjs/testing": "^10.3.9",
"@nestjs/schematics": "^11.0.5",
"@nestjs/testing": "^11.1.3",
"@pollyjs/adapter-node-http": "^6.0.6",
"@pollyjs/core": "^6.0.6",
"@pollyjs/persister-fs": "^6.0.6",
"@types/compression": "^1.7.2",
"@types/cookie-parser": "^1.4.3",
"@types/express": "^4.17.13",
"@types/compression": "^1.8.1",
"@types/cookie-parser": "^1.4.9",
"@types/express": "^5.0.3",
"@types/express-http-proxy": "^1.6.3",
"@types/got": "^9.6.12",
"@types/humps": "^2.0.1",
"@types/jest": "^27.5.2",
"@types/ldapjs": "^3.0.0",
"@types/multer": "^1.4.7",
"@types/node": "^16.11.25",
"@types/node": "^24.0.1",
"@types/nodemailer": "^6.4.15",
"@types/passport-jwt": "^3.0.6",
"@types/pg": "^8.11.10",
"@types/request-ip": "^0.0.37",
"@types/sanitize-html": "^2.6.2",
"@types/sshpk": "^1.17.1",
"@types/supertest": "^2.0.11",
"@types/supertest": "^6.0.3",
"@types/ws": "^8.2.2",
"@typescript-eslint/eslint-plugin": "^6.13.2",
"@typescript-eslint/parser": "^6.13.2",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-cypress": "^2.12.1",
"eslint-plugin-jest": "^24.4.2",
"eslint-plugin-prettier": "^3.4.1",
"@typescript-eslint/eslint-plugin": "^8.34.0",
"@typescript-eslint/parser": "^8.34.0",
"eslint": "^9.28.0",
"eslint-config-prettier": "^10.1.5",
"eslint-plugin-cypress": "^5.1.0",
"eslint-plugin-jest": "^28.13.3",
"eslint-plugin-prettier": "^5.4.1",
"jest": "^29.7.0",
"jest-runner-groups": "^2.2.0",
"prettier": "^2.3.2",
"prettier": "^3.5.3",
"preview-email": "^3.0.20",
"rimraf": "^3.0.2",
"setup-polly-jest": "^0.11.0",
"supertest": "^6.1.3",
"supertest": "^7.1.1",
"ts-jest": "^29.1.5",
"ts-loader": "^9.2.3",
"typescript": "^4.3.5"
"ts-loader": "^9.5.2",
"typescript": "^5.8.3"
},
"engines": {
"node": "18.18.2",
"npm": "9.8.1"
"node": "22.15.1",
"npm": "10.9.2"
}
}

View file

@ -17,7 +17,7 @@ import { ConfigService } from '@nestjs/config';
import { bootstrap as globalAgentBootstrap } from 'global-agent';
import { custom } from 'openid-client';
import { join } from 'path';
import * as helmet from 'helmet';
import helmet from 'helmet';
import * as express from 'express';
import * as fs from 'fs';
import { LicenseInitService } from '@modules/licensing/interfaces/IService';

View file

@ -122,6 +122,6 @@ export class AppModuleLoader {
console.error('Error loading dynamic modules:', error);
}
return [...staticModules, ...dynamicModules];
return [...staticModules, ...dynamicModules] as (Type<any> | DynamicModule)[];
}
}

View file

@ -3,7 +3,7 @@ import * as winston from 'winston';
export const auditLog = winston.format((info) => {
info.auditLog = info.options;
delete info.options;
info.label = info.auditLog.resourceType;
info.label = info.auditLog?.['resourceType'];
return info;
});