Ċ /* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 6 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . framework Ċ Ċ import Ġcom . intellij . openapi . roots . Order Root Type Ċ import Ġcom . intellij . openapi . roots . impl . libraries . Library Ex Ċ import Ġcom . intellij . openapi . roots . libraries . Library Ċ import Ġcom . intellij . openapi . vfs . V fs Util Core Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġorg . jetbrains . kotlin . idea . cache s . Jar UserData Manager Ċ import Ġorg . jetbrains . kotlin . js . JavaScript Ċ import Ġorg . jetbrains . kotlin . utils . Kotlin Javascript Metadata Utils Ċ import Ġjava . util . zip . Zip Exception Ċ Ċ object ĠKotlin JavaScript Library Detection Util Ġ{ ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġis Kotlin JavaScript Library ( library : ĠLibrary ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( library Ġis ĠLibrary Ex Ġ&& Ġlibrary . is Disposed ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġis Kotlin JavaScript Library ( library . get Files ( Order Root Type . CLASSES ). toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static Ġfun Ġis Kotlin JavaScript Library ( classes Roots : ĠList < Virtual File >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠPrevent Ġcl ashing Ġwith Ġjava Ġruntime ĊĠĠĠĠĠĠĠ Ġif Ġ( Java Runtime Detection Util . get Java Runtime Version ( classes Roots ) Ġ!= Ġnull ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġclasses Roots . forEach Ġ{ Ġroot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Metadata Ġ= ĠHas Kotlin JS Metadata In Jar . has Metadata From Cache ( root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Metadata Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhas Metadata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! V fs Util Core . process Files Re cursively ( root ) Ġ{ Ġ! is Js File With Metadata ( it ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Js File With Metadata ( file : ĠVirtual File ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . isDirectory Ġ&& ĠJavaScript . EXTENSION Ġ== Ġfile . extension ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . contents To ByteArray ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠZip Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" file :${ file . path } Ġis Directory : Ġ${ file . isDirectory }, Ġexists : Ġ${ file . exists () }", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKotlin Javascript Metadata Utils . has Metadata ( String ( content )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠHas Kotlin JS Metadata In Jar Ġ: ĠJar UserData Manager . Jar Boolean Property Counter ( Has Kotlin JS Metadata In Jar :: class . simple Name !! ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Property ( file : ĠVirtual File ) Ġ= ĠKotlin JavaScript Library Detection Util . is Js File With Metadata ( file ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġhas Metadata From Cache ( root : ĠVirtual File ): ĠBoolean ? Ġ= ĠJar UserData Manager . has File With Property ( Has Kotlin JS Metadata In Jar , Ġroot ) ĊĠĠĠ Ġ} Ċ } Ċ