PromucFlow_constructor/app/client/cypress/fixtures
Rishabh Rathod d6372d0b81
feat: JSObject variable as a state (JSObject variable mutation) (#19926)
Fixes #19653 
Fixes #14568 
Fixes #17199
Fixes #14989

In this PR, we introduce a new feature in JSObject where the `variables`
are now state and widgets are reactive to the change in the variable
value.
- It means that `JSObject.myVar1 = "Hello world"` would show `Hello
world` where ever a binding `{{JSObject.myVar1}}` is used.

Further changes
- JSObject run functionality, executes all the functions in async
evaluation.
    - `executeSyncJS` flow is removed 
-  `resolvedFunctions` state is moved to JSCollection class.
- unEval JSObject value i.e., currentJSCollectionState is moved to
JSCollection class.
- `evalTreeWithChanges` is introduced - A new flow to trigger evaluation
from the worker and send the updated dataTree to mainThread.
- This would open up a new possibility of features in evaluation
mentioned
[here](https://www.notion.so/appsmith/RFC-Dependent-Property-in-Widgets-f3b29ad652b549dd8c49189f48dbbc4b)
- Introduction of `updateDataTreeHandler` to accept new dataTree from
the worker.
## Type of change

- New feature (non-breaking change which adds functionality)

## How Has This Been Tested?

### Jest Test
- `Mutation.test.ts` 
- `JSVariableProxy.test.ts`
-  `removeProxy.test.ts`

### Cypress test
- Mutation with 
   - numbers
   - array
   - object
   - map
   - set

### Test Plan
- https://github.com/appsmithorg/TestSmith/issues/2186

### Issues raised during DP testing

- https://github.com/appsmithorg/appsmith/pull/19926#issuecomment-1453275688
- https://github.com/appsmithorg/appsmith/pull/19926#issuecomment-1478975487
- https://github.com/appsmithorg/appsmith/pull/19926#issuecomment-1482929425
- https://github.com/appsmithorg/appsmith/pull/19926#issuecomment-1486611858

Co-authored-by: Rimil Dey <rimildeyjsr@gmail.com>
Co-authored-by: Rimil Dey <rimil@appsmith.com>
Co-authored-by: arunvjn <32433245+arunvjn@users.noreply.github.com>
2023-04-07 13:11:36 +05:30
..
Bugs
Datatypes
ImportApps
Listv2
Table
Templates
AAAFlowerVase.jpeg
AAAGlobeChristmas.jpeg
addWidgetTable-mock.json
alignmentWithDynamicHeightDsl.json
apiParallelDsl.json
apiTableDsl.json
appNavigationTestingApp.json
appNavigationTestingAppWithLongPageNamesAndTitle.json
appsmithlogo.png
audioWidgetDsl.json
autocomp.json
autoHeightContentAlignmentDSL.json
autoHeightInvisibleWidgetsDSL.json
autoHeightOverlapDSL.json
base64imagedsl.json
basicDsl.json
basicNumberDataTableDsl.json
basicTabledsl.json
buttonApiDsl.json
buttondsl.json
ButtonGroup_MenuButton_Width_dsl.json
buttonGroupDsl.json
buttonLintErrorDsl.json
buttonRecaptchaDsl.json
CameraDsl.json
CanvasResizeDsl.json
categorySliderWidgetDsl.json
chartCustomDataDsl.json
ChartDsl.json
ChartLoadingDsl.json
ChartTextDsl.json
chartUpdatedDsl.json
checkboxgroupDsl.json
CMSdsl.json
commondsl.json
CommunityIssuesExport.json
ConcreteHouse.jpg
containerdsl.json
ContextSwitching.json
CurrencyInputDynamic.json
CurrencyInputIssueExport.json
datasources.json
datepicker_switchDsl.json
datePicker2dsl.json
datePickerdsl.json
datePickerV2Updated_dsl.json
debuggerDependencyDsl.json
debuggerTableDsl.json
defaultFilterText.json
defaultMetadataDsl.json
defaultMetaDsl.json
defaultTableDsl.json
defaultTableV2Dsl.json
DeleteGitRepos.json
deprecatedWidgets.json
disabledWidgetsDsl.json
displayWidgetDsl.json
DividerDsl.json
DocumentViewerDsl.json
dropDownWidget_reset_check_dsl.json
dynamicHeightCanvasResizeDsl.json
dynamicHeightContainerCheckboxdsl.json
dynamicHeightContainerdsl.json
dynamicHeightContainerScrolldsl.json
DynamicHeightDefaultHeightdsl.json
dynamicHeightFormSwitchdsl.json
dynamicHeightListDsl.json
DynamicHeightListTextDsl.json
DynamicHeightModalDsl.json
dynamicHeightStatboxdsl.json
dynamicHeigthContainerFixedDsl.json
dynamicTabWidgetdsl.json
editorContextdsl.json
emptyDSL.json
EmptyListWidget.json
example.json
exampleEncodedDocs.js
executeAction.json
executionParamsDsl.json
explorerHiddenWidgets.json
exported-app.json
exportedApp.json
featureFlags.json
filepickerDsl.json
filePickerTableDSL.json
filePickerV2_reset_check_dsl.json
filePickerV2WidgetReskinDsl.json
fontData.json
forkedApp.json
forkNonSignedInUser.json
formChangeDSL.json
formDataDsl.json
formdsl.json
formdsl1.json
formHasChangesDsl.json
formInputTableDsl.json
formInputTableV2Dsl.json
formResetDsl.json
formSelectDsl.json
formSelectTreeselectDsl.json
formSwitchDsl.json
formWidgetdsl.json
formWidgetWithInputValCheckDsl.json
formWithInputdsl.json
formWithRTEDsl.json
formWithtabdsl.json
gitImport.json
googleSource.json
iconButtonWidgetsDsl.json
IframeDsl.json
IframeOnSrcDocChange.json
inputBindingdsl.json
inputdsl.json
inputMaxCharDsl.json
InputWidgetV2InsideListDSL.json
Invalid_binding_dsl.json
invisibleWidgetdsl.json
Js_toggle_dsl.json
JSApiOnLoadDsl.json
jsFunctionTriggerDsl.json
JSObjectMutationTestApp.json
JsObjecWithGitdsl.json
JSObjOnLoadApp.json
jsonFormDslWithoutSchema.json
jsonFormDslWithSchema.json
jsonFormDslWithSchemaAndWithoutSourceData.json
jsonFormDynamicHeightDsl.json
jsonFormInModalDsl.json
jsonFormUnicodeDSLWithoutSourceData.json
jsonTextDsl.json
largeJSONData.json
layoutdsl.json
lazyRender.json
library_export.json
listdsl.json
listRegression2Dsl.json
listRegression3Dsl.json
listRegressionDsl.json
listv2PaginationDsl.json
ListVulnerabilityDSL.json
listwidgetdsl.json
listWidgetLintDsl.json
ListWidgetWithDataAndButtonDSL.json
longCanvasDsl.json
MapChartDsl.json
Mapdsl.json
menuButtonDsl.json
ModalDsl.json
modalOnTableFilterPaneDsl.json
modalScroll.json
modalWidgetBGcolorDSL.json
mongo_GET_Actions.json
mongo_GET_selectTableDropdown.json
mongo_POST_Actions.json
mongo_PUT_replaceLayoutWithCRUD.json
mongoAppdsl.json
multiPartFormDataDsl.json
multipleContainerdsl.json
MultipleInput.json
MultipleWidgetDsl.json
multiSelectDsl.json
multiSelectedRowUpdationDsl.json
multiSelectedRowUpdationTableV2Dsl.json
mySQL_GET_Actions.json
mySQL_GET_selectTableDropdown.json
mySQL_POST_Execute.json
mySQL_PUT_replaceLayoutWithCRUD.json
navigateToInputDsl.json
navigateTotabledsl.json
newFormDsl.json
noiseDsl.json
numberSliderWidgetDsl.json
omnibarDsl.json
one_postgres.json
onPageLoadActionsDsl.json
PageLoadDsl.json
paramsDsl.json
patchjson.txt
PgAdmindsl.json
PhoneInputDynamic.json
plugins.json
postInviteStub.json
postjson.txt
previewMode.json
promisesBtnDsl.json
promisesBtnImgDsl.json
promisesBtnListDsl.json
promisesStoreValueDsl.json
putjson.txt
qr.mjpeg
radioGroup_int_value_dsl.json
rangeSliderWidgetDsl.json
replay.json
REPO.ts
resetPassword.json
rundsl.json
saveAction.json
Select_table_dsl.json
SelectDslWithEmptyOptions.json
selectMultiSelectTreeSelectWidgetDsl.json
selectWidgetDsl.json
SimpleBinding.json
slashcommandDsl.json
SMTPTestdsl.json
snippetDsl.json
snippetErrordsl.json
snippingTableDsl.json
StatboxDsl.json
SwitchGroupWidgetDsl.json
swtchTableDsl.json
swtchTableV2Dsl.json
tabdsl.json
tabInputDsl.json
tableAndChart.json
tableAndTextDsl.json
TableClientSearch.json
TableFilterImportApp.json
tableInputDsl.json
TableMigrationAppExported.json
TableMigrationDsl.json
tableNewDsl.json
tableNewDslWithPagination.json
tableResizedColumnsDsl.json
tableTextPaginationDsl.json
tablev1NewDsl.json
tableV2AndTextDsl.json
TableV2ClientSearch.json
tableV2ColumnOrderDsl.json
tableV2NewDsl.json
tableV2NewDslWithPagination.json
tableV2ResizedColumnsDsl.json
tableV2TextPaginationDsl.json
tableV2WidgetCondnFormatDsl.json
tableV2WidgetDsl.json
tableV2WithTextWidgetDsl.json
tableV2WithUrlColumnDsl.json
tableWidgetCondnFormatDsl.json
TableWidgetDatawithEmptyKeys.json
tableWidgetDsl.json
tableWithNumberColumnDsl.json
tableWithTextWidgetDsl.json
tabsWidgetDsl.json
tabsWidgetReset.json
tabsWithWidgetDsl.json
Test_csv.csv
testAction.json
testdata.json
testFile.mov
testFile2.mov
textDsl.json
textLintErrorDsl.json
textNewDsl.json
TextTabledsl.json
TextTableV2dsl.json
textWidgetDsl.json
textWidgetDynamicdsl.json
ThemeAppdsl.json
TreeSelectDsl.json
uiBindDsl.json
user.json
variables.ts
videoWidgetDsl.json
viewdsl.json
WidgetCopyPaste.json
widgetPopupDsl.json
widgetSelection.json
xmlParser.json