summaryrefslogtreecommitdiff
path: root/examples/scala-js/tools/js/src/test/scala/scala/scalajs/tools/js/test/QuickLinker.scala
blob: 580c4c506187e3294ceccc1f70d3b59f61b68043 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package scala.scalajs.tools.js.test

import scala.scalajs.tools.sem.Semantics
import scala.scalajs.tools.io._
import scala.scalajs.tools.logging._
import scala.scalajs.tools.classpath._
import scala.scalajs.tools.classpath.builder._
import scala.scalajs.tools.optimizer._

import scala.scalajs.js.annotation.JSExport

@JSExport("scalajs.QuickLinker")
object QuickLinker {

  /** Link a Scala.js application on Node.js */
  @JSExport
  def linkNode(cpEntries: String*): String = {
    val builder = new AbstractPartialClasspathBuilder with NodeFileSystem
    val cp = builder.build(cpEntries.toList)

    val complete = cp.resolve()

    val optimizer = new ScalaJSOptimizer(Semantics.Defaults.optimized)

    val out = WritableMemVirtualJSFile("out.js")

    import ScalaJSOptimizer._
    val optimized = optimizer.optimizeCP(
      Inputs(complete),
      OutputConfig(out),
      new ScalaConsoleLogger
    )

    out.content
  }

}