import Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Js Compile Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġkotlin (" js ") Ċ } Ċ Ċ val Ġpb and k Version : ĠString Ġby Ġroot Project . extra Ċ val Ġprotobuf js Version Ġ= Ġ"^ 6 . 1 0 . 2 " Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġimplementation ( kotlin (" stdlib - js ")) ĊĠĠĠ Ġimplementation (" pro . st reem . pb and k : pb and k - runtime :$ pb and k Version ") ĊĠĠĠ Ġimplementation ( npm (" protobuf js ", Ġprotobuf js Version )) Ċ } Ċ Ċ kotlin Ġ{ ĊĠĠĠ Ġjs ( LEG ACY ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbrowser Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsource Sets Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin . src Dir ("${ project (": lib - proto "). build Dir }/ generated / source / proto / main / pb and k ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks Ġ{ ĊĠĠĠ Ġval Ġcompile Kotlin Js Ġby Ġgetting ( Kotlin Js Compile :: class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Map Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Kind Ġ= Ġ" common js " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfree Compiler Args Ġ+= Ġ"- X opt - in = kotlin . Requires Opt In " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠGenerate Ġthe Ġprotobuf Ġfiles Ġbefore Ġcompilation ĊĠĠĠ Ġproject (": lib - proto "). tasks ĊĠĠĠĠĠĠĠ Ġ. matching Ġ{ Ġit . name Ġ== Ġ" generate Proto " Ġ} ĊĠĠĠĠĠĠĠ Ġ. all Ġ{ Ġcompile Kotlin Js . depends On ( this ) Ġ} Ċ } Ċ Ċ // ĠThis Ġis Ġrequired Ġfor Ġconsuming Ġa ĠKotlin / JS Ġlibrary Ġcompiled Ġwith ĠKotlin Ġ 1 . 4 Ċ // Ġfrom Ġa ĠKotlin Ġ 1 . 3 Ġproject . ĠSee Ġhttps :// yout rack . jetbrains . com / issue / KT - 4 0 2 2 6 Ċ // Ġfor Ġdetails . Ċ private Ġclass ĠKotlin Js Compiler Dis amb ig uation Rule Ġ: ĠAttribute Dis amb ig uation Rule < String > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( details : ĠMultiple Candidates Details < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdetails . closest Match (" legacy ") ĊĠĠĠ Ġ} Ċ } Ċ val Ġjs Compiler Attr Ġ= ĠAttribute . of (" org . jetbrains . kotlin . js . compiler ", ĠString :: class . java ) Ċ project . dependencies . attributes Schema . attribute ( js Compiler Attr ) Ġ{ ĊĠĠĠ Ġdis amb ig uation Rules . add ( Kotlin Js Compiler Dis amb ig uation Rule :: class . java ) Ċ } Ċ