Fork me on GitHub
#shadow-cljs
<
2021-08-31
>
Franklin08:08:42

Hello 👋 , is there a way to get the shadow-cljs repl to indent output? or even add some coloring?

apiyo@apiyo-ThinkPad:~/git-repos/zebra/quagga$ yarn start-repl
yarn run v1.22.10
$ shadow-cljs cljs-repl app
shadow-cljs - config: /home/apiyo/git-repos/zebra/quagga/shadow-cljs.edn
shadow-cljs - connected to server
NPM dependency "highlight.js" has installed version "10.1.1"
"10.7.2" was required by jar:file:/home/apiyo/.m2/repository/superstructor/re-highlight/0.0.2/re-highlight-0.0.2.jar!/deps.cljs
cljs.user=> (js/console.log "test")
nil
cljs.user=> (require 'quagga.components.dataview.table.subs-test)
nil
> (cljs.test/run-tests 'quagga.components.dataview.table.subs-test)

Testing quagga.components.dataview.table.subs-test

FAIL in (flatten-dataset) (quagga/components/dataview/table/subs_test.cljs:25:8)
expected: (= flattened-record-list (subs/flatten-dataset record-list))
  actual: (not (= {:kids [nil], :kids/kids_details [[{:kids/kids_age 2, :kids/kids_name "Tom", :kids/immunization_info [{:kids/vaccine "Polio"} {:kids/vaccine "Rickets"}]} {:kids/kids_age 5, :kids/kids_name "Dick", :kids/immunization_info [{:kids/vaccine "Malaria"} {:kids/vaccine "Flu"} {:kids/vaccine "Polio"}]}]], :kids/nested_group [nil], :formhub [nil], :top-level-records ({:_id 60381, :_attachments [], :_media_all_received true, :kids/has_kids "1", :_duration "", :formhub "Repeat with 0 answers", :_xform_id_string "nested_repeats", :_total_media 0, :_status "submitted_via_web", :_submitted_by "frankapiyo", :formhub/uuid "f19b44ccf710492eb4d1ed6f468324f1", :meta/instanceID "uuid:0f100159-280c-49a6-be7d-04460506b37d", :_edited false, :kids/nested_group "Repeat with 0 answers", :kids/kids_details "Repeat with 2 answers", :_tags [], :kids "Repeat with 0 answers", :_bamboo_dataset_id "", :_submission_time "2020-12-03T07:06:50", :_uuid "0f100159-280c-49a6-be7d-04460506b37d", :web_browsers "", :_version nil, :_notes [], :_media_count 0, :_geolocation [nil nil], :_xform_id 2231})} {:kids [nil], :formhub [nil], :top-level-records ({:_id 60381, :_attachments [], :_media_all_received true, :kids/has_kids "1", :_duration "", :formhub "Repeat with 0 answers", :_xform_id_string "nested_repeats", :_total_media 0, :_status "submitted_via_web", :_submitted_by "frankapiyo", :formhub/uuid "f19b44ccf710492eb4d1ed6f468324f1", :meta/instanceID "uuid:0f100159-280c-49a6-be7d-04460506b37d", :_edited false, :kids/kids_details [{:kids/kids_age 2, :kids/kids_name "Tom", :kids/immunization_info [{:kids/vaccine "Polio"} {:kids/vaccine "Rickets"}]} {:kids/kids_age 5, :kids/kids_name "Dick", :kids/immunization_info [{:kids/vaccine "Malaria"} {:kids/vaccine "Flu"} {:kids/vaccine "Polio"}]}], :_tags [], :kids "Repeat with 0 answers", :_bamboo_dataset_id "", :_submission_time "2020-12-03T07:06:50", :_uuid "0f100159-280c-49a6-be7d-04460506b37d", :web_browsers "", :_version nil, :_notes [], :_media_count 0, :_geolocation [nil nil], :_xform_id 2231})}))

Ran 8 tests containing 23 assertions.
1 failures, 0 errors.
nil
cljs.user=> 

Done in 654.01s.

Franklin08:08:39

or, is there some kind of shell that would automatically indent edn that you know of?

alexdavis10:08:28

you could run your tests somewhere else, if you use emacs, cider has a good UI for test results https://docs.cider.mx/cider/testing/running_tests.html

thheller16:08:59

this is cljs.test output. little shadow-cljs can do to influence that

Daniel Strokovsky14:08:41

Hi! What is the best / recommended way to wrap a library that uses a js library? Could it be used in a library built by figwheel? Some background: we want to create a common component library (built with shadow) but we are still using figwheel in one of our libraries so I was wondering if that would even work.

lilactown15:08:31

if you're building a CLJS library your build tool shouldn't have much effect

lilactown15:08:50

since a CLJS app would include it as source, not as a built JS artifact

thheller16:08:06

you might have some trouble with the js library though. out of the box figwheel doesn't provide those

thheller16:08:35

so you either need a cljsjs package alternative of the figwheel users need to use the new-ish :target :bundle from regular CLJS

Yehonathan Sharvit08:09:18

How would it work if the app is built with shadow? I mean how will shadow know that a cljs lib A uses a JS lib B?

thheller08:09:04

in A you add a deps.cljs file with {:npm-deps {"lib-b" "version"}}

Yehonathan Sharvit09:09:28

Does :npm-deps work only with shadow ?

Yehonathan Sharvit09:09:06

I am asking in two contexts: 1. Does lib A need to be built with shadow? 2. Does an app that consumes lib A need to be built with shadow?

thheller09:09:28

libs are source only. they don't contain ANY compiled artifacts whatsoever. so no they have no reliance on shadow-cljs whatsoever

thheller09:09:22

:npm-deps is a regular CLJS option, it is information only. acting on it may require calling a function. eg. cljs.main with --install-deps or so

thheller09:09:32

but again ... the context here is a library doing something like (:require ["react" :as react])

thheller09:09:58

something needs to provide react. shadow-cljs will just do so via npm. regular CLJS and figwheel will not

thheller09:09:19

so they either need cljsjs/react or using :target :bundle with webpack or so

thheller09:09:36

(in both those cases :npm-deps are entirely irrelevant since the cljs compiler will not handle npm at all)

Yehonathan Sharvit14:09:54

Thank you @U05224H0W for your explanation

Jakub Holý (HolyJak)18:08:12

Is this the latest guide https://shadow-cljs.github.io/docs/UsersGuide.html? It reads > Version 1.0,Jan 10, 2018 > I suppose there have been changes since that?

thheller05:09:15

yeah I never update the date. date will be removed entirely soon ;)

Jakub Holý (HolyJak)18:08:53

Also, did not shadow had a standalone web page? http://shadow-cljs.org/ points just back to the GH repo...

Ryan Jerue19:08:54

There’s https://shadow-cljs.github.io/ It may be useful to update the url under About to one of those @U05224H0W

👍 1
Ryan Jerue19:08:48

That is the latest guide. I think the date is just wrong @U0522TWDA Source for the docs is here, I think https://github.com/shadow-cljs/shadow-cljs.org

👍 1
thheller05:09:06

webpage is down currently. I'll work on restoring it soon

Braden Shepherdson23:08:05

is there a command I can send to my shadow-cljs session to kick all the connected tabs? I split my work between two computers, and while they both get code updates all the Fireplace.vim commands are going to only one of them.

thheller05:09:29

why kick? you can select which tab to talk to when starting the REPL. don't know how in fireplace though

thheller08:09:53

oh there is also :repl {:runtime-select :latest} (top-level shadow-cljs.edn) to always pick the last connected runtime for the REPL instead of the first

Braden Shepherdson15:09:05

ooh! that sounds perfect. then I can just refresh when I switch machines.

thheller15:09:05

fwiw you can see the currently connected runtimes listed here http://localhost:9630/runtimes (or they log they id in the browser console on startup: shadow-cljs #4 ready! or so)

thheller15:09:28

you can pick which runtime to talk to via (shadow.cljs.devtools.api/repl :the-build-id {:runtime-id 4})

thheller15:09:44

don't know how fireplace does things so no clue how you'd tell it that

Braden Shepherdson15:09:16

I'd use :CljEval ...the above... to signal to the Clojure side of the REPL rather than the JS side.

thheller15:09:17

ah so you can already supply the runtime id if you want to?

thheller15:09:55

the automatic selection doesn't always give you what you want so having the option to pick is useful