;; shadow-cljs configuration {:source-paths ["src" "test/cljs"] :dependencies [[org.clojure/core.async "1.1.587"] [reagent "1.0.0"] [re-frame "0.12.0"] [binaryage/oops "0.7.0"] [com.andrewmcveigh/cljs-time "0.5.2"] [status-im/timbre "4.10.0-2-status"] [com.taoensso/encore "2.105.0"] [hickory "0.7.1"] [cljs-bean "1.3.0"] [com.cognitect/transit-cljs "0.8.248"] [mvxcvi/alphabase "1.0.0"] ;; dev dependencies [refactor-nrepl "2.5.0"] [cider/cider-nrepl "0.25.3"] [cider/piggieback "0.4.1"] [re-frisk-remote "1.6.0"] ;; routing [bidi "2.1.6"] ;; test dependencies [day8.re-frame/test "0.1.5"] [com.taoensso/tufte "2.1.0"] ;; linting [cljfmt/cljfmt "0.6.7"]] ;; port and middleware for repl in development :nrepl {:port 7888 :middleware [cider.piggieback/wrap-cljs-repl refactor-nrepl.middleware/wrap-refactor]} ;; shadow-cljs web interface :http {:port 3449 :host "0.0.0.0"} :cache-blockers #{status-im.utils.js-resources status-im.ui.components.icons.icons} :builds {:mobile {:target :react-native :output-dir "app" :init-fn status-im.core/init ;; When false, the Shadow-CLJS watcher won't automatically refresh ;; the target files (a.k.a hot reload). When false, you can manually ;; reload by calling `shadow.cljs.devtools.api/watch-compile-all!`. :devtools {:autobuild #shadow/env ["SHADOW_AUTOBUILD_ENABLED" :default true :as :bool]} :dev {:devtools {:after-load status-im.reloader/reload :build-notify status-im.reloader/build-notify :preloads [re-frisk-remote.preload]} :closure-defines {status-im.utils.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN" status-im.utils.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"} :compiler-options {:output-feature-set :es5 :closure-defines {re-frame.trace/trace-enabled? true} :source-map false :infer-externs true} ;; if you want to use a real device, set your local ip ;; in the SHADOW_HOST env variable to make sure that ;; it will use the right interface :local-ip #shadow/env "SHADOW_HOST"} :chunks {:fleets status-im.fleet.default-fleet/default-fleets :chats status-im.chat.default-chats/default-chats} :release {:closure-defines {status-im.utils.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN" status-im.utils.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"} :compiler-options {:output-feature-set :es6 ;;disable for android build as there ;;is an intermittent warning with deftype :warnings-as-errors false :infer-externs :auto :static-fns true :fn-invoke-direct true :optimizations :advanced :js-options {:js-provider :closure}}}} ;; the tests are ran with node, react-native dependencies are mocked ;; by using node --require override.js, which uses the node-library ;; produced by the target :mocks below and redefines node require ;; function to use the mocks instead of the rn libraries :test {:output-to "target/test/test.js" :output-dir "target/test" :optimizations :simple :target :node-test :main status-im.test-runner/main ;; set :ui-driven to true to let shadow-cljs inject node-repl :ui-driven true :closure-defines {status-im.utils.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN" status-im.utils.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"} :compiler-options {;; needed because we override require and it ;; messes with source-map which reports callstack ;; exceeded exceptions instead of real issues :source-map false ;; needed because we use deref in tests :static-fns false :optimizations :simple :infer-externs true}} ;; mock.js-dependencies is mocking the react-native libraries ;; we build it as a node library so that it can be required by ;; override.js :mocks {:target :node-library :exports {:mocks mocks.js-dependencies/mock} :output-to "target/mocks/mocks.js" :output-dir "target/mocks" :compiler-options {:optimizations :simple :source-map false}}}}