/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . gradle . targets . js . yarn Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . nodejs . node Js Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . npm .* Ċ import Ġjava . io . File Ċ Ċ object ĠY arn Work spaces Ġ: ĠY arn Basics () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġresolve Project ( resolved N pm Project : ĠN pm Project Package ) Ġ= ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Root Project ( root Project : ĠProject , Ġsub Projects : ĠMutable List < N pm Project Package >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( root Project Ġ== Ġroot Project . root Project ) ĊĠĠĠĠĠĠĠ Ġsetup ( root Project ) ĊĠĠĠĠĠĠĠ Ġresolve Work spaces ( root Project , Ġsub Projects ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve Work spaces ( ĊĠĠĠĠĠĠĠ Ġroot Project : ĠProject , ĊĠĠĠĠĠĠĠ Ġnpm Projects : ĠMutable List < N pm Project Package > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġup ToDate Checks Ġ= Ġnpm Projects . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠY arn Up ToDate Check ( it . npm Project ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( up ToDate Checks . all Ġ{ Ġit . up ToDate Ġ}) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġnode Js World Dir Ġ= Ġroot Project . node Js . root . root Package Dir ĊĊĠĠĠĠĠĠĠ Ġsave Root Project Work spaces Package Json ( root Project , Ġnpm Projects , Ġnode Js World Dir ) ĊĊĠĠĠĠĠĠĠ Ġyarn Exec ( root Project , Ġnode Js World Dir , ĠN pm Api . resolve Operation Description (" yarn ")) ĊĠĠĠĠĠĠĠ Ġyarn Lock Read Trans itive Dependencies ( node Js World Dir , Ġnpm Projects . flatMap Ġ{ Ġit . npm Dependencies Ġ}) ĊĊĠĠĠĠĠĠĠ Ġup ToDate Checks . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Root Project Work spaces Package Json ( ĊĠĠĠĠĠĠĠ Ġroot Project : ĠProject , ĊĠĠĠĠĠĠĠ Ġnpm Projects : ĠMutable List < N pm Project Package >, ĊĠĠĠĠĠĠĠ Ġnode Js World Dir : ĠFile ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Package Json Ġ= ĠPackage Json ( root Project . name , Ġroot Project . version . toString ()) ĊĠĠĠĠĠĠĠ Ġroot Package Json . private Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġnpm Project Work spaces Ġ= Ġnpm Projects . map Ġ{ Ġit . npm Project . dir . relative To ( node Js World Dir ). path Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġimported Project Work spaces Ġ= ĠY arn Imported Packages Version Resolver ( root Project , Ġnpm Projects , Ġnode Js World Dir ). resolve AndUpdate Packages () ĊĊĠĠĠĠĠĠĠ Ġroot Package Json . workspaces Ġ= Ġnpm Project Work spaces Ġ+ Ġimported Project Work spaces ĊĊĠĠĠĠĠĠĠ Ġroot Project . node Js . package Json Handlers . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ( root Package Json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġroot Package Json . save To ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Js World Dir . resolve ( N pm Project . PACKAGE _ JSON ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }