blob: 9eb7f6960de6735a173f2f0fc6f44365f3c7e19e (
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
package scala.scalajs.sbtplugin
import sbt._
import StringUtilities.nonEmpty
import scala.scalajs.tools.jsdep.JSDependency
/** Something JavaScript related a project may depend on. Either a JavaScript
* module/library, or the DOM at runtime. */
sealed trait AbstractJSDep {
def configurations: Option[String]
protected def withConfigs(configs: Option[String]): AbstractJSDep
def %(configurations: Configuration): AbstractJSDep = %(configurations.name)
def %(configurations: String): AbstractJSDep = {
require(this.configurations.isEmpty,
"Configurations already specified for jsModule " + this)
nonEmpty(configurations, "Configurations")
withConfigs(Some(configurations))
}
}
/** A JavaScript module/library a Scala.js project may depend on */
sealed trait JSModuleID extends AbstractJSDep {
def jsDep: JSDependency
protected def withJSDep(jsDep: JSDependency): JSModuleID
def commonJSName(name: String): JSModuleID =
withJSDep(jsDep = jsDep.commonJSName(name))
def dependsOn(names: String*): JSModuleID =
withJSDep(jsDep = jsDep.dependsOn(names: _*))
}
/** A JavaScript module that resides inside a jar (probably webjar) */
final case class JarJSModuleID(
module: ModuleID,
jsDep: JSDependency) extends JSModuleID {
def configurations: Option[String] = module.configurations
protected def withConfigs(configs: Option[String]): JSModuleID =
copy(module = module.copy(configurations = configs))
protected def withJSDep(jsDep: JSDependency): JSModuleID =
copy(jsDep = jsDep)
}
object JarJSModuleID {
def apply(module: ModuleID, name: String): JarJSModuleID =
JarJSModuleID(module, new JSDependency(name, Nil))
}
/** A JavaScript module that we depend on, but is provided externally or
* by the project itself */
final case class ProvidedJSModuleID(
jsDep: JSDependency,
configurations: Option[String]) extends JSModuleID {
protected def withConfigs(configs: Option[String]): JSModuleID =
copy(configurations = configs)
protected def withJSDep(jsDep: JSDependency): JSModuleID =
copy(jsDep = jsDep)
}
object ProvidedJSModuleID {
def apply(name: String, configurations: Option[String]): ProvidedJSModuleID =
ProvidedJSModuleID(new JSDependency(name, Nil), configurations)
}
sealed case class RuntimeDOM(
configurations: Option[String]) extends AbstractJSDep {
protected def withConfigs(configs: Option[String]): RuntimeDOM =
copy(configurations = configs)
}
object RuntimeDOM extends RuntimeDOM(None)
|