## Description
>
```
const isOnCanvas = matchBuilderPath(window.location.pathname);
if (isOnCanvas) {
dispatch(showDebuggerAction(!showDebugger));
}}
```
The condition check to verify if we are on canvas was removed as we are
opening debugger throughout all pages.
> Now debugger is accessible from all pages in Appsmith. (Earlier it was
not present in Datasources pages.)
Fixes#19567#21935#21934#21907#21223
Media
> [Video](https://www.loom.com/share/ff5eebb5e0a74e0bad6ead26050b5833)
## Type of change
> Please delete options that are not relevant.
- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
- Manual
- Jest
- Cypress
### Test Plan
> Add Testsmith test cases links that relate to this PR
### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
## Description
This PR upgrades Prettier to v2 + enforces TypeScript’s [`import
type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export)
syntax where applicable. It’s submitted as a separate PR so we can merge
it easily.
As a part of this PR, we reformat the codebase heavily:
- add `import type` everywhere where it’s required, and
- re-format the code to account for Prettier 2’s breaking changes:
https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes
This PR is submitted against `release` to make sure all new code by team
members will adhere to new formatting standards, and we’ll have fewer
conflicts when merging `bundle-optimizations` into `release`. (I’ll
merge `release` back into `bundle-optimizations` once this PR is
merged.)
### Why is this needed?
This PR is needed because, for the Lodash optimization from
7cbb12af88,
we need to use `import type`. Otherwise, `babel-plugin-lodash` complains
that `LoDashStatic` is not a lodash function.
However, just using `import type` in the current codebase will give you
this:
<img width="962" alt="Screenshot 2023-03-08 at 17 45 59"
src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png">
That’s because Prettier 1 can’t parse `import type` at all. To parse it,
we need to upgrade to Prettier 2.
### Why enforce `import type`?
Apart from just enabling `import type` support, this PR enforces
specifying `import type` everywhere it’s needed. (Developers will get
immediate TypeScript and ESLint errors when they forget to do so.)
I’m doing this because I believe `import type` improves DX and makes
refactorings easier.
Let’s say you had a few imports like below. Can you tell which of these
imports will increase the bundle size? (Tip: it’s not all of them!)
```ts
// app/client/src/workers/Linting/utils.ts
import { Position } from "codemirror";
import { LintError as JSHintError, LintOptions } from "jshint";
import { get, isEmpty, isNumber, keys, last, set } from "lodash";
```
It’s pretty hard, right?
What about now?
```ts
// app/client/src/workers/Linting/utils.ts
import type { Position } from "codemirror";
import type { LintError as JSHintError, LintOptions } from "jshint";
import { get, isEmpty, isNumber, keys, last, set } from "lodash";
```
Now, it’s clear that only `lodash` will be bundled.
This helps developers to see which imports are problematic, but it
_also_ helps with refactorings. Now, if you want to see where
`codemirror` is bundled, you can just grep for `import \{.*\} from
"codemirror"` – and you won’t get any type-only imports.
This also helps (some) bundlers. Upon transpiling, TypeScript erases
type-only imports completely. In some environment (not ours), this makes
the bundle smaller, as the bundler doesn’t need to bundle type-only
imports anymore.
## Type of change
- Chore (housekeeping or task changes that don't impact user perception)
## How Has This Been Tested?
This was tested to not break the build.
### Test Plan
> Add Testsmith test cases links that relate to this PR
### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
---------
Co-authored-by: Satish Gandham <hello@satishgandham.com>
Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
## Description
> Telemetry for error handling phase 1
- [x] Error log opened - **OPEN_DEBUGGER**
- [x] Error log entry expanded - **DEBUGGER_LOG_ITEM_EXPAND**
- [x] Entity link clicked - **DEBUGGER_ENTITY_NAVIGATION**
- [x] Help clicked - **DEBUGGER_HELP_CLICK**
- [x] Documentation clicked - **OPEN_OMNIBAR**
- [x] Error log entry resolved - **DEBUGGER_RESOLVED_ERROR_MESSAGE**
Fixes#20623
## Type of change
> Please delete options that are not relevant.
- Chore (housekeeping or task changes that don't impact user perception)
## How Has This Been Tested?
- Manual
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
## Description
This PR updates the error logs
- Establishing a consistent format for all error messages.
- Revising error titles and details for improved understanding.
- Compiling internal documentation of all error categories,
subcategories, and error descriptions.
Updated Error Interface:
https://www.notion.so/appsmith/Error-Interface-for-Plugin-Execution-Error-7b3f5323ba4c40bfad281ae717ccf79b
PRD:
https://www.notion.so/appsmith/PRD-Error-Handling-Framework-4ac9747057fd4105a9d52cb8b42f4452?pvs=4#008e9c79ff3c484abf0250a5416cf052
>TL;DR
Fixes #
Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video
## Type of change
- New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
- Manual
- Jest
- Cypress
### Test Plan
### Issues raised during DP testing
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [x] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
---------
Co-authored-by: subrata <subrata@appsmith.com>
* Aggregate calls to add and remove Appsmith errors
* fix switch type
* Fix entity deletion errors
* Code clean up
* fix cypress tests
* Return early for empty errors in Appsmith debugger
* Remove redundant identifier
* Retain order of debugger logs
* Use push instead of unshift for perf reasons
* redundant commit to retrigger CI
* fix: updated skip functionality
* update: type of logs to add occurence count
* update: reducer function to merge the new logs
* update: added dependance on last log's occurence count
* add: UI to show the occurence badge
* fix: added null check for dependency array
* update: omit occurence from compare fn
* update: changed function call to store logs array directly
* update: moved from saving logs one by one to array
* fix: replaced forEach with reduce
* test: added functions for console log grouping
* feat: updated warning grouping color
* update: moved function to reducer file for jest tests
* feat: capture console from across the app (#15676)
* create: console override file
- Adds methods to override the given console functionality to capture the console statements written by the user
* update: evaluate function to extract console op
- Added logs extraction for both sync and async functions
- Adding them to the return object of the evaluations
* update: timestamp field to log addition method
- Added optional argument to function definition for inputting the timestamp of the log
- This is done to maintain timings of the execution of the log
* update: interface for log objects
* update: post function execution logic
- Added logic to push the logs generated by the evaluation to the logs store
* update: added handling for sending nested fns
- While console logging functions or objects that had functions was causing an error
- Added a check for removing functions and replacing them with name of the functions instead
* chore: added types and comments
* fix: updated evaluation tests
* fix: added check for log in returned obj
* update: added the source data in the trigger logs
- Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice
* add: ellipsis function for log title string
- This is to keep big object contained in the first line only
* update: made logs reset function public
* update: resetting logs before new eval
- Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals
* chore: added comments
* add: extracting logs after eval of functions
* add: storing logs to redux after eval
* refactor: updated types
* add: func to store logs w/ severity as arg
* refactor: updating func call for user logs
* chore: fixed elipsis logic
* chore: removed unused type
* chore: updated preview text logic
* add: type for transfer object post eval
* update: aded new userLogs obj to dataTreeEvaluator
* update: passing logs from object to saga
* update: parsing received userlogs
* refactor: used predefined fns
* refactor: moved resetlogs to common func
* chore: updated comments
* feat: update redux store and UI for system + user logs (#15936)
* update: updated types for the redux store
- Added category and data fields in the log object
* update: types of log redux store
* update: calls for the console log store function
* update: icon fetch func for log item UI
* update: syncing UI with the new designs (WIP)
* chore: fixed lint error
* update: filters for logs
* update: icon for clearing log filters
* update: filtering function
- Added checks against category and severity
* update: logitem UI
- updated type of the UI object
- added css based ellipsis
- added toggle for console logs
- added array of json views for objects/arrays
- css tweaks
* update: debugger cta
- Removed copy option
- Updated UI
* update: logic for expanding user logs
- Removed debugger CTA
- Fixed position for the expand/collapse icon
- Added joining char for when the log is expanded
* update: assets for new UI
- updated colors
- Added new icon
* hotfix: ternserver code
* add: search across the text of log
* update: icons for the app
* update: click to expand/collapse of logs
* fix: search keyword update on change within JSObjects
* fix: alignment of log items in both states
* update: jest tests for debugger errors and filter
* fix: drop down options color issue
- the icon used was not the standard one
- We have a lot of duplicates of the same icon
* fix: synced with ADS changes on release
* fix: remove dependency from old icon
* add: cypress selectors for automation testing
* fix: replaced static messages with variables
* fix: updated the dependency map for filter
* fix: height of the filter drop down
* fix: chaining logic for search filter
* fix: syncing the padding values to ADS
* fix: help icon visibility issue
* fix: width of filter dropdown
Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com>
* add: e2e tests for console statements using IIFE
* test: added test for console logs in jsobjects
* fix: functionality of expanding context menu on msg click
* fix: added try catch and handling for numbers
* hotfix: handling unwanted toasts
* fix: alignment and clickable cursor
* fix: alignment of expanded span in console logs
* add: analytics event on new console log created
* fix: added handling for boolean and undefined
* fix: removed log reset from common func
- Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs.
* fix: combined JS log saving to widget process
* add: new analytics event on filter changed
* update: added handling for empty value
* update: removed comma between multiple logs
* update: synced test changes with release
* update: removed unused wait timings
* Logs spec script update
* update: ts methods in log spec e2e test
* logs spec update
* update: removed body clicks from test script
* Logs spec update
* update: removed ask from google option
* refactor: ui fixes
* fix: text selection of logs
* fix: updated dropdown width management
* update: made the flushlogs function async
* update: added handling for promises
* update: added test with promises fail and pass
* fix: added sync variant to work for sync objects
* refactor: commented out unused tests
* update: exceptions in the name of log entity
* fix: pagination of logs to handle dynamic data stream
* fix: removed unused async function
* fix: moved logs handling to separate saga
* fix: color for context menu text
Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
* Implemented code splitting of some files for SAML integration
* Implemented code splitting of some more files for SAML integration
* updated redirect url component
* fixed an import statement
* fixed a unit test
* updated restart banner tooltip logic
* updated an import statement