/* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof Ġts 2 kt - un official - gradle - plugin - plugin , Ġlicensed Ġunder Ġthe ĠMIT ĠLicense Ġ( MIT ). Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) ĠK enz ie ĠT og ami Ġ< https :// oct yl . net > Ċ Ġ* ĠCopyright Ġ( c ) Ġcontributors Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġnet . oct yl . ts 2 kt . gradle . source set Ċ Ċ import Ġnet . oct yl . ts 2 kt . gradle . Ts 2 kt Un official Extension Ċ import Ġnet . oct yl . ts 2 kt . gradle . repository . configuration . Client Configuration Ċ import Ġnet . oct yl . ts 2 kt . gradle . tasks . Convert Types cript To Kotlin Ċ import Ġnet . oct yl . ts 2 kt . gradle . tasks . Discover Ts 2 kt Executable Ċ import Ġnet . oct yl . ts 2 kt . gradle . util . register Infer Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . file . Directory Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġorg . gradle . api . tasks . Source Set Ċ import Ġorg . gradle . api . tasks . Task Provider Ċ import Ġorg . gradle . kotlin . dsl .* Ċ import Ġorg . gradle . plugins . ide . idea . Generate Ide a Module Ċ import Ġorg . gradle . plugins . ide . idea . Ide a Plugin Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . Kotlin 2 Js Compile Ċ import Ġjava . util . concurrent . Callable Ċ Ċ class ĠTs 2 kt New Source Set Configuration ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdiscover Task Provider : ĠTask Provider < Discover Ts 2 kt Executable >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsource Set : ĠSource Set ) Ġ{ ĊĊĠĠĠ Ġfun Ġconfigure () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= Ġadd Configuration () ĊĠĠĠĠĠĠĠ Ġadd Conversion Task ( configuration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Configuration (): ĠClient Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġext Ġ= Ġproject . extensions . getBy Type < Ts 2 kt Un official Extension >() ĊĊĠĠĠĠĠĠĠ Ġreturn Ġext . get OrCreate Client Configuration ( source Set . configuration Name (" ts 2 kt Un official ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Conversion Task ( configuration : ĠClient Configuration ): ĠTask Provider < Convert Types cript To Kotlin > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Name Ġ= Ġsource Set . get Task Name (" convert ", Ġ" Types cript To Kotlin ") ĊĠĠĠĠĠĠĠ Ġval Ġoutput Directory Provider Ġ= Ġproject . layout . build Directory . dir (" generated / source / ts 2 kt /${ source Set . name }/ ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġproject . tasks . register Infer < Convert Types cript To Kotlin >( task Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Con verts ĠTypes cript Ġfiles Ġin Ġsource Ġset Ġ${ source Set . name } Ġto ĠKotlin ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiscover Task Ġ= Ġdiscover Task Provider . get () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġts 2 kt Script Property . set ( discover Task . ts 2 kt Script Property ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtypescript Files Property . set From ( Callable Ġ{ Ġconfiguration . all Files Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Directory Property . set ( output Directory Provider ) ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhook Int ellij ( task , Ġoutput Directory Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set . kotlin . src Dir ( output Directory Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Type < Kotlin 2 Js Compile >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. named ( source Set . get Task Name (" compile ", Ġ" Kotlin 2 Js ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. configure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconv Task Ġ= Ġtask . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( conv Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhook Int ellij ( task : ĠTask Provider < Convert Types cript To Kotlin >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Directory Property : ĠProvider < Directory >) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . plugins . with Type < Ide a Plugin > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġidea Ġ= Ġmodel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidea . module . generated Source Dirs . add ( output Directory Property . get (). as File ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . with Type < Generate Ide a Module >(). configure Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