PromucFlow_constructor/app/shared
Apeksha Bhosale efa8b68a47
fix: Parse js actions for view mode changes (#18357)
* added new function inside parse js actions for view moe

* fixing test cases

* added evaluateSync with isTriggered false

* Add types
Add switch case for diff.event
Add function get back app mode

* Change foreach loops to for of

* Dont return jsUpdates from view mode save resolved since no operation is happening
Change viewModeSaveResolvedFunctionsAndJSUpdates -> viewModeSaveResolvedFunctions to reflect
what it's functionality is

* Refactor JSObject code

* Refactor code for JSobject
* remove any
* export parsed object's type from ast
* create function for deleteResolvedFunctionsAndCurrentJSCollectionState

* Code review changes

* Fix tests

* Change returns in for of loops to continue
Remove try for evaluate sync
Js updates return

* Fix bug

* Fix bug

Co-authored-by: Rimil Dey <rimil@appsmith.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-12-12 19:45:40 +05:30
..
ast fix: Parse js actions for view mode changes (#18357) 2022-12-12 19:45:40 +05:30
.gitignore fix: workflow for shared modules testing (#16778) 2022-09-30 18:36:25 +05:30
build-shared-dep.js feat: ast mono repo poc (#15610) 2022-08-11 20:59:26 +05:30
install-dependencies.js feat: ast mono repo poc (#15610) 2022-08-11 20:59:26 +05:30
package.json fix: workflow for shared modules testing (#16778) 2022-09-30 18:36:25 +05:30
Readme.md feat: AST apis for parsing script and returning identifiers (#16252) 2022-09-12 14:45:47 +05:30
run-tests.js fix: workflow for shared modules testing (#16778) 2022-09-30 18:36:25 +05:30
shared-dependencies.json feat: AST apis for parsing script and returning identifiers (#16252) 2022-09-12 14:45:47 +05:30
verify-shared-dep.js feat: ast mono repo poc (#15610) 2022-08-11 20:59:26 +05:30

Shared Dependencies

We wanted to share common logic with different applications within our repo, so we picked yarn symlinks as our approach to tackle this problem. Following are the way in which you can take advantage of the module sharing architecture.

Creation of a Shared Module

  • Create a directory inside shared directory with name eg. abc
  • Inside package.json of module, keep the name like @shared/abc
  • Add a rollup config to generate package.json after the module is build

Installation of Shared Modules

  • Add an entry for an application inside shared-dependencies.json eg. for client there should be an entry "client": []
  • Add the name of the shared module in the entry of the application in the above file eg. "client": ["@shared/abc"]
  • If the application does not have any postinstall or preinstall scripts for shared modules then add the two commands described below in the application's (eg. client) package.json : "postinstall": "CURRENT_SCOPE=client node ../shared/install-dependencies.js" "preinstall": "CURRENT_SCOPE=client node ../shared/build-shared-dep.js" CURRENT_SCOPE is the environment variable that's being used in the scripts

Verifying the Installed Shared Modules

  • Run yarn run verify inside shared directory to verify shared dependencies for an application.
  • yarn install : installs packages
  • rollup -c : Module bundler bundles the package and creates a build
  • cd build : Change the present working directory
  • cp -R ../node_modules ./node_modules : copies its own node_modules directory to its build directory to make sure its own version dependencies do not mismatch when its installed in other directories as shared module
  • yarn link : Creates a link for the package to make it available for other directories to use.