From 1ceebf4dfe143f8b6d92d34ac7189bd664b643c1 Mon Sep 17 00:00:00 2001 From: Martin Mauch Date: Tue, 3 Mar 2015 17:31:43 +0100 Subject: First shot at updating Scala.js --- build.sbt | 27 +++++++++++----------- .../src/main/scala/workbench/WorkbenchClient.scala | 5 ++-- example/build.sbt | 12 ++++------ example/project/build.properties | 2 +- example/project/build.sbt | 2 +- project/build.sbt | 2 +- src/main/scala/workbench/Plugin.scala | 25 ++++++++++---------- src/main/scala/workbench/Server.scala | 11 ++++----- 8 files changed, 42 insertions(+), 44 deletions(-) diff --git a/build.sbt b/build.sbt index e77fd6a..70c96e9 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,6 @@ import sbt.Keys._ -import scala.scalajs.sbtplugin.ScalaJSPlugin._ -import ScalaJSKeys._ + +val scalaJsVersion = "0.6.1" val defaultSettings = Seq( unmanagedSourceDirectories in Compile <+= baseDirectory(_ / "shared" / "main" / "scala"), @@ -42,28 +42,27 @@ lazy val root = project.in(file(".")).settings(defaultSettings:_*).settings( resolvers += Resolver.url("scala-js-releases", url("http://dl.bintray.com/content/scala-js/scala-js-releases"))( Resolver.ivyStylePatterns), - addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % "0.5.4"), + addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJsVersion), libraryDependencies ++= Seq( "org.scala-lang" % "scala-compiler" % scalaVersion.value, - "org.scala-lang.modules.scalajs" % s"scalajs-compiler_${scalaVersion.value}" % "0.5.4", - "org.scala-lang.modules.scalajs" %% "scalajs-tools" % "0.5.4", "io.spray" % "spray-can" % "1.3.1", "io.spray" % "spray-routing" % "1.3.1", - "com.typesafe.akka" %% "akka-actor" % "2.3.0", - "org.scala-lang.modules" %% "scala-async" % "0.9.1" % "provided", - "com.lihaoyi" %% "autowire" % "0.2.3", - "com.lihaoyi" %% "upickle" % "0.2.5" + "com.typesafe.akka" %% "akka-actor" % "2.3.9", + "org.scala-lang.modules" %% "scala-async" % "0.9.3" % "provided", + "com.lihaoyi" %% "autowire" % "0.2.4", + "com.lihaoyi" %% "upickle" % "0.2.6" ), resolvers += "bintray/non" at "http://dl.bintray.com/non/maven" ) -lazy val client = project.in(file("client")) - .settings(defaultSettings ++ scalaJSSettings:_*) +lazy val client = project.in(file("client")).enablePlugins(ScalaJSPlugin) + .settings(defaultSettings: _*) .settings( + unmanagedSourceDirectories in Compile <+= baseDirectory(_ / ".." / "shared" / "main" / "scala"), libraryDependencies ++= Seq( - "org.scala-lang.modules.scalajs" %%% "scalajs-dom" % "0.6", - "com.lihaoyi" %%% "autowire" % "0.2.3", - "com.lihaoyi" %%% "upickle" % "0.2.5" + "org.scala-js" %%% "scalajs-dom" % "0.8.0", + "com.lihaoyi" %%% "autowire" % "0.2.4", + "com.lihaoyi" %%% "upickle" % "0.2.6" ), emitSourceMaps := false ) diff --git a/client/src/main/scala/workbench/WorkbenchClient.scala b/client/src/main/scala/workbench/WorkbenchClient.scala index f4ee2c6..dc99bbc 100644 --- a/client/src/main/scala/workbench/WorkbenchClient.scala +++ b/client/src/main/scala/workbench/WorkbenchClient.scala @@ -1,11 +1,12 @@ package com.lihaoyi.workbench import upickle._ import org.scalajs.dom -import org.scalajs.dom.extensions._ +import org.scalajs.dom.ext._ import upickle.{Reader, Writer, Js} import scala.scalajs.js import scala.scalajs.js.annotation.JSExport import scalajs.concurrent.JSExecutionContext.Implicits.runNow +import org.scalajs.dom.raw._ /** * The connection from workbench server to the client @@ -69,7 +70,7 @@ object WorkbenchClient extends Api{ } @JSExport override def run(path: String, bootSnippet: Option[String]): Unit = { - val tag = dom.document.createElement("script") + val tag = dom.document.createElement("script").asInstanceOf[HTMLElement] var loaded = false tag.setAttribute("src", path) diff --git a/example/build.sbt b/example/build.sbt index 0bca703..fed07bd 100644 --- a/example/build.sbt +++ b/example/build.sbt @@ -1,9 +1,7 @@ -// Turn this project into a Scala.js project by importing these settings -import scala.scalajs.sbtplugin.ScalaJSPlugin._ -import ScalaJSKeys._ import com.lihaoyi.workbench.Plugin._ -scalaJSSettings +// Turn this project into a Scala.js project by importing these settings +enablePlugins(ScalaJSPlugin) workbenchSettings @@ -16,12 +14,12 @@ version := "0.1-SNAPSHOT" resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" libraryDependencies ++= Seq( - "org.scala-lang.modules.scalajs" %%% "scalajs-dom" % "0.6" + "org.scala-js" %%% "scalajs-dom" % "0.8.0" ) bootSnippet := "ScalaJSExample().main();" -ScalaJSKeys.inliningMode := scala.scalajs.sbtplugin.InliningMode.Off +disableOptimizer := true -spliceBrowsers <<= spliceBrowsers.triggeredBy(ScalaJSKeys.fastOptJS in Compile) +spliceBrowsers <<= spliceBrowsers.triggeredBy(fastOptJS in Compile) diff --git a/example/project/build.properties b/example/project/build.properties index be6c454..748703f 100644 --- a/example/project/build.properties +++ b/example/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.5 +sbt.version=0.13.7 diff --git a/example/project/build.sbt b/example/project/build.sbt index 9fd3498..f623fb6 100644 --- a/example/project/build.sbt +++ b/example/project/build.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % "0.5.4") +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.1") lazy val root = project.in(file(".")).dependsOn(file("../..")) diff --git a/project/build.sbt b/project/build.sbt index 58178ec..0dd657b 100644 --- a/project/build.sbt +++ b/project/build.sbt @@ -1 +1 @@ -addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % "0.5.4") +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.1") diff --git a/src/main/scala/workbench/Plugin.scala b/src/main/scala/workbench/Plugin.scala index dd3cab9..4c6fb9d 100644 --- a/src/main/scala/workbench/Plugin.scala +++ b/src/main/scala/workbench/Plugin.scala @@ -3,13 +3,13 @@ import scala.concurrent.ExecutionContext.Implicits.global import sbt._ import sbt.Keys._ import autowire._ -import scala.scalajs.sbtplugin.ScalaJSPlugin.ScalaJSKeys -import scala.scalajs.tools.io._ -import scala.scalajs.tools.optimizer.ScalaJSOptimizer -import scala.scalajs.sbtplugin.ScalaJSPluginInternal._ -import scala.scalajs.sbtplugin.Implicits._ +import org.scalajs.sbtplugin.ScalaJSPlugin.AutoImport +import org.scalajs.core.tools.io._ +import org.scalajs.core.tools.optimizer.ScalaJSOptimizer +import org.scalajs.sbtplugin.ScalaJSPluginInternal._ +import org.scalajs.sbtplugin.Implicits._ -import ScalaJSKeys._ +import AutoImport._ object Plugin extends sbt.Plugin { val refreshBrowsers = taskKey[Unit]("Sends a message to all connected web pages asking them to refresh the page") @@ -137,15 +137,16 @@ object Plugin extends sbt.Plugin { import ScalaJSOptimizer._ (scalaJSOptimizer in fastOptJS).value.optimizeCP( - Inputs(input = (preLinkClasspath in fastOptJS).value), - OutputConfig( + (scalaJSPreLinkClasspath in fastOptJS).value, + Config( output = WritableFileVirtualJSFile(output), cache = None, wantSourceMap = (emitSourceMaps in fastOptJS).value, relativizeSourceMapBase = relSourceMapBase, - checkIR = (checkScalaJSIR in fastOptJS).value, - disableInliner = (inliningMode in fastOptJS).value.disabled, - batchInline = (inliningMode in fastOptJS).value.batch), + checkIR = (scalaJSOptimizerOptions in fastOptJS).value.checkScalaJSIR, + disableOptimizer = (scalaJSOptimizerOptions in fastOptJS).value.disableOptimizer, + batchMode = (scalaJSOptimizerOptions in fastOptJS).value.batchMode + ), s.log ) // end of C&P @@ -165,7 +166,7 @@ object Plugin extends sbt.Plugin { ).call() () } - }.dependsOn(packageJSDependencies, packageLauncher, compile) + }.dependsOn(packageJSDependencies, packageScalaJSLauncher, compile) }, sjsReset := { println("Clearing sjs REPL History") diff --git a/src/main/scala/workbench/Server.scala b/src/main/scala/workbench/Server.scala index 4df8b61..484999e 100644 --- a/src/main/scala/workbench/Server.scala +++ b/src/main/scala/workbench/Server.scala @@ -14,18 +14,17 @@ import spray.http.HttpHeaders.`Access-Control-Allow-Origin` import concurrent.duration._ import scala.concurrent.Future import scala.io.Source -import scala.scalajs.tools.optimizer.{ScalaJSClosureOptimizer, ScalaJSOptimizer} -import scala.scalajs.tools.io._ -import scala.scalajs.tools.logging.Level +import org.scalajs.core.tools.optimizer.{ScalaJSClosureOptimizer, ScalaJSOptimizer} +import org.scalajs.core.tools.io._ +import org.scalajs.core.tools.logging.Level import scala.tools.nsc import scala.tools.nsc.Settings import scala.tools.nsc.backend.JavaPlatform -import scala.tools.nsc.plugins.Plugin import scala.tools.nsc.util.ClassPath.JavaContext import scala.collection.mutable import scala.tools.nsc.typechecker.Analyzer -import scala.scalajs.tools.classpath.{CompleteNCClasspath, CompleteCIClasspath, PartialIRClasspath, PartialClasspath} +import org.scalajs.core.tools.classpath.{CompleteClasspath, PartialClasspath} import scala.tools.nsc.util.{JavaClassPath, DirectoryClassPath} class Server(url: String, port: Int, bootSnippet: String) extends SimpleRoutingApp{ @@ -107,7 +106,7 @@ class Server(url: String, port: Int, bootSnippet: String) extends SimpleRoutingA (function(){ $body - WorkbenchClient().main(${upickle.write(bootSnippet)}, ${upickle.write(url)}, ${upickle.write(port)}) + com.lihaoyi.workbench.WorkbenchClient().main(${upickle.write(bootSnippet)}, ${upickle.write(url)}, ${upickle.write(port)}) }).call(this) """ } -- cgit v1.2.3