summaryrefslogtreecommitdiff
path: root/library/src/main/scala/scala/scalajs/js/JSApp.scala
diff options
context:
space:
mode:
Diffstat (limited to 'library/src/main/scala/scala/scalajs/js/JSApp.scala')
-rw-r--r--library/src/main/scala/scala/scalajs/js/JSApp.scala20
1 files changed, 20 insertions, 0 deletions
diff --git a/library/src/main/scala/scala/scalajs/js/JSApp.scala b/library/src/main/scala/scala/scalajs/js/JSApp.scala
new file mode 100644
index 0000000..fd12207
--- /dev/null
+++ b/library/src/main/scala/scala/scalajs/js/JSApp.scala
@@ -0,0 +1,20 @@
+package scala.scalajs.js
+
+import annotation.{JSExport, JSExportDescendentObjects}
+
+/** Base class for top-level, entry point main objects.
+ *
+ * Objects inheriting from [[JSApp]] are automatically exported to JavaScript
+ * under their fully qualified name, and their [[main]] method as well.
+ *
+ * [[JSApp]] is typically used to mark the entry point of a Scala.js
+ * application. As such, the sbt plugin also recognizes top-level objects
+ * extending [[JSApp]]. It allows to run their [[main]] method with `sbt run`,
+ * and can also generate a tiny JavaScript launcher snippet executing the
+ * [[main]] method of one specific [[JSApp]] object.
+ */
+@JSExportDescendentObjects
+trait JSApp {
+ @JSExport
+ def main(): Unit
+}