Fork me on GitHub
#datascript
<
2021-11-19
>
Peter Sagerson16:11:22

Playing with DataScript in the browser, I started having trouble as soon as I tried a build with optimizations. This trivial case reproduces it (node and browser behave the same):

(defn main
  []
  (let [conn (ds/create-conn)]
    (ds/transact! conn [[:db/add 1 :person/name "Alice"]])
    (prn (ds/q '[:find [?e ?v]
                 :where [?e :person/name ?v]]
               @conn))))
> bin/shadow-cljs compile node
[:node] Compiling ...
[:node] Build completed. (65 files, 64 compiled, 0 warnings, 9.90s)
> node build/app.js
[1 "Alice"]

> bin/shadow-cljs release node
[:node] Compiling ...
[:node] Build completed. (65 files, 26 compiled, 0 warnings, 19.27s)
> node build/app.js
[1 #object[Function]]

> bin/shadow-cljs --debug release node
[:node] Compiling ...
[:node] Build completed. (65 files, 26 compiled, 0 warnings, 21.83s)
> node build/app.js
[1 nil]
Am I missing something? (Full source at https://github.com/psagers/datascript-shadow).

dmegas18:11:20

I’d be interested to know if you find anything out. I’m facing a similar issue but thought that it was because I was storing a File object; it is working with :simple optimisations but not with :advanced.

Peter Sagerson19:11:41

That seems to have done it, thanks! ClojureScript/Shadow CLJS have gotten so good at extern inference for interop, it's been a while since I've had to deal with them explicitly.

dmegas19:11:55

yes! it worked for me, too 😄

Jack Park20:11:20

Strange: the URL to datascript-shadow seems broken - no such codebase at that repo

Peter Sagerson20:11:44

I took it down since the problem was solved. There was nothing unique or interesting in it. https://github.com/tonsky/datascript/wiki/Tips-&amp;-tricks#externs-and-shadow-cljs