Commit Graph

10 Commits

Author SHA1 Message Date
ChandanBalajiBP
2a6108d92f
test: Cases to check ast client integration (#17625) 2022-10-27 15:13:27 +05:30
Rishabh Rathod
8fe7f9291d
feat: Add validation dependency (#17138)
## Problem

**Why do we need validation dependency?**

- When on change of particular property value if other property needs revalidation then current evaluation architecture do not support such validation run.

https://www.notion.so/appsmith/Validation-Dependency-d7623a5625bd4aa187a3ae2372d3ac07

**Issues to resolve**

Fixes #15303
Fixes #17159
Fixes https://github.com/appsmithorg/appsmith/issues/16170

## Solution

**New Validation Flow**

validate a property after its evaluation and check if there are other properties that need to revalidate on a change of this value. 

- if yes run validation for those properties.

How does validation dependency get created?

- every widget’s property will keep static `dependencies` array in `validation` property like shown below.

```jsx
{
	validation: {
    type: ValidationTypes.FUNCTION,
    params: {
      fn: defaultOptionValueValidation,
      expected: {
        type: 'value1 or { "label": "label1", "value": "value1" }',
        example: `value1 | { "label": "label1", "value": "value1" }`,
        autocompleteDataType: AutocompleteDataType.STRING,
      },
      dependentPaths: ["serverSideFiltering", "options"],
    },
    dependencies: ["serverSideFiltering", "options"],
  }
}
```

This `dependentPaths` array will be used to form validationDependencyMap.
 
#### Changes

- The code editor component wasn't re-rendering for a few cases. Due to this updates were not shown until the component state was changed.

- In CreateFirstTree, After evaluateTree we run `validateTree`. In `validateTree`, we validate all the properties in `validationPaths`. Here, if the errors were resolved on revalidation, it didn't reset the validation errors stored in data tree before. Now, this PR adds the reset logic. 
- Created `validationDependencyMap` to re-validate properties on change of the property their validation depends upon. 
- After each property evaluates in `updateDataTree`, we check if re-validation is needed, if yes then we re-validate dependent properties.  


## Type of change

- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)

## How Has This Been Tested?

- jest test

**Test Plan**
https://github.com/appsmithorg/TestSmith/issues/2078

## Checklist:

- [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
- [x] 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
2022-10-21 10:50:57 +05:30
Ayangade Adeoluwa
610509506e
fix: update rts logic to use updated shared AST logic (#16849)
* update rts logic to use updated shared AST logic

* Make changes to naming conventions

* Add test cases for RTS and rename ast functions

* Add running jest test to RTS workflow

* Install dependencies and then trigger jest tests in workflow

* Close server connection after test ends

* Remove logs

* Improve jest test descriptions
2022-09-28 17:28:18 +00:00
Favour Ohanekwu
d6fbdb15b9
feat: Linting in entity properties and methods (#16171)
* Initial commit

* Remove arrow function params from identifiers

* Remove invalid identifiers from extracted identifiers

* Remove invalid identifiers which are derived from function params and variable declarations

* Fix typo error

* Correctly remove invalid identifiers

* Remove invalid names from identifier list

* fix build failure

* Add Promise to list of unacceptable entity name

* Keep track of unreferenced identifiers in bindings

* Add Global scope object names as unusable entity names

* Keep track of unreferenced identifiers

* Prevent traversal of data tree for addition of new paths and entities

* Sync linting in trigger fields

* Support linting of invalid properties

* Fix linting reactivity bug in trigger field

* Remove unused objects

* Fix conflict in merging

* Lint jsobject body for function change

* Remove unused map from tests

* Code cleanup

* Modify jest tests

* Update jest tests

* Fix cypress tests

* Code cleanup

* Support  linting of multiple bindings

* Set squiggle line as long as invalid property length

* Add jest tests

* Minor code refactor

* Move ast to shared repo

* Rename confusing identifiers

* Improve naming of functions and their return values

* move shared widget validation utils and constants to shared folder

* Add jest test for invalid entity names

* Add cypress tests

* Modify test comment

* Extend list of dedicated worker scope identifiers

* Resolve code review comments

* Resolve review comments

* Annonate code where necessary

* Code refactor

* Improve worker global scope object

* Code refactor

* Fix merge conflict

* Code refactor

* Minor bug fix

* Redundant commit to retrigger vercel build

* Add null checks to dependecy chain
2022-09-17 18:40:28 +01:00
Ayangade Adeoluwa
3de00c6bf4
feat: Extraction of AST Logic (#15892)
* POC for Shared AST Logic using Yarn Symlinks

* fix: preinstall script for bundling shared packages

* Merge commit

* fix: updated the script to link, unlink the package as shared dep

* fix: updated dependencies

* Add a post-install script and fix yarn.lock file

* Remove commented code

* fix: added verification script, readme, moved scripts to shared

* Extraction of AST Logic into shared/ast folder

* Add jest test script

* Replace hardcoded ast Logic use with Shared AST module

* Replace parse code with getAST

Co-authored-by: Aman Agarwal <aman@appsmith.com>
2022-08-23 16:39:42 +05:30
Favour Ohanekwu
950e57aab7
Fix error with undefined triggerpath dependency (#16037)
Return early for undefined trigger field dependency
2022-08-17 13:57:59 +05:30
Favour Ohanekwu
5c7f4009cb
fix: Correctly update trigger field dependency map (#15733) 2022-08-05 19:58:38 +02:00
Tanvi Bhakta
86f0da37db
feat: change imports for dropdown v2 and dependencies (#15081)
* Remove Dropdown, SearchComponent from this repository

* Change the imports so that SearchComponent and DropdownV2 come from the design system

* Add yalc

* default imports become named imports

* remove the yalc package, add the beta version

* Change import for SearchComponent in TableHeader

* Updated Label Config

* chore: Refactor dependency Map code (#14944)

* feat: Triggerpath dependency (#15015)

* Introduce triggerpathdependency

* Code cleanup and refactor

* add jest test for removeLintErrorsFromEntityProperty

* Add triggerfieldDependencyMap jest tests for datatreeEvaluator

* Add cypress tests

* Revamp linting architecture

* Lint when creating first tree

* Prevent modification of unevaltree while linting

* improve linting performance

* Reuse allkeys for all dependencymap creation

* Add jest test for linttree

* Update jest and cypress tests

* Modify linting folder name

* remove redundant commits

* update evaluation jest tests

* Fix failing test

* Update cypress tests

* Code clean up and performance upgrade

* Update cypress tests

* Use unevalTree as global data for non-trigger field

* Improve global data creation time

* Cypress fixes

* Improve creation of global data for linting

* Only generate global data with functions when needed

* remove all unused variables

* Add overriden commit

* remove lint erros before linting

* fix merge conflicts

Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>

Co-authored-by: Nikhil Nandagopal <nikhil.nandagopal@gmail.com>
Co-authored-by: Rishabh Rathod <rishabh.rathod@appsmith.com>
Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-08-05 10:05:28 +00:00
Favour Ohanekwu
0f92b97226
feat: Triggerpath dependency (#15015)
* Introduce triggerpathdependency

* Code cleanup and refactor

* add jest test for removeLintErrorsFromEntityProperty

* Add triggerfieldDependencyMap jest tests for datatreeEvaluator

* Add cypress tests

* Revamp linting architecture

* Lint when creating first tree

* Prevent modification of unevaltree while linting

* improve linting performance

* Reuse allkeys for all dependencymap creation

* Add jest test for linttree

* Update jest and cypress tests

* Modify linting folder name

* remove redundant commits

* update evaluation jest tests

* Fix failing test

* Update cypress tests

* Code clean up and performance upgrade

* Update cypress tests

* Use unevalTree as global data for non-trigger field

* Improve global data creation time

* Cypress fixes

* Improve creation of global data for linting

* Only generate global data with functions when needed

* remove all unused variables

* Add overriden commit

* remove lint erros before linting

* fix merge conflicts

Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-07-22 21:31:08 +01:00
Rishabh Rathod
6ad308ec39
chore: Refactor dependency Map code (#14944) 2022-07-22 12:32:16 +05:30