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
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,8 @@ jobs:
key: ${{ runner.os }}-${{ matrix.arch }}-${{ matrix.node-version }}-yarn-cache-v4-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-${{ matrix.arch }}-${{ matrix.node-version }}-yarn-cache-v4-
- name: Prepare Yarn 4.14.1
run: corepack enable && corepack prepare yarn@4.14.1 --activate
- name: Prepare Yarn 4.18.1
run: corepack enable && corepack prepare yarn@4.18.1 --activate
- name: Setup Python
uses: actions/setup-python@v7
with:
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ BSD 2-Clause License

This product bundles the Yarn package manager release used by the frontend
build:
- frontend/.yarn/releases/yarn-4.14.1.cjs
- frontend/.yarn/releases/yarn-4.18.1.cjs
Copyright (c) 2016-present, Yarn Contributors
Source: https://github.com/yarnpkg/berry
License: BSD 2-Clause License (licenses-3rd-party-code/yarn.txt)
Expand Down
2 changes: 1 addition & 1 deletion bin/dockerfiles/texera-web-application.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ COPY frontend /frontend
COPY common/workflow-operator/src/main/resources/udf/ui-parameter-types.json /common/workflow-operator/src/main/resources/udf/ui-parameter-types.json
# The repo's .yarnrc.yml pins Yarn (yarnPath) and the node-modules linker;
# --immutable fails rather than re-resolving anything yarn.lock does not pin.
RUN corepack enable && corepack prepare yarn@4.14.1 --activate
RUN corepack enable && corepack prepare yarn@4.18.1 --activate

# Fixes the build number build-version.js bakes into the bundle; pass the
# commit time (git log -1 --format=%ct) for a reproducible build.
Expand Down
940 changes: 0 additions & 940 deletions frontend/.yarn/releases/yarn-4.14.1.cjs

This file was deleted.

1,000 changes: 1,000 additions & 0 deletions frontend/.yarn/releases/yarn-4.18.1.cjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion frontend/.yarnrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@
# specific language governing permissions and limitations
# under the License.

yarnPath: .yarn/releases/yarn-4.14.1.cjs
yarnPath: .yarn/releases/yarn-4.18.1.cjs
nodeLinker: node-modules
nmMode: hardlinks-local
24 changes: 12 additions & 12 deletions frontend/LICENSE-binary
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ Source files derived from third-party MIT-licensed projects:
https://github.com/tabler/tabler-icons

Angular / npm packages:
- @abacritt/angularx-social-login@2.3.0
- @abacritt/angularx-social-login@2.6.0
- @ali-hm/angular-tree-component@12.0.5
- @angular/animations@21.2.18
- @angular/cdk@21.2.14
Expand All @@ -384,7 +384,7 @@ Angular / npm packages:
- @ant-design/colors@7.2.1
- @ant-design/fast-color@2.0.6
- @ant-design/icons-angular@21.0.0
- @auth0/angular-jwt@5.1.0
- @auth0/angular-jwt@5.2.0
- @babel/runtime@7.29.2
- @codingame/monaco-vscode-api@37.6.1
- @codingame/monaco-vscode-base-service-override@37.6.1
Expand Down Expand Up @@ -422,15 +422,15 @@ Angular / npm packages:
- @lezer/lr@1.4.10
- @lezer/python@1.1.19
- @ngneat/until-destroy@10.0.0
- @ngx-formly/core@7.1.0
- @ngx-formly/ng-zorro-antd@7.1.0
- @ngx-formly/core@7.2.0
- @ngx-formly/ng-zorro-antd@7.2.0
- @vscode/diff@0.0.2-7
- @vscode/iconv-lite-umd@0.7.1
- ajv@8.18.0
- ajv@8.20.0
- backbone@1.4.1
- balanced-match@4.0.4
- brace-expansion@5.0.12
- css-loader@7.1.3
- css-loader@6.11.0
- dagre@0.8.5
- date-fns@2.30.0
- eventemitter3@5.0.4
Expand All @@ -457,16 +457,16 @@ Angular / npm packages:
- ngx-color-picker@12.0.1
- ngx-file-drop@16.0.0
- ngx-json-viewer@3.2.1
- ngx-markdown@21.2.0
- papaparse@5.4.1
- plotly.js-basic-dist-min@2.29.0
- ngx-markdown@21.3.0
- papaparse@5.7.1
- plotly.js-basic-dist-min@2.35.3
- point-in-polygon@1.1.0
- python@10.0.0
- quill-cursors@4.3.0
- quill-delta@5.1.0
- rbush@4.0.1
- read-excel-file@5.7.1
- ring-buffer-ts@1.0.3
- read-excel-file@5.8.8
- ring-buffer-ts@1.2.0
- style-loader@3.3.4
- theme-defaults@10.0.0
- underscore@1.13.8
Expand All @@ -483,7 +483,7 @@ Angular / npm packages:
- y-websocket@1.5.4
- yjs@13.6.31
- zod@3.25.76
- zone.js@0.15.1
- zone.js@0.16.3

