Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/docker-image-dockerhub.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ on:
description: 'Node.js version to build this image with.'
type: choice
required: true
default: '20'
default: '24'
options:
- '20'
- '24'
tag_version:
description: 'Tag version of the image to be pushed.'
type: string
Expand All @@ -23,7 +23,7 @@ jobs:
- name: Set default values
id: defaults
run: |
echo "node_version=${{ github.event.inputs.node_version || '20' }}" >> $GITHUB_OUTPUT
echo "node_version=${{ github.event.inputs.node_version || '24' }}" >> $GITHUB_OUTPUT
echo "tag_version=${{ github.event.inputs.tag_version || 'latest' }}" >> $GITHUB_OUTPUT

- name: Checkout
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/docker-image-ecr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ on:
description: 'Node.js version to build this image with.'
type: choice
required: true
default: '20'
default: '24'
options:
- '20'
- '24'
tag_version:
description: 'Tag version of the image to be pushed.'
type: string
Expand All @@ -36,7 +36,7 @@ jobs:
- name: Set default values
id: defaults
run: |
echo "node_version=${{ github.event.inputs.node_version || '20' }}" >> $GITHUB_OUTPUT
echo "node_version=${{ github.event.inputs.node_version || '24' }}" >> $GITHUB_OUTPUT
echo "tag_version=${{ github.event.inputs.tag_version || 'latest' }}" >> $GITHUB_OUTPUT

- name: Checkout
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
strategy:
matrix:
platform: [ubuntu-latest]
node-version: [20.20.2]
node-version: [24.15.0]
runs-on: ${{ matrix.platform }}
env:
PUPPETEER_SKIP_DOWNLOAD: true
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v20.20.2
v24.15.0
Comment thread
0xi4o marked this conversation as resolved.
24 changes: 12 additions & 12 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@
# Run image
# docker run -d -p 3000:3000 flowise

FROM node:20-alpine
FROM node:24-alpine
Comment thread
0xi4o marked this conversation as resolved.

# Install system dependencies and build tools
RUN apk update && \
apk add --no-cache \
libc6-compat \
python3 \
make \
g++ \
build-base \
cairo-dev \
pango-dev \
chromium \
curl && \
npm install -g pnpm
libc6-compat \
python3 \
make \
g++ \
build-base \
cairo-dev \
pango-dev \
chromium \
curl && \
npm install -g pnpm@10.26.0

ENV PUPPETEER_SKIP_DOWNLOAD=true
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
Expand All @@ -42,4 +42,4 @@ USER node

EXPOSE 3000

CMD [ "pnpm", "start" ]
CMD [ "pnpm", "start" ]
4 changes: 2 additions & 2 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Stage 1: Build stage
FROM node:20-alpine AS build
FROM node:24-alpine AS build
Comment thread
0xi4o marked this conversation as resolved.

USER root

Expand All @@ -10,7 +10,7 @@ ENV PUPPETEER_SKIP_DOWNLOAD=true
RUN npm install -g flowise

# Stage 2: Runtime stage
FROM node:20-alpine
FROM node:${NODE_VERSION}-alpine
Comment thread
0xi4o marked this conversation as resolved.

# Install runtime dependencies
RUN apk add --no-cache chromium git python3 py3-pip make g++ build-base cairo-dev pango-dev curl
Expand Down
4 changes: 2 additions & 2 deletions docker/worker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:20-alpine
FROM node:24-alpine

RUN apk add --update libc6-compat python3 make g++
# needed for pdfjs-dist
Expand All @@ -8,7 +8,7 @@ RUN apk add --no-cache build-base cairo-dev pango-dev
RUN apk add --no-cache chromium curl

#install PNPM globally
RUN npm install -g pnpm
RUN npm install -g pnpm@10.26.0

