import Ġde . under couch . gradle . tasks . download . org . apache . commons . codec . digest . Digest Utils Ċ plugins Ġ{ ĊĠĠĠ Ġkotlin (" js ") ĊĠĠĠ Ġid (" de . f ay ard . dependencies ") Ċ } Ċ Ċ kotlin Ġ{ ĊĠĠĠ Ġtarget Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġnew Ġkotlin (" js ") Ġstuff ĊĠĠĠĠĠĠĠ Ġuse Common Js () ĊĠĠĠĠĠĠĠ Ġbrowser Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd ce Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd ce Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeep (" ktor - ktor - io .\ $\ $ imports For Inline \ $\ $. ktor - ktor - io . io . ktor . utils . io ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Maps Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwebpack Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Maps Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcompil ations . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Map Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Map Prefix Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Kind Ġ= Ġ" amd " Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Map Embed Sources Ġ= Ġ" always " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġsource Sets Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain Ġby Ġgetting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Ġby Ġgetting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation ( kotlin (" stdlib ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġimplementation ( kotlin (" stdlib ")) ĊĊĠĠĠ Ġimplementation ( project (": shared ")) ĊĊĠĠĠ Ġ// Ġtemp Ġfix Ġ? Ċ // ĠĠĠ Ġimplementation ( npm (" text - encoding ")) Ċ } Ċ Ċ // val ĠJs Jar Ġ= Ġtasks . get ByName < Jar >(" Js Jar ") Ċ // Ċ // val Ġunzip Js Jar Ġ= Ġtasks . create < Copy >(" unzip Js Jar ") Ġ{ Ċ // ĠĠĠ Ġdepends On ( Js Jar ) Ċ // ĠĠĠ Ġgroup Ġ= Ġ" build " Ċ // ĠĠĠ Ġfrom ( zip Tree ( Js Jar . archive File )) Ċ // ĠĠĠ Ġinto ( Js Jar . destination Directory . file ( Js Jar . archive Base Name )) Ċ //} Ċ Ċ task < Default Task >(" dep size ") Ġ{ ĊĠĠĠ Ġgroup Ġ= Ġ" help " ĊĠĠĠ Ġdescription Ġ= Ġ" prints Ġdependency Ġsizes " ĊĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġformat Str Ġ= Ġ"% , 1 0 . 2 f " ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= Ġkotlin . target . comp il ations . get ByName (" main "). compile Dependency Files Ġas ĠConfiguration ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġconfiguration . resolve () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . length () Ġ/ Ġ( 1 0 2 4 . 0 Ġ* Ġ 1 0 2 4 . 0 ) Ġ}. sum () ĊĊĠĠĠĠĠĠĠ Ġval Ġout Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Total Ġdependencies Ġsize :" . pad End ( 5 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("${ String . format ( format Str , Ġsize )} ĠM b \ n \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted With ( compare By Ġ{ Ġ- it . length () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( it . name . pad End ( 5 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("${ String . format ( format Str , Ġ( it . length () Ġ/ Ġ 1 0 2 4 . 0 ))} Ġkb \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ( out ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks . get ByName < Process Resources >(" process Resources ") Ġ{ ĊĠĠĠ Ġval Ġdownload Css Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠ Ġval Ġprocess Css Ġ= Ġmutable Map Of < String , ĠString >() ĊĊĠĠĠ Ġfiles Matching (" *. html ") Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter Ġ{ Ġ Ġcontent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregex Ġ= ĠRegex ("< link Ġrel =\" stylesheet \" Ġhref =\" (. +) \" Ġ/> ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . replace ( regex ) Ġ{ Ġmatch Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġmatch Result . group Values [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= Ġurl . substring After Last ('/') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhashed Ġ= Ġ" css /" Ġ+ ĠDigest Utils . md 5 Hex ( url ) Ġ+ Ġ". css " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Css Ġ+= Ġhashed Ġto Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< link Ġrel =\" stylesheet \" Ġhref =\" $ hashed \" Ġ/> Ġ<!-- Ġ$ filename Ġ--> " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= Ġbuild Dir . resolve (" processed Resources ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve (" Js ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve (" main ") ĊĠĠĠĠĠĠĠ Ġdownload Css . forEach Ġ{ Ġfilename , Ġurl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . lifecycle (" download ing Ġ$ url Ġ-> Ġ$ filename ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdest File Ġ= Ġdir . resolve ( filename ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest File . parent File . mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest File . createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload File ( url , Ġdest File ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . lifecycle (" filtering Ġ$ filename ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt tf Url Regex Ġ= ĠRegex (""" url \ (( http .*? \. ttf )\ ) """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest File . write Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest File . read Text (). replace ( ttf Url Regex ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt tf Url Ġ= Ġresult . group Values [ 1 ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= Ġt tf Url . substring After Last ('/') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew T tf Path Ġ= Ġ" ttf /" Ġ+ ĠDigest Utils . md 5 Hex ( ttf Url ) Ġ+ Ġ". ttf " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt tf File Ġ= Ġdir . resolve ( new T tf Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . lifecycle (" download ing Ġ$ ttf Url Ġ-> Ġ$ new T tf Path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt tf File . parent File . mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt tf File . createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload File ( ttf Url , Ġt tf File ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . lifecycle (" repl acing : Ġ$ ttf Url Ġ-> Ġ$ new T tf Path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" url (../ $ new T tf Path ) Ġ/* Ġ$ url Ġ*/ Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /*** Ċ // TODO : Ġerror ĠTask Ġwith Ġname Ġ' browser Production Webpack ' Ġnot Ġfound Ġin Ġproject Ġ': frontend '. Ċ Ċ tasks . get ByName (" browser Production Webpack "). apply Ġ{ ĊĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot DirPath Ġ= Ġroot Dir . absolute Path . replace ('\\ ', Ġ'/') ĊĠĠĠĠĠĠĠ Ġval Ġmap File Ġ= Ġproject . build Dir . resolve (" distributions /${ project . name }. js . map ") ĊĠĠĠĠĠĠĠ Ġmap File . write Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap File . read Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("$ root DirPath / build / js / src / main /", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("$ root DirPath / build / src / main /", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("$ root DirPath / build / js / node _ modules ", Ġ" node _ modules ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( root DirPath , Ġroot Dir . name ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ **/ Ċ