--------------------------------------------------------------------------------
Dependencies under the BSD 3-Clause License
Expand Down
56 changes: 29 additions & 27 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
},
"private": true,
"dependencies": {
"@abacritt/angularx-social-login": "2.3.0",
"@abacritt/angularx-social-login": "2.6.0",
"@ai-sdk/openai": "2.0.67",
"@ali-hm/angular-tree-component": "12.0.5",
"@angular/animations": "21.2.18",
Expand All @@ -32,16 +32,16 @@
"@angular/platform-browser": "21.2.18",
"@angular/platform-browser-dynamic": "21.2.18",
"@angular/router": "21.2.18",
"@auth0/angular-jwt": "5.1.0",
"@auth0/angular-jwt": "5.2.0",
"@codingame/monaco-vscode-java-default-extension": "37.6.1",
"@codingame/monaco-vscode-python-default-extension": "37.6.1",
"@lezer/java": "1.1.5",
"@lezer/python": "1.1.19",
"@ngneat/until-destroy": "10.0.0",
"@ngx-formly/core": "7.1.0",
"@ngx-formly/ng-zorro-antd": "7.1.0",
"@ngx-formly/core": "7.2.0",
"@ngx-formly/ng-zorro-antd": "7.2.0",
"ai": "5.0.93",
"ajv": "8.18.0",
"ajv": "8.20.0",
"concaveman": "2.0.0",
"d3-shape": "2.1.0",
"dagre": "0.8.5",
Expand All @@ -59,25 +59,25 @@
"ngx-color-picker": "12.0.1",
"ngx-file-drop": "16.0.0",
"ngx-json-viewer": "3.2.1",
"ngx-markdown": "21.2.0",
"papaparse": "5.4.1",
"ngx-markdown": "21.3.0",
"papaparse": "5.7.1",
"path-browserify": "1.0.1",
"plotly.js-basic-dist-min": "2.29.0",
"plotly.js-basic-dist-min": "2.35.3",
"quill": "2.0.3",
"quill-cursors": "4.3.0",
"read-excel-file": "5.7.1",
"ring-buffer-ts": "1.0.3",
"read-excel-file": "5.8.8",
"ring-buffer-ts": "1.2.0",
"rxjs": "7.8.2",
"tinyqueue": "2.0.3",
"tslib": "2.3.1",
"tslib": "2.9.1",
"uuid": "14.0.1",
"y-monaco": "0.1.6",
"y-protocols": "1.0.7",
"y-quill": "1.0.0",
"y-websocket": "1.5.4",
"yjs": "13.6.31",
"zod": "3.25.76",
"zone.js": "0.15.1"
"zone.js": "0.16.3"
},
"resolutions": {
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@37.6.1",
Expand All @@ -92,12 +92,12 @@
"@angular-devkit/build-angular": "21.2.19",
"@angular-devkit/core": "21.2.19",
"@angular-devkit/schematics": "21.2.19",
"@angular-eslint/eslint-plugin": "21.3.1",
"@angular-eslint/eslint-plugin": "21.4.0",
"@angular-eslint/eslint-plugin-template": "21.4.0",
"@angular-eslint/template-parser": "21.4.0",
"@angular/cli": "21.2.19",
"@angular/compiler-cli": "21.2.18",
"@nx/angular": "23.0.2",
"@nx/angular": "23.3.2",
"@schematics/angular": "21.2.19",
"@types/backbone": "1.4.23",
"@types/concaveman": "1.1.6",
Expand All @@ -106,40 +106,42 @@
"@types/file-saver": "2.0.7",
"@types/graphlib": "2.1.12",
"@types/json-schema": "7.0.15",
"@types/lodash": "4.14.179",
"@types/lodash": "4.17.27",
"@types/lodash-es": "4.17.12",
"@types/node": "24.10.1",
"@types/papaparse": "5.3.5",
"@types/node": "24.19.2",
"@types/papaparse": "5.5.2",
"@types/plotly.js-basic-dist-min": "2.12.4",
"@types/quill": "2.0.14",
"@typescript-eslint/eslint-plugin": "8.59.0",
"@typescript-eslint/parser": "8.62.1",
"@typescript-eslint/types": "8.59.0",
"@typescript-eslint/utils": "8.59.0",
"@typescript-eslint/eslint-plugin": "8.72.2",
"@typescript-eslint/parser": "8.72.2",
"@typescript-eslint/types": "8.72.2",
"@typescript-eslint/utils": "8.72.2",
"@vitest/browser": "4.1.11",
"@vitest/browser-playwright": "4.1.11",
"@vitest/coverage-v8": "4.1.11",
"buffer": "5.7.1",
"build-number-generator": "3.1.0",
"concurrently": "10.0.3",
"css-loader": "6.11.0",
"eslint": "8.57.0",
"eslint-plugin-rxjs": "5.0.3",
"eslint-plugin-rxjs-angular": "2.0.1",
"jsdom": "25.0.1",
"nodecat": "2.0.0",
"nx": "23.0.2",
"playwright": "1.64.1",
"prettier": "3.2.5",
"nx": "23.3.2",
"playwright": "1.65.1",
"prettier": "3.10.1",
"prettier-eslint-cli": "8.0.1",
"rxjs-marbles": "7.0.1",
"sass": "1.71.1",
"ts-proto": "2.2.0",
"sass": "1.108.2",
"style-loader": "3.3.4",
"ts-proto": "2.20.0",
"typescript": "5.9.3",
"vitest": "4.1.11"
},
"browserslist": [
"defaults",
"not ie <= 11"
],
"packageManager": "yarn@4.14.1"
"packageManager": "yarn@4.18.1"
}
2 changes: 1 addition & 1 deletion frontend/src/app/common/service/user/auth.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -270,8 +270,8 @@ export class AuthService {

private registerAutoLogout() {
this.tokenExpirationSubscription?.unsubscribe();
const expirationTime = this.jwtHelperService.getTokenExpirationDate()?.getTime();
const token = AuthService.getAccessToken();
const expirationTime = token === null ? undefined : this.jwtHelperService.getTokenExpirationDate(token)?.getTime();
if (token !== null && !this.jwtHelperService.isTokenExpired(token) && expirationTime !== undefined) {
// In RxJS 7, timer emits immediately then completes. Using ignoreElements() suppresses
// the emitted value so the complete callback fires only after the specified delay.
Expand Down
80 changes: 38 additions & 42 deletions frontend/src/app/common/type/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,57 +34,53 @@ export enum Role {
export type Second = number;
export type MilliSecond = number;

export interface User
extends Readonly<{
uid: number;
name: string;
email: string;
googleId?: string;
role: Role;
color?: string;
avatar?: string;
comment: string;
lastLogin?: number;
accountCreation?: Second;
affiliation?: string;
joiningReason: string;
isPlaceholder?: boolean;
}> {}
export interface User extends Readonly<{
uid: number;
name: string;
email: string;
googleId?: string;
role: Role;
color?: string;
avatar?: string;
comment: string;
lastLogin?: number;
accountCreation?: Second;
affiliation?: string;
joiningReason: string;
isPlaceholder?: boolean;
}> {}

export interface File
extends Readonly<{
userId: number;
fileId: number;
fileName: string;
fileSize: number;
uploadedTime: number;
description: string;
}> {}
export interface File extends Readonly<{
userId: number;
fileId: number;
fileName: string;
fileSize: number;
uploadedTime: number;
description: string;
}> {}

export interface Workflow
extends Readonly<{
userId: number;
workflowId: number;
workflowName: string;
creationTime: number;
lastModifiedTime: number;
}> {}
export interface Workflow extends Readonly<{
userId: number;
workflowId: number;
workflowName: string;
creationTime: number;
lastModifiedTime: number;
}> {}

export interface WorkflowQuota {
workflowId: number;
workflowName: string;
executions: ExecutionQuota[];
}

export interface ExecutionQuota
extends Readonly<{
eid: number;
workflowId: number;
workflowName: string;
resultBytes: number;
runTimeStatsBytes: number;
logBytes: number;
}> {}
export interface ExecutionQuota extends Readonly<{
eid: number;
workflowId: number;
workflowName: string;
resultBytes: number;
runTimeStatsBytes: number;
logBytes: number;
}> {}

/**
* Coeditor extends User and adds clientId to differentiate local user and collaborative editor
Expand Down
21 changes: 10 additions & 11 deletions frontend/src/app/common/type/workflow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,17 +91,16 @@ export function getDefaultFormBinding(): FormBindingConfig {
*
*/

export interface WorkflowContent
extends Readonly<{
operators: OperatorPredicate[];
operatorPositions: { [key: string]: Point };
links: OperatorLink[];
commentBoxes: CommentBox[];
settings: WorkflowSettings;
/** Present once an author set up the Form View. Rides in the content (like `settings`),
* so it is saved/cloned/versioned/published with the workflow for free. */
formBinding?: FormBindingConfig;
}> {}
export interface WorkflowContent extends Readonly<{
operators: OperatorPredicate[];
operatorPositions: { [key: string]: Point };
links: OperatorLink[];
commentBoxes: CommentBox[];
settings: WorkflowSettings;
/** Present once an author set up the Form View. Rides in the content (like `settings`),
* so it is saved/cloned/versioned/published with the workflow for free. */
formBinding?: FormBindingConfig;
}> {}

export type Workflow = { content: WorkflowContent } & WorkflowMetadata;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ export class UserVenvComponent implements OnInit {
return {
name,
versionOp: (match ? match[1] : "==") as "==" | ">=" | "<=",
version: match ? match[2] : raw ?? "",
version: match ? match[2] : (raw ?? ""),
};
});
return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ describe("WorkflowExecutionHistoryComponent", () => {
{ provide: NotificationService, useValue: notificationService },
// UserService backs the <texera-user-avatar> child in each table row.
{ provide: UserService, useClass: StubUserService },
{ provide: NZ_MODAL_DATA, useValue: options.modalData === null ? null : options.modalData ?? { wid: 1 } },
{ provide: NZ_MODAL_DATA, useValue: options.modalData === null ? null : (options.modalData ?? { wid: 1 }) },
{ provide: ActivatedRoute, useValue: { snapshot: { params: options.routeParams ?? {} } } },
...commonTestProviders,
],
Expand Down
Loading
Loading