@@ -6,8 +6,8 @@ addCommandAlias(
66 " fmtCheck" ,
77 " ; compile:scalafmtCheck; test:scalafmtCheck; it:scalafmtCheck; scalafmtSbtCheck"
88)
9- addCommandAlias(" testJVM" , " ;coreJVM/test;io/test;reactiveStreams/test;benchmark /test" )
10- addCommandAlias(" testJS" , " coreJS /test" )
9+ addCommandAlias(" testJVM" , " ;rootJVM /test" )
10+ addCommandAlias(" testJS" , " rootJS /test" )
1111
1212Global / onChangedBuildSource := ReloadOnSourceChanges
1313
@@ -104,13 +104,36 @@ ThisBuild / mimaBinaryIssueFilters ++= Seq(
104104 ProblemFilters .exclude[ReversedMissingMethodProblem ](
105105 " fs2.io.net.tls.TLSContext.dtlsServerBuilder"
106106 ),
107- ProblemFilters .exclude[Problem ](" fs2.io.net.tls.TLSEngine*" )
107+ ProblemFilters .exclude[Problem ](" fs2.io.net.tls.TLSEngine*" ),
108+ // start #2453 cross-build fs2.io for scala.js
109+ // private implementation classes
110+ ProblemFilters .exclude[MissingClassProblem ](" fs2.io.net.Socket$IntCallbackHandler" ),
111+ ProblemFilters .exclude[MissingClassProblem ](" fs2.io.net.Socket$BufferedReads" ),
112+ ProblemFilters .exclude[MissingClassProblem ](" fs2.io.net.SocketGroup$AsyncSocketGroup" ),
113+ ProblemFilters .exclude[MissingClassProblem ](" fs2.io.net.Socket$AsyncSocket" ),
114+ ProblemFilters .exclude[MissingClassProblem ](
115+ " fs2.io.net.DatagramSocketGroup$AsyncDatagramSocketGroup"
116+ ),
117+ ProblemFilters .exclude[MissingClassProblem ](" fs2.io.net.unixsocket.UnixSockets$AsyncSocket" ),
118+ ProblemFilters .exclude[MissingClassProblem ](" fs2.io.net.unixsocket.UnixSockets$AsyncUnixSockets" ),
119+ ProblemFilters .exclude[MissingClassProblem ](" fs2.io.net.tls.TLSContext$Builder$AsyncBuilder" ),
120+ // sealed traits
121+ ProblemFilters .exclude[NewMixinForwarderProblem ](" fs2.io.net.Network.*" ),
122+ ProblemFilters .exclude[NewMixinForwarderProblem ](" fs2.io.net.tls.TLSContext.*" ),
123+ ProblemFilters .exclude[InheritedNewAbstractMethodProblem ](" fs2.io.net.tls.TLSContext.*" )
124+ // end #2453
108125)
109126
110127lazy val root = project
111128 .in(file(" ." ))
112129 .enablePlugins(NoPublishPlugin , SonatypeCiReleasePlugin )
113- .aggregate(coreJVM, coreJS, io, reactiveStreams, benchmark)
130+ .aggregate(coreJVM, coreJS, io.jvm, io.js, reactiveStreams, benchmark)
131+
132+ lazy val rootJVM = project
133+ .in(file(" ." ))
134+ .enablePlugins(NoPublishPlugin )
135+ .aggregate(coreJVM, io.jvm, reactiveStreams, benchmark)
136+ lazy val rootJS = project.in(file(" ." )).enablePlugins(NoPublishPlugin ).aggregate(coreJS, io.js)
114137
115138lazy val IntegrationTest = config(" it" ).extend(Test )
116139
@@ -177,16 +200,13 @@ lazy val coreJS = core.js
177200 scalaJSLinkerConfig ~= (_.withModuleKind(ModuleKind .CommonJSModule ))
178201 )
179202
180- lazy val io = project
203+ lazy val io = crossProject( JVMPlatform , JSPlatform )
181204 .in(file(" io" ))
182205 .enablePlugins(SbtOsgi )
206+ .jsConfigure(_.enablePlugins(ScalablyTypedConverterGenSourcePlugin ))
183207 .settings(
184208 name := " fs2-io" ,
185- libraryDependencies ++= Seq (
186- " com.comcast" %% " ip4s-core" % " 3.0.3" ,
187- " com.github.jnr" % " jnr-unixsocket" % " 0.38.8" % Optional
188- ),
189- Test / fork := true ,
209+ libraryDependencies += " com.comcast" %%% " ip4s-core" % " 3.0.3" ,
190210 OsgiKeys .exportPackage := Seq (" fs2.io.*" ),
191211 OsgiKeys .privatePackage := Seq (),
192212 OsgiKeys .importPackage := {
@@ -200,7 +220,20 @@ lazy val io = project
200220 OsgiKeys .additionalHeaders := Map (" -removeheaders" -> " Include-Resource,Private-Package" ),
201221 osgiSettings
202222 )
203- .dependsOn(coreJVM % " compile->compile;test->test" )
223+ .jvmSettings(
224+ Test / fork := true ,
225+ libraryDependencies += " com.github.jnr" % " jnr-unixsocket" % " 0.38.8" % Optional
226+ )
227+ .jsSettings(
228+ scalaJSLinkerConfig ~= (_.withModuleKind(ModuleKind .CommonJSModule )),
229+ Compile / npmDependencies += " @types/node" -> " 16.0.0" ,
230+ Test / npmDependencies += " jks-js" -> " 1.0.1" ,
231+ useYarn := true ,
232+ stOutputPackage := " fs2.internal.jsdeps" ,
233+ stStdlib := List (" es2020" ),
234+ stIgnore += " jks-js"
235+ )
236+ .dependsOn(core % " compile->compile;test->test" )
204237
205238lazy val reactiveStreams = project
206239 .in(file(" reactive-streams" ))
@@ -236,7 +269,7 @@ lazy val benchmark = project
236269 Test / run / javaOptions := (Test / run / javaOptions).value
237270 .filterNot(o => o.startsWith(" -Xmx" ) || o.startsWith(" -Xms" )) ++ Seq (" -Xms256m" , " -Xmx256m" )
238271 )
239- .dependsOn(io)
272+ .dependsOn(io.jvm )
240273
241274lazy val microsite = project
242275 .in(file(" mdoc" ))
@@ -252,7 +285,7 @@ lazy val microsite = project
252285 githubWorkflowArtifactUpload := false ,
253286 fatalWarningsInCI := false
254287 )
255- .dependsOn(coreJVM, io, reactiveStreams)
288+ .dependsOn(coreJVM, io.jvm , reactiveStreams)
256289 .enablePlugins(MdocPlugin , NoPublishPlugin )
257290
258291ThisBuild / githubWorkflowBuildPostamble ++= List (
0 commit comments