ENV PUPPETEER_SKIP_DOWNLOAD=true
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
"sqlite3"
],
"overrides": {
"prebuild-install": "7.1.3",
"axios": "1.15.0",
"body-parser": "2.0.2",
"braces": "3.0.3",
Expand All @@ -97,7 +98,7 @@
}
},
"engines": {
"node": "^20",
"node": "^24",
Comment thread
0xi4o marked this conversation as resolved.
"pnpm": "^10.26.0"
},
"resolutions": {
Expand Down
2 changes: 1 addition & 1 deletion packages/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
"email": "henryheng@flowiseai.com"
},
"engines": {
"node": "^20"
"node": "^24"
Comment thread
0xi4o marked this conversation as resolved.
},
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
Expand Down
10 changes: 5 additions & 5 deletions packages/server/src/enterprise/utils/tenantRequestGuards.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Workspace } from '../database/entities/workspace.entity'
import { LoggedInUser } from '../Interface.Enterprise'

const mockReadOrganizationUserByOrganizationIdUserId = jest.fn() as jest.MockedFunction<
(organizationId: string, userId: string, queryRunner: QueryRunner) => Promise<{ organizationUser: unknown }>
(_organizationId: string, _userId: string, _queryRunner: QueryRunner) => Promise<{ organizationUser: unknown }>
>

jest.mock('../services/organization-user.service', () => ({
Expand Down Expand Up @@ -49,7 +49,7 @@ function makeRequest(user: Partial<LoggedInUser> | undefined): Request {
return { user } as unknown as Request
}

function makeQueryRunner(findOneByImpl?: jest.MockedFunction<(entity: unknown, where: { id: string }) => Promise<unknown>>): QueryRunner {
function makeQueryRunner(findOneByImpl?: jest.MockedFunction<(_entity: unknown, _where: { id: string }) => Promise<unknown>>): QueryRunner {
const findOneBy = findOneByImpl ?? jest.fn()
return {
manager: { findOneBy }
Expand Down Expand Up @@ -184,7 +184,7 @@ describe('tenantRequestGuards', () => {

it('org admin: resolves when workspace belongs to active organization', async () => {
const findOneBy = jest
.fn<(entity: unknown, where: { id: string }) => Promise<unknown>>()
.fn<(_entity: unknown, _where: { id: string }) => Promise<unknown>>()
.mockResolvedValue({ id: 'ws-remote', organizationId: 'org-1' })
const user = makeLoggedInUser({
activeWorkspaceId: 'ws-active',
Expand All @@ -197,7 +197,7 @@ describe('tenantRequestGuards', () => {
})

it('org admin: throws when workspace is not found', async () => {
const findOneBy = jest.fn<(entity: unknown, where: { id: string }) => Promise<unknown>>().mockResolvedValue(null)
const findOneBy = jest.fn<(_entity: unknown, _where: { id: string }) => Promise<unknown>>().mockResolvedValue(null)
const user = makeLoggedInUser({ isOrganizationAdmin: true, activeOrganizationId: 'org-1' })
await expect(assertWorkspaceIdAccessibleToUser(user, 'missing-ws', makeQueryRunner(findOneBy))).rejects.toMatchObject({
statusCode: StatusCodes.FORBIDDEN,
Expand All @@ -207,7 +207,7 @@ describe('tenantRequestGuards', () => {

it('org admin: throws when workspace is in another organization', async () => {
const findOneBy = jest
.fn<(entity: unknown, where: { id: string }) => Promise<unknown>>()
.fn<(_entity: unknown, _where: { id: string }) => Promise<unknown>>()
.mockResolvedValue({ id: 'ws-remote', organizationId: 'org-other' })
const user = makeLoggedInUser({ isOrganizationAdmin: true, activeOrganizationId: 'org-1' })
await expect(assertWorkspaceIdAccessibleToUser(user, 'ws-remote', makeQueryRunner(findOneBy))).rejects.toMatchObject({
Expand Down
54 changes: 13 additions & 41 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading