From 73510857a618f1c7572a99e80fd648969e0050df Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Thu, 21 Aug 2025 04:14:31 +0200 Subject: [PATCH] Configure basic js module --- build.mill | 28 +++++++++++++++++++++++----- flake.nix | 4 ++-- js/src/index.ts | 11 +++++++++++ 3 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 js/src/index.ts diff --git a/build.mill b/build.mill index acd9648..1ee1d7c 100644 --- a/build.mill +++ b/build.mill @@ -2,10 +2,10 @@ package build -import mill.*, scalalib.* +import mill.*, scalalib.*, javascriptlib.* import mill.api.Task.Simple -trait Common extends ScalaModule: +trait ScalaCommon extends ScalaModule: def scalaVersion = "3.7.2" def scalacOptions = Seq( "-Wunused:all", @@ -15,7 +15,12 @@ trait Common extends ScalaModule: "-Wvalue-discard" ) -object core extends Common: +object js extends TypeScriptModule: + def npmDeps = Seq("morphdom@2.7.7") + def mainFileName = "index.ts" + +object core extends ScalaCommon: + // Replace with ujson, core shouldn't depend on ZIO def mvnDeps = Seq(mvn"dev.zio::zio-json:0.7.44") def generatedSources = Task { @@ -23,9 +28,22 @@ object core extends Common: super.generatedSources() ++ Seq(PathRef(Task.dest)) } - object test extends ScalaTests with TestModule.Utest: + def jsBundle = Task { + val bundleDest = Task.dest / "static" / "scalive.js" + os.copy( + from = js.bundle().path, + to = bundleDest + ) + PathRef(Task.dest) + } + + def resources = Task { + super.resources() ++ Seq(jsBundle()) + } + + object test extends ScalaTests with scalalib.TestModule.Utest: def utestVersion = "0.9.0" -object zio extends Common: +object zio extends ScalaCommon: def mvnDeps = Seq(mvn"dev.zio::zio-http:3.4.0") override def moduleDeps = Seq(core) diff --git a/flake.nix b/flake.nix index bea3c1d..753ed4f 100644 --- a/flake.nix +++ b/flake.nix @@ -11,10 +11,10 @@ let pkgs = nixpkgs.legacyPackages.${system}; mill = pkgs.mill.overrideAttrs (old: rec { - version = "1.0.2"; + version = "1.0.3"; src = pkgs.fetchurl { url = "https://repo1.maven.org/maven2/com/lihaoyi/mill-dist-native-linux-amd64/${version}/mill-dist-native-linux-amd64-${version}.exe"; - hash = "sha256-+jRVJDxpH9DONuar+1CqB0Yl6thAuTn7dJYqOEsebGU="; + hash = "sha256-Q7Yc9MXnMmggyMeNq0nEoL1iNTGEbJpdwH2j8/JkJyI="; }; buildInputs = [ pkgs.zlib ]; nativeBuildInputs = [ diff --git a/js/src/index.ts b/js/src/index.ts new file mode 100644 index 0000000..1698bf8 --- /dev/null +++ b/js/src/index.ts @@ -0,0 +1,11 @@ +import morphdom from 'morphdom'; + +var el1 = document.createElement('div'); +el1.className = 'foo'; + +var el2 = document.createElement('div'); +el2.className = 'bar'; + +morphdom(el1, el2); + +console.log("ok");