Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
  • Aug 23 2021 09:24
    @sjrd banned @yensaoxuan_twitter
  • Apr 18 2021 19:06
    @sjrd banned @Amitgup48798297_twitter
  • Mar 29 2021 07:47
    @sjrd banned @quangs
  • Jan 23 2021 06:34
    @sjrd banned @Rebeka58_gitlab
  • Jun 08 2020 20:43
    @sjrd banned @sw7240614
  • Sep 29 2019 08:35
    @sjrd banned @8bitpitRBX_twitter
  • May 23 2019 13:44
    @sjrd banned @BIGCRYPTO001_gitlab
  • May 01 2019 14:31
    @sjrd banned @Certificates1_gitlab
  • Apr 22 2019 15:31
    @sjrd banned @lerbatax
  • Jan 31 2019 23:04
    sjrd commented #3555
  • Jan 31 2019 22:56
    sjrd review_requested #3555
  • Jan 31 2019 22:56
    sjrd opened #3555
  • Jan 31 2019 21:06

    sjrd on 0.6.x

    Remove dead code: specific coll… Adapt the signature of `js.Arra… Merge pull request #3554 from s… (compare)

  • Jan 31 2019 21:06
    sjrd closed #3554
  • Jan 31 2019 20:54
    erikvanoosten commented #2665
  • Jan 31 2019 16:33
    sjrd commented #3538
  • Jan 31 2019 15:54

    sjrd on master

    Fix analyzer cycle detection to… Add toString methods to analyze… Do not provide linked ClassInfo… and 1 more (compare)

  • Jan 31 2019 15:54
    sjrd closed #3552
  • Jan 31 2019 15:54

    sjrd on master

    Remove Logger.success It is un… Make level helpers final Clean-up ScalaConsoleLogger cod… and 1 more (compare)

  • Jan 31 2019 15:54
    sjrd closed #3553
IntelliJ has it's own scala analyser that is mostly unrelated scalac. I imagine hacking on the compiler with it would be fairly confusing
any idea about garbage collection / finalizers in scalajs ? http://sodium.nz/t/sodium-seems-to-work-with-scala-js/439/2
Stephen says, that sodium causes memory leak in scala.js
The issue with using Sodium on Scala.js is that Sodium requires Java finalizers for its memory management, and Javascript does not allow for these to be implemented. They are impossible to implement in Javascript, so (unless I am wrong) Scala.js can't possibly have done it. Note that this will only leak memory if you use the Sodium 'switch' primitive, because the issue is in cleaning up Sodium objects that are no longer used, and this can only happen when you use 'switch'.
What do you think about this @sjrd ?
is this really an issue ?
" Java finalizers for its memory management"
Sébastien Doeraene
Yeah Java finalizers are impossible toi implement in JavaScript.
Dario Abdulrehman
Hi, a long question: there is a fairly large third-party library of UI components built with Node.js and a templating language (Nunjucks). At our shop we would like to reuse those components from Scala (JVM) frontends using Play. We attempted to reuse the third party lib with a Play module that essentially runs Node on the JVM to render the components. It is terribly slow as expected. Could scalajs help here?
Salar Rahmanian
so I am using the scalajs for the first time and trying to create a tcp server using node net lib: https://millermedeiros.github.io/mdoc/examples/node_api/doc/net.html
using js.Dynamic.global.require("net") to import the library
my question is if you look at the above example for createServer whats the scalajs way of passing a promise to it?
@dabd not sure why you'd do it on server, and scalajs certainly woudnt be of much use there, but otherwise it can help
I’ve used templating libraries on node using scalajs and they worked fine. Whether it’s fast enough will be based on how you code the data side of the problem. I was only templating emails though,
Nothing complicated or high volume.
So I think you have only a few options if you keep node templating. Use node backend for server with scala js, use node in graal or proxy to a real node server assuming node on jvm is to slow.
David Portabella
We are hiring a Scala/ScalaJs software developer, at the EPFL Swiss university.
Let me know if you are interested, or if you know someone else.
The job ad does not say it explicitly, but the platform is written 100% in Scala/ScalaJs.
Dario Abdulrehman
@OlegYch if wewant to reuse the library are there any other options than having a server rendering the components?
Dario Abdulrehman
@aappddeevv another option would be to compile Nunjucks templates to Twirl or ScalaTags but it would be a challenging task to write the compiler
if that's a js library then you can just as well run it on client
@dabd would be a bunch of work :-) if performance is that critical and you have to use nunjucks, probably a "nunjucks rendering microservice" along side the jvm service would be cleanest. I just scanned the latest graal and it looks like it would work but its probably harder to setup.
Dario Abdulrehman
@aappddeevv wouldn't that have a bit of overhead? Why not as @OlegYch suggests having the client run the Nunjucks library? I'm not sure how can you achieve that to be honest but it would be a matter of having the Play controllers (ScalaJVM) communicating with the client in ScalaJs. Is there an example of such an application I could take a look at?
You can have the client (js or scalajs) run templating for some standard UI rendering vs email server-side rendering that I mentioned earlier. Depending on the volume of templating though, rendering on the client may not make sense. I'm not sure I uderstand what you are trying to do though and the constraints you face. If the templating is for the UI exclusively, then rendering on the client is fine and I've done that as well using the exact same rendering library as I did for the server side emails. Based on your initial description, it sounded like you wanted rendering server side so the client is not impacted.
Dario Abdulrehman
@aappddeevv We have a bunch of Play frontend microservices which are doing server-side rendering and they are all using Twirl. Howeve,r soon we will have to use this js library built on Nunjucks which provides standardised UI components for the organisation. I think moving to client-side rendering would have some security implications. Sticking with server-side rendering seems to be the most likely acceptable solution.
That's what I thought. I think that my three "server-side" options are valid unless you rewrite the templating engine. You can skip rewriting the entire server in scala.js as that's probably not feasible. scala.js does not help you per se as you need to run a js-based templating library and scala.js requires a js engine to run on. graal jvm/node is probably too much work to get working and may have ops implications. So if you have to run those js-based templates server side, a small, templating microservice based on nodejs is conceptually easy and callable by your primary play server. It's not clear the overhead from calling a second server is significanlly less than the "slow" rendering though.
Dario Abdulrehman
I actually rewrote the templating library in Twirl and used scalacheck to ensure parity of the rendered HTML with the output of the Nunjucks templates, however it is a pain to maintain.
Hmm..you only have a few choices...good luck.
Dario Abdulrehman
Thanks for the ideas @aappddeevv !
i started to use FRP sodium with scalajs-react
        val titleS=STextArea(title)
        val button=SButton()

this code prints the content of a text area to the console when the button is pressed
titleS does not know nothing about SButton
or the other way around
and of SButton :
here runs the code... right now ... for a while ... until i change it
Brian Kent
is there a library to generate Typescript definitions from ScalaJS types?
Glen Marchesani
@bdkent I was wondering the same thing myself
Antoine Doeraene
I'd also be very happy to have such a thing. I started to implement it using scalameta, then I realised that I actually need SemanticDB but didn't have/take the time to learn it deep enough. I could try to start again if there is demand... There was also this talk at the last scala days that could be of interest to you. I don't know where that project stands now though.
David Portabella

MouseEvent.target returns an EventTarget instead of a HTMLElement when clicked inside an iframe.

    val iframe = document.createElement("iframe")
    val iframeWindow = iframe.asInstanceOf[HTMLIFrameElement].contentWindow
    iframeWindow.document.body.innerHTML = "<h1>iframe</h1>"

    val clicked: js.Function1[MouseEvent, Unit] = (e: MouseEvent) => {
      e.target match {
        case e: HTMLElement => console.log("clicked an HTMLElement", e)
        case e: EventTarget => console.log("clicked an EventTarget", e)
    iframeWindow.document.addEventListener("click", clicked)

When I click inside the iframe on the <h1>iframe</h1>, I get an EventTarget instead of an HTMLElement. Why and how to solve it?


i dont even know what this pattern match doing
case e: HTMLElement
why not case HTMLElement ?
you are pattern matching on the type ?
are a bit shadowy