ToolJet is the open-source foundation of ToolJet AI - the enterprise app generation platform for building internal tools, dashboard, business applications, workflows and AI agents 🚀
This report presents the forensic synthetic code analysis of ToolJet/ToolJet, a JavaScript project with 38,203 GitHub stars. SynthScan v2.0 examined 2,318,658 lines of code across 16654 source files, recording 4673 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 2.8 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 4673 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/assets/translations/zh.json | 520 | "placeholder": "占位符", | CODE |
| LOW | frontend/assets/translations/de.json | 489 | "placeholder": "Platzhalter", | CODE |
| LOW | frontend/assets/translations/ru.json | 489 | "placeholder": "Плейсхолдер", | CODE |
| LOW | frontend/assets/translations/uk.json | 489 | "placeholder": "Плейсхолдер", | CODE |
| LOW | frontend/assets/translations/en.json | 608 | "placeholder": "Placeholder", | CODE |
| LOW | frontend/assets/translations/it.json | 489 | "placeholder": "Placeholder", | CODE |
| LOW | frontend/assets/translations/fr.json | 489 | "placeholder": "Espace réservé", | CODE |
| LOW | frontend/assets/translations/id.json | 488 | "placeholder": "Placeholder", | CODE |
| LOW | frontend/assets/translations/es.json | 523 | "placeholder": "Marcador", | CODE |
| LOW | …end/src/AppBuilder/WidgetManager/widgets/codeEditor.js | 51 | defaultValue: 'placeholder', | CODE |
| LOW | frontend/src/AppBuilder/WidgetManager/widgets/form.js | 91 | "{ 'name': 'John Doe', 'age': 35, 'isActive': true, 'dob': '01-01-1990', 'hobbies': ['reading', 'gaming', 'cyc | CODE |
| LOW | frontend/src/AppBuilder/WidgetManager/widgets/form.js | 91 | "{ 'name': 'John Doe', 'age': 35, 'isActive': true, 'dob': '01-01-1990', 'hobbies': ['reading', 'gaming', 'cyc | CODE |
| LOW | …/AppBuilder/RightSideBar/Inspector/Components/Chat.jsx | 55 | 'placeholder', | CODE |
| LOW | …or/Components/Form/_components/FieldPopoverContent.jsx | 86 | onChange={(value) => handleFieldChange('placeholder', value)} | CODE |
| LOW | …nspector/Components/Form/handlers/parameterHandlers.js | 44 | "{{{ 'name': 'John Doe', 'age': 35, 'isActive': true, 'dob': '01-01-1990', 'hobbies': ['reading', 'gaming' | CODE |
| LOW | …nspector/Components/Form/handlers/parameterHandlers.js | 44 | "{{{ 'name': 'John Doe', 'age': 35, 'isActive': true, 'dob': '01-01-1990', 'hobbies': ['reading', 'gaming' | CODE |
| LOW | frontend/src/AppBuilder/_hooks/useAppData.js | 810 | if (type === 'placeholder' && category === 'text') { | CODE |
| LOW | frontend/src/AppBuilder/_hooks/useAppData.js | 813 | if (category === 'text' && type === 'placeholder') { | CODE |
| LOW | frontend/src/AppBuilder/Widgets/Form/FormUtils.js | 132 | uiComponentsDraft[index * 2 + 1]['definition']['properties']['placeholder'] = value?.placeholder; | CODE |
| LOW | frontend/src/AppBuilder/Widgets/Form/FormUtils.js | 226 | uiComponentsDraft[index * 2 + 1]['definition']['properties']['placeholder'] = value?.placeholder; | CODE |
| LOW | frontend/src/AppBuilder/Widgets/Form/FormUtils.js | 253 | uiComponentsDraft[index * 2 + 1]['definition']['properties']['placeholder'] = value?.placeholder; | CODE |
| LOW | frontend/src/AppBuilder/Widgets/Form/FormUtils.js | 345 | uiComponentsDraft[index * 2 + 1]['definition']['properties']['placeholder'] = value?.placeholder; | CODE |
| LOW | …anban/helpers/multipleContainersKeyboardCoordinates.js | 80 | if (newDroppable.id === 'placeholder') { | CODE |
| LOW | …Builder/Widgets/MultiselectV2/CustomValueContainer.jsx | 63 | <Placeholder {...props} key="placeholder" {...selectProps} data={selectProps?.visibleValues}> | CODE |
| LOW | …AppBuilder/Widgets/DropdownV2/CustomValueContainer.jsx | 49 | <Placeholder {...props} key="placeholder" {...selectProps} data={props.getValue()}> | CODE |
| LOW | frontend/src/components/ui/Rocket/Field/Field.spec.md | 72 | <Input placeholder="John Doe" /> | CODE |
| LOW⚡ | …ntend/src/components/ui/Rocket/Field/Field.stories.jsx | 73 | <Input placeholder="John Doe" /> | CODE |
| LOW | …end/src/components/ui/Rocket/Dialog/Dialog.stories.jsx | 206 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et | CODE |
| LOW | …end/src/components/ui/Rocket/Dialog/Dialog.stories.jsx | 206 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et | CODE |
| LOW | …end/src/components/ui/Rocket/Dialog/Dialog.stories.jsx | 261 | Paragraph {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW | …end/src/components/ui/Rocket/Dialog/Dialog.stories.jsx | 261 | Paragraph {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW | …ntend/src/components/ui/Rocket/Sheet/Sheet.stories.jsx | 147 | Paragraph {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW | …ntend/src/components/ui/Rocket/Sheet/Sheet.stories.jsx | 147 | Paragraph {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW⚡ | …mponents/ui/Rocket/AlertDialog/AlertDialog.stories.jsx | 36 | <AlertDialogTitle>Lorem ipsum dolor sit amet.</AlertDialogTitle> | CODE |
| LOW⚡ | …mponents/ui/Rocket/AlertDialog/AlertDialog.stories.jsx | 36 | <AlertDialogTitle>Lorem ipsum dolor sit amet.</AlertDialogTitle> | CODE |
| LOW⚡ | …mponents/ui/Rocket/AlertDialog/AlertDialog.stories.jsx | 38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer elementum mattis arcu, non vulputate est | CODE |
| LOW⚡ | …mponents/ui/Rocket/AlertDialog/AlertDialog.stories.jsx | 38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer elementum mattis arcu, non vulputate est | CODE |
| LOW | frontend/src/_components/SortableList/utilities.js | 133 | item.children.push({ id: `${item.id}-placeholder`, name: 'placeholder' }); | CODE |
| LOW | plugins/packages/clickhouse/lib/operations.json | 42 | "placeholder": "Enter array of objects" | CODE |
| LOW | plugins/packages/clickhouse/lib/operations.json | 49 | "placeholder": "tablename", | CODE |
| LOW | plugins/packages/clickhouse/lib/operations.json | 60 | "placeholder": "{{['date', 'str', 'arr', 'arr2']}}", | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 441 | "placeholder": "Select table" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 451 | "placeholder": "e.g. id or {{ [\"id\", \"tenant_id\"] }}" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 460 | "placeholder": "{{ [ { id: 1, name: 'Alice' } ] }}" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 489 | "placeholder": "Select table" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 499 | "placeholder": "e.g. id or {{ [\"id\", \"tenant_id\"] }}" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 508 | "placeholder": "{{ [ { id: 1, name: 'Alice' } ] }}" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 520 | "placeholder": "Enter table name" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 530 | "placeholder": "Enter primary key column" | CODE |
| LOW⚡ | plugins/packages/postgresql/lib/operations.json | 539 | "placeholder": "{{ [ { id: 1, name: 'Alice' } ] }}" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 22 | "placeholder": "Leave empty to use default", | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 31 | "placeholder": "Leave empty to use default", | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 47 | "placeholder": "SELECT * FROM users" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 86 | "placeholder": "Select schema" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 101 | "placeholder": "Select table" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 147 | "placeholder": "Enter limit" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 157 | "placeholder": "Enter offset" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 171 | "placeholder": "Select schema" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 186 | "placeholder": "Select table" | CODE |
| LOW | plugins/packages/postgresql/lib/operations.json | 209 | "placeholder": "Select schema" | CODE |
| 2699 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 17 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 23 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 25 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 39 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 41 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 49 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 51 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 74 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 76 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 94 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 96 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 102 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 104 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 136 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 138 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 142 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 144 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 148 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 150 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 155 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 157 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 176 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 178 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 187 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 230 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 232 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 240 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 242 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | docker/nsjail/python-execution.cfg | 249 | # ============================================================================ | COMMENT |
| MEDIUM | docker/nsjail/python-execution.cfg | 1 | # ============================================================================ | COMMENT |
| MEDIUM | docker/nsjail/python-execution.cfg | 3 | # ============================================================================ | COMMENT |
| MEDIUM | frontend/src/HomePage/AppMenu.jsx | 39 | // ─── Ownership ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/HomePage/AppMenu.jsx | 42 | // ─── App-level edit access ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/_styles/queryManager.scss | 1935 | // ─── Query Folder Feature ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …Builder/AppCanvas/Grid/helpers/flexContainerDragEnd.js | 66 | // ── Case 1: same FlexContainer → reorder only, no grid writes ────────────── | COMMENT |
| MEDIUM | …Builder/AppCanvas/Grid/helpers/flexContainerDragEnd.js | 98 | // ── Case 2: different FlexContainer → reparent at the locked slot ────────── | COMMENT |
| MEDIUM | …Builder/AppCanvas/Grid/helpers/flexContainerDragEnd.js | 134 | // ── Case 3: dragged out to grid canvas → synthesize absolute layout ───────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/QueryManager/queryManager.theme.scss | 294 | // ─── DataSourcePicker ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/AppBuilder/_stores/slices/gridSlice.js | 17 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/AppBuilder/_stores/slices/gridSlice.js | 32 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/AppBuilder/_stores/slices/gridSlice.js | 214 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/AppBuilder/_stores/slices/gridSlice.js | 245 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 222 | // ─── Segment Builders ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 321 | // ─── Full Initialization ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 349 | // ─── Getter (backward compat) ───────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 359 | // ─── Context-Aware Hints ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 498 | // ─── Server-side Global Resolve ──────────────────────────────────── | COMMENT |
| MEDIUM | …ntend/src/AppBuilder/_stores/slices/codeHinterSlice.js | 521 | // ─── Helper ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tores/slices/componentSlices/listViewComponentSlice.js | 249 | // ─── Row-Scoped Component Resolution ─────────────────────────────────────── | COMMENT |
| MEDIUM | …tores/slices/componentSlices/listViewComponentSlice.js | 268 | // ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 16 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 19 | // ── High-level model ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 54 | // ── Pipeline ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 64 | // ── Key concepts ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 78 | // ═════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 937 | // ── GROW / SHRINK (changed widget is in flow) ─────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/AppBuilder/_stores/utils/dynamicHeightReflow.js | 954 | // ── HIDE / SHOW (changed widget is out of flow, `collapseWhenHidden`) ─────── | COMMENT |
| MEDIUM⚡ | …c/components/ui/blocks/DataTable/DataTable.stories.jsx | 35 | // ── Default ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …c/components/ui/blocks/DataTable/DataTable.stories.jsx | 44 | // ── Compact ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …c/components/ui/blocks/DataTable/DataTable.stories.jsx | 53 | // ── Loading ───────────────────────────────────────────────────────────────── | COMMENT |
| 488 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/pre-release/ee/ee-try-entrypoint.sh | 6 | # Step 1: Configure and Start PostgreSQL | COMMENT |
| LOW | docker/LTS/ee/ee-try-entrypoint-lts.sh | 6 | # Step 1: Configure and Start PostgreSQL | COMMENT |
| LOW | docker/LTS/ee/ee-try-entrypoint-lts.sh | 24 | # Step 2: Start ToolJet services | COMMENT |
| LOW | …ppBuilder/AppCanvas/Grid/hooks/useElementGuidelines.js | 40 | // Step 1: Keep global extremes | COMMENT |
| LOW | …ppBuilder/AppCanvas/Grid/hooks/useElementGuidelines.js | 52 | // Step 2: Keep local extremes for each alignment line | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/EditRowForm.jsx | 31 | // Step 1: Parse cv until it's fully converted to an object | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/EditRowForm.jsx | 36 | // Step 2: Use Lodash's isEqual for a deep comparison | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/RowForm.jsx | 27 | // Step 1: Parse cv until it's fully converted to an object | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/RowForm.jsx | 32 | // Step 2: Use Lodash's isEqual for a deep comparison | COMMENT |
| LOW | …-tests/cypress/commands/platform/gitSyncAppCommands.js | 751 | // Step 1: resolve the AppGitSync record (auto-created if missing) | COMMENT |
| LOW | …-tests/cypress/commands/platform/gitSyncAppCommands.js | 768 | // Step 2: push app content to git | COMMENT |
| LOW | …tests/cypress/commands/platform/platformApiCommands.js | 580 | // Step 1: Authenticate with Okta to get session token | COMMENT |
| LOW | …tests/cypress/commands/platform/platformApiCommands.js | 596 | // Step 2: Exchange session token for authorization code | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 31 | // Step 1: Verify initial draft state (v1 as draft) | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 41 | // Step 2: Open save version modal and verify all modal content | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 46 | // Step 3: Save v1 with description | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 51 | // Step 4: Verify v1 saved state (no draft tag, has promote button, description visible) | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 55 | // Step 5: Open create draft modal and verify all modal content | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 63 | // Step 6: Create v2 draft from v1 | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 68 | // Step 7: Verify v2 draft state | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 73 | // Step 8: Save v2 with description | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 76 | // Step 9: Verify v2 saved state | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 80 | // Step 10: Verify both v1 and v2 available in "create from" dropdown | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 89 | // Step 11: Create v3 draft from v2 | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 94 | // Step 12: Verify v3 draft state and all versions exist | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 68 | // Step 1: Verify LDAP configuration page UI | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 114 | // Step 2: Configure LDAP SSO successfully | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 133 | // Step 3: Verify LDAP login page UI | COMMENT |
| LOW | …s/licensing/basicPlanTestcases/appWorkflowLimits.cy.js | 44 | // Step 5: Verify clone button disabled at limit (Bug) | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1357 | // Step 1: Search for packages | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1368 | // Step 2: Update workflow packages | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1379 | // Step 3: Poll bundle status until ready | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1397 | // Step 4: Verify entity in database | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1414 | // Step 5: Test rebuild functionality | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1425 | // Step 6: Verify rebuilt bundle consistency | COMMENT |
| LOW⚡ | …ta-migrations/1742905945987-UpdateGlobalDataSources.ts | 17 | // Step 1: Set app_version_id to NULL for existing global data sources | COMMENT |
| LOW⚡ | …ta-migrations/1742905945987-UpdateGlobalDataSources.ts | 24 | // Step 2: Add a check constraint to ensure app_version_id is NULL for global data sources | COMMENT |
| LOW | …data-migrations/1766500000001-SeedFolderPermissions.ts | 5 | // Step 1: Create granular_permissions entries for folders for each existing permission_group | COMMENT |
| LOW | …data-migrations/1766500000001-SeedFolderPermissions.ts | 21 | // Step 2: Create folders_group_permissions for each new granular permission | COMMENT |
| LOW | …data-migrations/1776600000000-SeedPushModulesBranch.ts | 107 | // Step 1: seed module BRANCH versions on the push-modules branch only. | COMMENT |
| LOW | …data-migrations/1776600000000-SeedPushModulesBranch.ts | 149 | // Step 2: seed a push-modules BRANCH version for non-module apps that contain | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 5 | // Step 1: For app_versions with NULL co_relation_id, copy from a sibling version | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 20 | // Step 2: For apps with NULL co_relation_id, copy from any of their versions | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 35 | // Step 3: For remaining apps still with NULL co_relation_id (no versions have it), | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 5 | // Step 1: Add nullable branch_id — PostgreSQL 11+ makes this instant (catalog-only change) | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 16 | // Step 2: Replace uniq_folder_apps_app_id (global, app_id only) with two partial indexes. | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 35 | // Step 3: Add FK with NOT VALID — skips the full table scan that a plain ADD FOREIGN KEY | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 47 | // Step 4: Materialise branch-scoped rows for git orgs using app_versions as source of truth. | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 64 | // Step 5: Delete the now-replaced branchless rows for git orgs. | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 80 | // Step 6: Validate FK — takes SHARE UPDATE EXCLUSIVE (allows concurrent reads/writes) | COMMENT |
| LOW | …modules/tooljet-db/services/postgrest-proxy.service.ts | 25 | // NOTE: This method forwards request directly to PostgREST Using express middleware | COMMENT |
| LOW | server/src/modules/versions/util.service.ts | 202 | // Step 1: random UUID name for the new draft. Mirrors branch-version | COMMENT |
| LOW | server/src/modules/versions/util.service.ts | 246 | // Step 2: detach branch_id from the just-published row. Delegated via the | COMMENT |
| LOW⚡ | server/src/modules/organization-users/util.service.ts | 89 | // Step 1 - Remove all custom groups | COMMENT |
| LOW⚡ | server/src/modules/organization-users/util.service.ts | 92 | // Step 2 - Change the role if required | COMMENT |
| LOW⚡ | server/src/modules/organization-users/util.service.ts | 102 | // Step 3 - Attach the new groups | COMMENT |
| LOW | server/src/modules/organization-users/util.service.ts | 131 | // Step 4 - License check | COMMENT |
| LOW | server/src/modules/organization-users/service.ts | 49 | // Step 1 - Update user details - Only super admin can | COMMENT |
| LOW | server/src/modules/organization-users/service.ts | 58 | // Step 2 - Roles and groups update | COMMENT |
| LOW | server/src/modules/organization-users/service.ts | 72 | // Step 3 - Update user metadata | COMMENT |
| 726 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …rc/SuccessInfoScreen/VerificationSuccessInfoScreen.jsx | 20 | export const VerificationSuccessInfoScreen = function VerificationSuccessInfoScreen() { | CODE |
| LOW | frontend/src/_utils/workflowExecutionState.js | 92 | export function getExecutionDisplayConfig(execution) { | CODE |
| LOW | frontend/src/_helpers/editorHelpers.js | 44 | function verifyDotAndBracketNotations(jsString) { | CODE |
| LOW | frontend/src/_helpers/editorHelpers.js | 105 | export function findComponentsWithReferences(components, changedCurrentState) { | CODE |
| LOW | frontend/src/_helpers/codehinterPortalDimensions.js | 11 | export function readCodehinterPopupEditorDimensions() { | CODE |
| LOW | frontend/src/_helpers/codehinterPortalDimensions.js | 26 | export function writeCodehinterPopupEditorDimensions(partial) { | CODE |
| LOW | frontend/src/_helpers/codehinterPortalDimensions.js | 44 | export function getDefaultCodehinterPopupEditorDimensions() { | CODE |
| LOW | frontend/src/_helpers/useSessionTransferRedirect.js | 6 | export function useSessionTransferRedirect(logPrefix = 'sessionTransfer') { | CODE |
| LOW | frontend/src/_helpers/handle-response.js | 146 | export function handleResponseWithoutValidation(response) { | CODE |
| LOW | frontend/src/_helpers/active-branch.js | 89 | export function unregisterBranchFocusSync() { | CODE |
| LOW | frontend/src/_helpers/white-label/whiteLabelling.js | 16 | export function retrieveWhiteLabelFavicon() { | CODE |
| LOW | frontend/src/_helpers/white-label/whiteLabelling.js | 155 | export async function resetToDefaultWhiteLabels() { | CODE |
| LOW | frontend/src/_helpers/white-label/whiteLabelling.js | 162 | export function checkWhiteLabelsDefaultState() { | CODE |
| LOW | frontend/src/AppBuilder/_utils/auth.js | 23 | export function fetchOauthTokenForSlackAndGSheet(dataSourceId, data) { | CODE |
| LOW | frontend/src/AppBuilder/_helpers/editorHelpers.js | 233 | function verifyDotAndBracketNotations(jsString) { | CODE |
| LOW | frontend/src/AppBuilder/_helpers/editorHelpers.js | 294 | export function findComponentsWithReferences(components, changedCurrentState) { | CODE |
| LOW | …end/src/AppBuilder/CodeEditor/SingleLineCodeEditor.jsx | 322 | function autoCompleteExtensionConfig(context) { | CODE |
| LOW | …tend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx | 187 | function autoCompleteExtensionConfig(context) { | CODE |
| LOW | …tend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx | 291 | function updateCurrentLineObserver(editorView) { | CODE |
| LOW | …/AppBuilder/AppCanvas/AutoComputeMobileLayoutAlert.jsx | 13 | export default function AutoComputeMobileLayoutAlert({ currentLayout, darkMode, isCurrentVersionLocked }) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/appCanvasUtils.js | 171 | export function addChildrenWidgetsToParent(componentType, parentId, currentLayout) { | CODE |
| LOW | …tend/src/AppBuilder/AppCanvas/copyPasteWidgetsUtils.js | 23 | function markClipboardAsCopyAfterCutPaste(copiedComponentObj) { | CODE |
| LOW | …tend/src/AppBuilder/AppCanvas/copyPasteWidgetsUtils.js | 131 | function calculateComponentPosition(component, existingComponents, layout, targetParentId) { | CODE |
| LOW | …tend/src/AppBuilder/AppCanvas/copyPasteWidgetsUtils.js | 278 | export function resolvePastedComponentName({ isCut, isCloning, originalName, componentType, mergedComponents }) { | CODE |
| LOW | …ppBuilder/AppCanvas/Hooks/useEnableMainCanvasScroll.js | 5 | export default function useEnableMainCanvasScroll({ canvasContentRef, enabled = true }) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridUtils.js | 176 | function resolveCompactionCollision(layout, item, moveToCoord, axis) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridUtils.js | 294 | export function getMouseDistanceFromParentDiv(event, id, parentWidgetType, frozenTargetRect) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridUtils.js | 312 | export function findHighestLevelofSelection(_selectedComponents) { | CODE |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridUtils.js | 338 | export function findChildrenAndGrandchildren(parentId, widgets) { | CODE |
| LOW | …c/AppBuilder/AppCanvas/Grid/helpers/gridResizeUtils.js | 31 | export function computeFlexResizeEndPatch({ lastEvent, gridHeight }) { | CODE |
| LOW | …Builder/AppCanvas/Grid/helpers/flexContainerDragEnd.js | 36 | export function handleFlexContainerDragEnd({ | CODE |
| LOW | …src/AppBuilder/RightSideBar/Inspector/EventManager.jsx | 212 | function getComponentsOptionsWithoutModalChilds() { | CODE |
| LOW | …src/AppBuilder/RightSideBar/Inspector/EventManager.jsx | 225 | function getComponentOptionsOfComponentsWithActions(componentType = '') { | CODE |
| LOW | …src/AppBuilder/RightSideBar/Inspector/EventManager.jsx | 243 | function getComponentActionOptions(componentId) { | CODE |
| LOW | …src/AppBuilder/RightSideBar/Inspector/EventManager.jsx | 273 | function getComponentActionDefaultParams(componentId, actionHandle) { | CODE |
| LOW | …nd/src/AppBuilder/RightSideBar/Inspector/Inspector.jsx | 230 | function handleComponentNameChange(newName) { | CODE |
| LOW | …tSideBar/Inspector/hooks/useNewEventAutoPopoverOpen.js | 16 | export function useNewEventAutoPopoverOpen(focusedEventIndex, setFocusedEventIndex) { | CODE |
| LOW | …geSettingsTab/PageMenu/DeletePageConfirmationModal.jsx | 8 | export function DeletePageConfirmationModal({ darkMode }) { | CODE |
| LOW | frontend/src/AppBuilder/CodeBuilder/CodeBuilder.jsx | 31 | // function computeIfDropDownCanBeShown(instance) { | COMMENT |
| LOW | …/QueryManager/Components/SuccessNotificationInputs.jsx | 5 | export default function SuccessNotificationInputs({ currentState, options, darkMode, optionchanged }) { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx | 47 | function addNewFilterConditionPair() { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx | 54 | function removeFilterConditionPair(id) { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx | 65 | function updateFilterOptionsChanged(filter) { | CODE |
| LOW | …ueryManager/QueryEditors/TooljetDatabase/JoinTable.jsx | 225 | function addNewFilterConditionEntry() { | CODE |
| LOW | …ueryManager/QueryEditors/TooljetDatabase/JoinTable.jsx | 247 | function removeFilterConditionEntry(index) { | CODE |
| LOW | …ueryManager/QueryEditors/TooljetDatabase/JoinTable.jsx | 266 | function updateFilterConditionEntry(type, indexToUpdate, valueToUpdate) { | CODE |
| LOW | …ueryManager/QueryEditors/TooljetDatabase/JoinTable.jsx | 349 | function updateOperatorForConditions(changedOperator) { | CODE |
| LOW | …anager/QueryEditors/TooljetDatabase/JoinConstraint.jsx | 99 | function isMatchingForeignKeyObjects(foreignKeyTableList, tableList) { | CODE |
| LOW | …anager/QueryEditors/TooljetDatabase/JoinConstraint.jsx | 114 | function checkIfAdjacentTableHasForeignKey(isChoosingLHStable, tableId) { | CODE |
| LOW | …anager/QueryEditors/TooljetDatabase/JoinConstraint.jsx | 136 | function autoFillColumnIfForeignKeyExists(tableId, isChoosingLHStable) { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx | 20 | function addNewFilterConditionPair() { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx | 27 | function removeFilterConditionPair(id) { | CODE |
| LOW | …eryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx | 38 | function updateFilterOptionsChanged(filter) { | CODE |
| LOW | …QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx | 26 | function addNewFilterConditionPair() { | CODE |
| LOW | …QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx | 40 | function removeFilterConditionPair(id) { | CODE |
| LOW | …QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx | 62 | function updateFilterOptionsChanged(filter) { | CODE |
| LOW | frontend/src/AppBuilder/_stores/utils.js | 457 | export function replaceQueryOptionsEntityReferencesWithIds( | CODE |
| LOW | frontend/src/AppBuilder/_stores/utils.js | 551 | export function convertAllKeysToSnakeCase(o) { | CODE |
| LOW | frontend/src/AppBuilder/_stores/ast.js | 32 | export function extractAndReplaceReferencesFromString(input, componentIdNameMapping = {}, queryIdNameMapping = {}) { | CODE |
| LOW | …nd/src/AppBuilder/Header/UpdatePresenceMultiPlayer.jsx | 7 | export default function UpdatePresenceMultiPlayer() { | CODE |
| 187 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/nsjail/python-execution.cfg | 1 | # ============================================================================ | COMMENT |
| LOW | docker/nsjail/python-execution.cfg | 141 | COMMENT | |
| LOW | docker/nsjail/python-execution.cfg | 181 | # - Debug other processes (ptrace) | COMMENT |
| LOW | docker/nsjail/python-execution.cfg | 241 | # EXECUTION | COMMENT |
| LOW | frontend/webpack.config.js | 141 | }, | COMMENT |
| LOW | frontend/webpack.config.js | 161 | // // HEAVY EDITORS GROUP - Split these out as they're HUGE and editor-only | COMMENT |
| LOW | frontend/webpack.config.js | 181 | // pdf: { | COMMENT |
| LOW | frontend/webpack.config.js | 201 | // test: /[\\/]node_modules[\\/](@radix-ui|bootstrap|react-bootstrap|@dnd-kit|react-dnd|react-dnd-html5-backen | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 701 | // return isFound; | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 721 | // // return previewQuery(_ref, query, true, processedParams); | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 741 | // return executeAction(_ref, event, mode, {}); | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 761 | // return executeAction(_ref, event, mode, {}); | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 781 | // const showModal = (modalName = '') => { | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 801 | // } | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 821 | // const event = { | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 841 | COMMENT | |
| LOW | frontend/src/_helpers/utils.js | 861 | // const event = { | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 881 | // }); | COMMENT |
| LOW | frontend/src/_helpers/utils.js | 901 | // }; | COMMENT |
| LOW | frontend/src/Oauth/Authorize.jsx | 61 | // Set AI cookie if prompt is available | COMMENT |
| LOW | frontend/src/Oauth/Authorize.jsx | 161 | // const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); | COMMENT |
| LOW | frontend/src/Oauth/Authorize.jsx | 181 | // } | COMMENT |
| LOW | frontend/src/Oauth/Authorize.jsx | 201 | // if (compressedPrompt) { | COMMENT |
| LOW | frontend/src/HomePage/HomePage.jsx | 1321 | // OLD: fetch remote branches for branch picker | COMMENT |
| LOW | frontend/src/AppBuilder/_utils/queryAbort.js | 1 | // Runtime state for the "abort in-flight query" feature. | COMMENT |
| LOW | …end/src/AppBuilder/WidgetManager/widgets/filepicker.js | 301 | // accordian: 'File Drop Area', | COMMENT |
| LOW | …/src/AppBuilder/WidgetManager/widgets/currencyinput.js | 241 | accordian: 'field', | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/selecto.scss | 1 | // .active-target::after{ | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/selecto.scss | 21 | // position: absolute; | COMMENT |
| LOW | …src/AppBuilder/AppCanvas/Hooks/useCanvasDropHandler.js | 181 | addedComponent = [newComponent]; | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 1 | // // hooks.js | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 21 | // useGridStore.getState().actions.setDraggingComponentId(e.target.id); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 41 | // const { draggedOverElemId, isParentChangeAllowed } = getDraggedOverInfo(e, widgets, boxes); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 61 | // ); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 81 | // const resizeData = calculateResizeData(e, _gridWidth, currentWidget); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 101 | COMMENT | |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 121 | // const dragData = calculateGroupDragData(events, positions, _gridWidth, parentId); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 141 | // } | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 161 | COMMENT | |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 181 | // const isHandle = targetElems.find((ele) => ele.classList.contains('handle-content')); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 201 | // let left = e.translate[0]; | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 221 | // if (draggedOverElem && draggedOverElem !== draggedOverElemRef.current) { | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 241 | // (ele) => ele.id !== e.target.id && (ele.classList.contains('target') || ele.classList.contains('real-canvas')) | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 261 | // const elemContainer = e.target.closest('.real-canvas'); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 281 | COMMENT | |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 301 | // function getCurrentLayout(id, boxes) { | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 321 | // if (isTopChanged) transformY -= height - currentLayout.height; | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 341 | // const transformY = Math.round(e.lastEvent.drag.beforeTranslate[1] / 10) * 10; | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 361 | // return events.map((ev) => { | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 381 | // }); | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 401 | // function arePositionsValid(positions) { | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 421 | COMMENT | |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 441 | // const posX = layout.left * _gridWidth; | COMMENT |
| LOW | frontend/src/AppBuilder/AppCanvas/Grid/gridHooks.js | 461 | // y: childRect.top - grandparentRect.top, | COMMENT |
| LOW | …nd/src/AppBuilder/AppCanvas/Grid/moveableExtensions.js | 1 | // export const MultiComponentHandle = { | COMMENT |
| LOW | …nd/src/AppBuilder/AppCanvas/Grid/moveableExtensions.js | 21 | // }, | COMMENT |
| LOW | …nd/src/AppBuilder/AppCanvas/Grid/moveableExtensions.js | 41 | // height="12" | COMMENT |
| LOW | …rc/AppBuilder/RightSideBar/Inspector/EventManager.scss | 1 | // Base UI Combobox renders its Positioner with a hardcoded `tw-isolate tw-z-50` | COMMENT |
| LOW | …ilder/RightSideBar/Inspector/Components/FilePicker.jsx | 141 | // Properties -> 0, Events -> 1, Validation -> 2 | COMMENT |
| LOW | …ilder/RightSideBar/PageSettingsTab/PageMenu/style.scss | 161 | // width: 20px; | COMMENT |
| 157 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/pre-release/ee/ee-try-entrypoint.sh | 6 | # Step 1: Configure and Start PostgreSQL | COMMENT |
| LOW | docker/LTS/ee/ee-try-entrypoint-lts.sh | 6 | # Step 1: Configure and Start PostgreSQL | COMMENT |
| LOW | docker/LTS/ee/ee-try-entrypoint-lts.sh | 24 | # Step 2: Start ToolJet services | COMMENT |
| LOW | …ppBuilder/AppCanvas/Grid/hooks/useElementGuidelines.js | 40 | // Step 1: Keep global extremes | COMMENT |
| LOW | …ppBuilder/AppCanvas/Grid/hooks/useElementGuidelines.js | 52 | // Step 2: Keep local extremes for each alignment line | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/EditRowForm.jsx | 31 | // Step 1: Parse cv until it's fully converted to an object | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/EditRowForm.jsx | 36 | // Step 2: Use Lodash's isEqual for a deep comparison | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/RowForm.jsx | 27 | // Step 1: Parse cv until it's fully converted to an object | COMMENT |
| LOW⚡ | frontend/src/TooljetDatabase/Forms/RowForm.jsx | 32 | // Step 2: Use Lodash's isEqual for a deep comparison | COMMENT |
| LOW | …-tests/cypress/commands/platform/gitSyncAppCommands.js | 751 | // Step 1: resolve the AppGitSync record (auto-created if missing) | COMMENT |
| LOW | …-tests/cypress/commands/platform/gitSyncAppCommands.js | 768 | // Step 2: push app content to git | COMMENT |
| LOW | …tests/cypress/commands/platform/platformApiCommands.js | 580 | // Step 1: Authenticate with Okta to get session token | COMMENT |
| LOW | …tests/cypress/commands/platform/platformApiCommands.js | 596 | // Step 2: Exchange session token for authorization code | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 31 | // Step 1: Verify initial draft state (v1 as draft) | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 41 | // Step 2: Open save version modal and verify all modal content | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 46 | // Step 3: Save v1 with description | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 51 | // Step 4: Verify v1 saved state (no draft tag, has promote button, description visible) | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 55 | // Step 5: Open create draft modal and verify all modal content | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 63 | // Step 6: Create v2 draft from v1 | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 68 | // Step 7: Verify v2 draft state | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 73 | // Step 8: Save v2 with description | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 76 | // Step 9: Verify v2 saved state | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 80 | // Step 10: Verify both v1 and v2 available in "create from" dropdown | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 89 | // Step 11: Create v3 draft from v2 | COMMENT |
| LOW⚡ | …ath/platform/commonTestcases/apps/newVersionFlow.cy.js | 94 | // Step 12: Verify v3 draft state and all versions exist | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 68 | // Step 1: Verify LDAP configuration page UI | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 114 | // Step 2: Configure LDAP SSO successfully | COMMENT |
| LOW | …appyPath/platform/eeTestcases/sso/ldapOnboarding.cy.js | 133 | // Step 3: Verify LDAP login page UI | COMMENT |
| LOW | …s/licensing/basicPlanTestcases/appWorkflowLimits.cy.js | 44 | // Step 5: Verify clone button disabled at limit (Bug) | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1357 | // Step 1: Search for packages | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1368 | // Step 2: Update workflow packages | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1379 | // Step 3: Poll bundle status until ready | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1397 | // Step 4: Verify entity in database | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1414 | // Step 5: Test rebuild functionality | COMMENT |
| LOW | …er/test/modules/workflows/e2e/workflow-bundles.spec.ts | 1425 | // Step 6: Verify rebuilt bundle consistency | COMMENT |
| LOW⚡ | …ta-migrations/1742905945987-UpdateGlobalDataSources.ts | 17 | // Step 1: Set app_version_id to NULL for existing global data sources | COMMENT |
| LOW⚡ | …ta-migrations/1742905945987-UpdateGlobalDataSources.ts | 24 | // Step 2: Add a check constraint to ensure app_version_id is NULL for global data sources | COMMENT |
| LOW | …data-migrations/1766500000001-SeedFolderPermissions.ts | 5 | // Step 1: Create granular_permissions entries for folders for each existing permission_group | COMMENT |
| LOW | …data-migrations/1766500000001-SeedFolderPermissions.ts | 21 | // Step 2: Create folders_group_permissions for each new granular permission | COMMENT |
| LOW | …data-migrations/1776600000000-SeedPushModulesBranch.ts | 107 | // Step 1: seed module BRANCH versions on the push-modules branch only. | COMMENT |
| LOW | …data-migrations/1776600000000-SeedPushModulesBranch.ts | 149 | // Step 2: seed a push-modules BRANCH version for non-module apps that contain | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 5 | // Step 1: For app_versions with NULL co_relation_id, copy from a sibling version | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 20 | // Step 2: For apps with NULL co_relation_id, copy from any of their versions | COMMENT |
| LOW | …ta-migrations/1773400000000-BackfillAppCoRelationId.ts | 35 | // Step 3: For remaining apps still with NULL co_relation_id (no versions have it), | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 5 | // Step 1: Add nullable branch_id — PostgreSQL 11+ makes this instant (catalog-only change) | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 16 | // Step 2: Replace uniq_folder_apps_app_id (global, app_id only) with two partial indexes. | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 35 | // Step 3: Add FK with NOT VALID — skips the full table scan that a plain ADD FOREIGN KEY | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 47 | // Step 4: Materialise branch-scoped rows for git orgs using app_versions as source of truth. | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 64 | // Step 5: Delete the now-replaced branchless rows for git orgs. | COMMENT |
| LOW | …ta-migrations/1777100000000-AddBranchIdToFolderApps.ts | 80 | // Step 6: Validate FK — takes SHARE UPDATE EXCLUSIVE (allows concurrent reads/writes) | COMMENT |
| LOW | server/src/modules/versions/util.service.ts | 202 | // Step 1: random UUID name for the new draft. Mirrors branch-version | COMMENT |
| LOW | server/src/modules/versions/util.service.ts | 246 | // Step 2: detach branch_id from the just-published row. Delegated via the | COMMENT |
| LOW | server/src/modules/app-environments/ability/index.ts | 41 | // we need to check if the user has general permissions to view environments | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 23 | # Step 1: Navigate to submodule directory | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 27 | # Step 2: Get the latest commit hash from main branch | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 35 | # Step 3: Checkout to the latest main commit | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 39 | # Step 4: Go back to root directory | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 43 | # Step 5: Stage the submodule changes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | marketplace/plugins/portkey/lib/manifest.json | 38 | "helpText": "How to obtain API Key: <a href='https://docs.portkey.ai/docs/api-reference/authentication#obtaining-y | CODE |
| HIGH | marketplace/plugins/portkey/lib/manifest.json | 58 | "helpText": "How to obtain Gateway URL: <a href='https://docs.portkey.ai/docs/api-reference/authentication#obtaini | CODE |
| HIGH | docs/docs/marketplace/plugins/portkey.md | 20 | - **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/d | CODE |
| HIGH | docs/docs/marketplace/plugins/portkey.md | 23 | - **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](htt | CODE |
| HIGH | …ned_docs/version-2.68.0/marketplace/plugins/portkey.md | 20 | - **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/d | CODE |
| HIGH | …ned_docs/version-2.68.0/marketplace/plugins/portkey.md | 23 | - **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](htt | CODE |
| HIGH | …docs/version-2.50.0-LTS/marketplace/plugins/portkey.md | 20 | - **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/d | CODE |
| HIGH | …docs/version-2.50.0-LTS/marketplace/plugins/portkey.md | 23 | - **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](htt | CODE |
| HIGH | …_docs/version-3.0.0-LTS/marketplace/plugins/portkey.md | 20 | - **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/d | CODE |
| HIGH | …_docs/version-3.0.0-LTS/marketplace/plugins/portkey.md | 23 | - **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](htt | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ver/templates/personal-finance-tracker/definition.json | 350 | "value": "{{`Add to ${components.transactionForm.data.transactionType.value.toLowerCase()}s`}}" | CODE |
| CRITICAL | …ver/templates/personal-finance-tracker/definition.json | 2340 | "message": "{{`Failed to add ${components.transactionForm.data.transactionType.value.toLowerCase()}! Ple | CODE |
| CRITICAL | …er/templates/student-management-system/definition.json | 4842 | "value": "{{components.add_student_form.data.course_input.values.join(\",\")}}" | CODE |
| CRITICAL | …er/templates/student-management-system/definition.json | 4998 | "value": "{{components.update_student.data.update_courses.values.join(\",\")}}" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | docker/nsjail/python-execution.cfg | 65 | # Open file descriptors limit | COMMENT |
| LOW | docker/pre-release/ee/ee-entrypoint.sh | 27 | # Check if PGRST_HOST starts with "localhost" | COMMENT |
| LOW | docker/LTS/ee/ee-entrypoint.sh | 27 | # Check if PGRST_HOST starts with "localhost" | COMMENT |
| LOW | deploy/docker/external.sh | 6 | # Check if LOCKBOX_MASTER_KEY is present or empty | COMMENT |
| LOW | deploy/docker/external.sh | 24 | # Check if SECRET_KEY_BASE is present or empty | COMMENT |
| LOW | deploy/docker/external.sh | 42 | # Check if PGRST_JWT_SECRET is present or empty | COMMENT |
| LOW | deploy/docker/external.sh | 65 | # Check if PG_USER, PG_HOST, PG_PASS, PG_DB are present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 6 | # Check if LOCKBOX_MASTER_KEY is present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 24 | # Check if SECRET_KEY_BASE is present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 42 | # Check if PGRST_JWT_SECRET is present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 65 | # Check if PG_PASS and TOOLJET_DB_PASS are present or empty | COMMENT |
| LOW | deploy/docker/internal.sh | 83 | # Check if PGRST_DB_URI is present or empty | COMMENT |
| LOW | server/scripts/wait-for-it.sh | 151 | # Check if busybox timeout uses -t flag | COMMENT |
| LOW⚡ | release-scripts/resolve-conflicts-submodules.sh | 17 | # Check if submodule directory exists | COMMENT |
| LOW | release-scripts/create-release.sh | 8 | # Check if all required arguments are provided | COMMENT |
| LOW | release-scripts/create-release.sh | 19 | # Check if GITHUB_TOKEN is set in the environment | COMMENT |
| LOW | release-scripts/create-release.sh | 55 | # Check if the current user is the creator of the milestone | COMMENT |
| LOW | release-scripts/create-release.sh | 68 | # Check if release branch already exists | COMMENT |
| LOW | release-scripts/create-release.sh | 173 | # Check if release PR already exists | COMMENT |
| LOW | .github/workflows/release-automation.yml | 162 | # Check if there are any changes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …modules/workflows/unit/python-sandbox-security.spec.ts | 673 | elif len(content) < 100: | CODE |
| HIGH | …modules/workflows/unit/python-sandbox-security.spec.ts | 1092 | elif err == errno.EPERM: | CODE |
| HIGH | …modules/workflows/unit/python-sandbox-security.spec.ts | 1094 | elif err == errno.ENOSYS: | CODE |
| HIGH | …modules/workflows/unit/python-sandbox-security.spec.ts | 1212 | elif result_code == -1: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …tend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx | 285 | // when the value is set programmatically (e.g. AI-generated code). Sync it here so | COMMENT |
| HIGH | server/src/modules/app-history/constants/index.ts | 42 | // AI-generated changes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/src/_helpers/utils.js | 131 | state?.constants, // Passing constants as an argument allows the evaluated code to access and utilize the consta | CODE |
| MEDIUM | frontend/src/AppBuilder/CodeEditor/utils.js | 187 | state?.constants, // Passing constants as an argument allows the evaluated code to access and utilize the consta | CODE |
| MEDIUM | frontend/src/AppBuilder/_stores/utils.js | 188 | state?.constants, // Passing constants as an argument allows the evaluated code to access and utilize the consta | CODE |
| MEDIUM | …modules/git-sync/unit/git-object-cache.service.spec.ts | 457 | // robust even if the publish->disconnect chain grows more async hops. | COMMENT |
| MEDIUM | …/sample-data-json-files/sample_data_organizations.json | 1 | [{"Index":1,"Organization Id":"FAB0d41d5b5d22c","Name":"Ferrell LLC","Website":"https://price.net/","Country":"Papua New | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 401 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 458 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 635 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 700 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 751 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 773 | except Exception as e: | CODE |
| LOW | …modules/workflows/unit/python-sandbox-security.spec.ts | 1390 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker/dev-entrypoint.sh | 31 | # Create main application database (tooljet_production) | COMMENT |
| MEDIUM | server/dev-entrypoint.sh | 31 | # Create main application database (tooljet_production) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/assets/libs/pyodide-0.23.2/pyodide.js | 1 | !function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof defin | CODE |
| LOW | …etplace/plugins/hubspot/openapi-specs/site-search.json | 149 | "values" : [ "Free HubSpot CRM", "App Marketplace", "Subscribe via Email", "Don't forget to share | CODE |
| LOW | …etplace/plugins/hubspot/openapi-specs/site-search.json | 185 | "values" : [ "Free HubSpot CRM", "App Marketplace", "Subscribe via Email", "Don't forget to share | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | server/scripts/run-e2e.sh | 8 | # Usage: | COMMENT |