@@ -24,8 +24,10 @@ import qualified Elm.Compiler.Type.Extract as Extract
24import qualified Elm.Interface as I
24import qualified Elm.Interface as I
25import qualified Elm.Name as N
25import qualified Elm.Name as N
26import qualified Elm.Package as Pkg
26import qualified Elm.Package as Pkg
27+import qualified Elm.Compiler.Version as Version
27import qualified Generate.JavaScript.Builder as JS
28import qualified Generate.JavaScript.Builder as JS
28import qualified Generate.JavaScript.Name as Name
29import qualified Generate.JavaScript.Name as Name
30+import qualified Json.Encode as Encode
29import qualified Optimize.DecisionTree as DT
31import qualified Optimize.DecisionTree as DT
30import qualified Reporting.Region as R
32import qualified Reporting.Region as R
@@ -868,10 +870,17 @@ generateMain mode interfaces home segments main =
868 # List.foldl' addDot elm segments
870 # List.foldl' addDot elm segments
870 Opt.Dynamic decoder msgType ->
872 Opt.Dynamic decoder msgType ->
876+ [ ("versions", Encode.object [ ("elm", Pkg.encodeVersion Version.version) ])
877+ , ("types", Type.encodeMetadata (Extract.fromMsg interfaces msgType))
871 JS.Ref (Name.fromGlobal home "main")
880 JS.Ref (Name.fromGlobal home "main")
872 # List.foldl' addDot elm segments
881 # List.foldl' addDot elm segments
873 # generateJsExpr mode decoder
882 # generateJsExpr mode decoder
874− # JS.Json (Type.encodeMetadata (Extract.fromMsg interfaces msgType))
883+ # JS.Json jsonMetadata
877(#) :: JS.Expr -> JS.Expr -> JS.Expr
886(#) :: JS.Expr -> JS.Expr -> JS.Expr