├── samples ├── dom │ ├── .gitignore │ ├── test.html │ └── src │ │ └── dom │ │ └── test.cljs ├── hello │ ├── .gitignore │ ├── src │ │ └── hello │ │ │ ├── foo │ │ │ └── bar.cljs │ │ │ └── core.cljs │ ├── hello.html │ ├── hello-dev.html │ └── README.md ├── repl │ ├── .gitignore │ ├── src │ │ └── repl │ │ │ └── foo.cljs │ ├── repl.clj │ └── index.html ├── hello-js │ ├── .gitignore │ ├── externs.js │ ├── my-external-lib.js │ ├── externed-lib.js │ ├── src │ │ └── hello-js │ │ │ ├── extern-example.cljs │ │ │ └── core.cljs │ ├── hello-extern.html │ ├── hello-js.html │ ├── hello-js-dev.html │ └── README.md ├── string-requires-npm-deps │ ├── .gitignore │ ├── package.json │ ├── src │ │ └── foo │ │ │ └── core.cljs │ ├── build.clj │ └── README.md ├── twitterbuzz │ ├── .gitignore │ ├── reset.css │ ├── README.md │ └── src │ │ └── twitterbuzz │ │ ├── timeline.cljs │ │ └── leaderboard.cljs ├── nodehello.cljs └── nodels.cljs ├── src ├── test │ ├── cljs_build │ │ ├── json_modules_test │ │ │ ├── b.json │ │ │ └── a.js │ │ ├── analyzer_test │ │ │ └── no_defs.cljs │ │ ├── trivial │ │ │ ├── core5.cljs │ │ │ ├── core3.cljs │ │ │ ├── core4.cljs │ │ │ ├── core.cljs │ │ │ ├── core2.cljs │ │ │ └── core6.cljs │ │ ├── foreign-libs-dir │ │ │ └── vendor │ │ │ │ └── lib.js │ │ ├── firebase │ │ │ └── core.cljs │ │ ├── adv_src_map │ │ │ └── core.cljs │ │ ├── loader_test │ │ │ ├── foreignA.js │ │ │ ├── foreignB.js │ │ │ ├── bar.cljs │ │ │ └── foo.cljs │ │ ├── code-split │ │ │ ├── src │ │ │ │ └── code │ │ │ │ │ └── split │ │ │ │ │ ├── d.cljs │ │ │ │ │ ├── b.cljs │ │ │ │ │ ├── c.cljs │ │ │ │ │ └── a.cljs │ │ │ ├── index.html │ │ │ └── repl.clj │ │ ├── libs_test │ │ │ └── core.cljs │ │ ├── cljs_3284 │ │ │ ├── bean.cljs │ │ │ └── core.cljs │ │ ├── foreign_libs_cljs_2334 │ │ │ ├── lib.js │ │ │ └── core.cljs │ │ ├── cljs_3311_regress │ │ │ ├── tests.cljs │ │ │ └── core.cljs │ │ ├── npm_deps_test │ │ │ ├── core.cljs │ │ │ ├── invoke.cljs │ │ │ └── string_requires.cljs │ │ ├── node_modules_opt_test │ │ │ └── core.cljs │ │ ├── cljs_3235 │ │ │ ├── foreign.js │ │ │ └── core.cljs │ │ ├── cljs_3346_as_alias │ │ │ └── core.cljs │ │ ├── emit_node_requires_test │ │ │ ├── native_modules.cljs │ │ │ └── core.cljs │ │ ├── cljs_3452_str_optimizations │ │ │ └── core.cljs │ │ ├── hello-modules │ │ │ ├── src │ │ │ │ ├── bar │ │ │ │ │ └── core.cljs │ │ │ │ └── foo │ │ │ │ │ └── core.cljs │ │ │ ├── index.html │ │ │ ├── release.clj │ │ │ └── repl.clj │ │ ├── package_json_resolution_test │ │ │ └── core.cljs │ │ ├── thirdparty │ │ │ └── add.js │ │ ├── emit_global_requires_test │ │ │ └── core.cljs │ │ ├── circular_deps │ │ │ ├── a.cljs │ │ │ └── b.cljs │ │ ├── foreign_libs │ │ │ └── core.cljs │ │ ├── foreign_libs_cljs_2249 │ │ │ └── core.cljs │ │ └── foreign_libs_dir_test │ │ │ └── core.cljs │ ├── node │ │ └── test.js │ ├── clojure │ │ └── cljs │ │ │ ├── preamble1.js │ │ │ ├── preamble2.js │ │ │ ├── source_map │ │ │ └── base64_tests.clj │ │ │ ├── profile.clj │ │ │ ├── js_deps_tests.clj │ │ │ ├── transpile_tests.clj │ │ │ ├── instant_tests.clj │ │ │ ├── compiler │ │ │ └── glib_module_test.clj │ │ │ ├── test_runner.clj │ │ │ └── repl_tests.clj │ ├── cljs │ │ ├── hello.cljs │ │ ├── es6_default_hello.js │ │ ├── es6_dep.js │ │ ├── es6_hello.js │ │ ├── single_seg_macros.clj │ │ ├── externs.js │ │ ├── js_libs │ │ │ └── tabby.js │ │ ├── deps.cljs │ │ ├── calculator_global.js │ │ ├── calculator.js │ │ ├── Circle.js │ │ ├── Circle-min.js │ │ ├── baz.cljs │ │ ├── cljs │ │ │ ├── baz.cljs │ │ │ ├── ns_test │ │ │ │ ├── bar.cljs │ │ │ │ └── foo.cljs │ │ │ ├── spec │ │ │ │ └── test │ │ │ │ │ ├── test_ns2.cljs │ │ │ │ │ ├── test_ns1.cljs │ │ │ │ │ └── test_macros.cljc │ │ │ ├── keyword_other.cljs │ │ │ ├── macro_test │ │ │ │ ├── cljs2261.cljs │ │ │ │ ├── cljs2261.clj │ │ │ │ ├── macros.clj │ │ │ │ └── cljs2852.clj │ │ │ ├── keyword_macros.clj │ │ │ ├── binding_test_other_ns.cljs │ │ │ ├── array_access │ │ │ │ ├── beta.cljs │ │ │ │ ├── helper.clj │ │ │ │ └── alpha.cljs │ │ │ ├── array_access_test.cljc │ │ │ ├── top_level.cljs │ │ │ ├── syntax_quote_test.cljs │ │ │ ├── keyword_test.cljs │ │ │ ├── qualified_method_test.cljs │ │ │ ├── repl_test.cljs │ │ │ ├── foo │ │ │ │ └── ns_shadow_test.cljs │ │ │ ├── tagged_literals_test.cljs │ │ │ ├── var_test.cljs │ │ │ ├── import_test.cljs │ │ │ ├── letfn_test.cljs │ │ │ ├── specials_test.cljs │ │ │ ├── hash_set_test.cljs │ │ │ ├── clojure_alias_test.cljs │ │ │ ├── proxy_test.cljs │ │ │ ├── inference_util.clj │ │ │ ├── chunked_seq.cljs │ │ │ ├── set_equiv_test.cljs │ │ │ ├── invoke_test.cljs │ │ │ ├── pprint_test.clj │ │ │ ├── macro_test.cljs │ │ │ ├── npm_deps_test.cljs │ │ │ ├── eval_test.cljs │ │ │ ├── test_test.cljs │ │ │ ├── reducers_test.cljs │ │ │ ├── lite_collections_test.cljs │ │ │ ├── binding_test.cljs │ │ │ ├── iterator_test.cljs │ │ │ ├── ns_test.cljs │ │ │ └── recur_test.cljs │ │ ├── preloads_test │ │ │ ├── core.cljs │ │ │ └── preload.cljs │ │ ├── module_test │ │ │ ├── main.cljs │ │ │ └── modules │ │ │ │ ├── a.cljs │ │ │ │ └── b.cljs │ │ ├── data_readers.cljc │ │ ├── static │ │ │ └── core_test.cljs │ │ ├── foo │ │ │ └── ns_shadow_test.cljs │ │ ├── data_readers_test │ │ │ ├── core.cljc │ │ │ └── records.cljc │ │ ├── reactJS.js │ │ ├── react-min.js │ │ └── clojure │ │ │ ├── edn_test.cljs │ │ │ ├── walk_test.cljs │ │ │ ├── data_test.cljs │ │ │ └── datafy_test.cljs │ ├── cljs_cp │ │ └── npm_deps_test │ │ │ └── string_requires_in_classpath.cljs │ ├── cljs_cli │ │ └── cljs_cli │ │ │ └── test_runner.clj │ ├── externs │ │ └── test.js │ └── self │ │ ├── bootstrap_test │ │ ├── core.cljs │ │ ├── helper.clj │ │ └── macros.clj │ │ └── self_parity │ │ └── setup.clj ├── main │ ├── cljs │ │ ├── cljs │ │ │ ├── nodejs_externs.js │ │ │ ├── imul.js │ │ │ ├── core │ │ │ │ └── specs │ │ │ │ │ └── alpha.cljs │ │ │ ├── externs.js │ │ │ ├── reader.clj │ │ │ ├── js.clj │ │ │ ├── source_map │ │ │ │ └── base64.cljs │ │ │ ├── nodejscli.cljs │ │ │ ├── proxy │ │ │ │ └── impl.cljs │ │ │ ├── analyzer │ │ │ │ ├── passes.cljc │ │ │ │ └── passes │ │ │ │ │ └── lite.cljc │ │ │ ├── nodejs.cljs │ │ │ └── spec │ │ │ │ └── gen │ │ │ │ └── alpha.cljc │ │ ├── process │ │ │ └── env.cljs │ │ └── clojure │ │ │ ├── browser │ │ │ └── repl │ │ │ │ └── preload.cljs │ │ │ ├── core │ │ │ └── protocols.cljs │ │ │ ├── datafy.cljs │ │ │ └── reflect.cljs │ └── clojure │ │ └── cljs │ │ ├── compiler │ │ └── macros.clj │ │ ├── support.cljc │ │ ├── analyzer │ │ ├── utils.clj │ │ ├── impl.cljc │ │ └── macros.clj │ │ ├── source_map │ │ └── base64.clj │ │ ├── env │ │ └── macros.clj │ │ ├── vendor │ │ └── bridge.clj │ │ ├── server │ │ ├── node.clj │ │ └── browser.clj │ │ ├── core │ │ └── macros.clj │ │ └── instant.clj └── assembly │ ├── slim.xml │ └── aot.xml ├── script ├── aot.clj ├── browser_repl.clj ├── repl.clj ├── self-compile ├── test-cli ├── clean ├── repl ├── repl.bat ├── browser-repl ├── noderepljs ├── test-self-host ├── test-compile ├── revision ├── test-self-parity ├── aot_core ├── benchmark ├── compile ├── vendorize_deps ├── test.ps1 └── uberjar ├── resources ├── cljs-logo-icon-32.png ├── self_parity_test.edn ├── self_host_test.edn ├── test.edn └── lite_test.edn ├── ci └── install_jsc.sh ├── devnotes ├── testing ├── bcrepl.org ├── day2.org └── README.org ├── ast-ref └── buildref.sh ├── bin ├── cljsc.bat ├── cljsc └── cljsc.clj ├── .gitignore ├── .github └── workflows │ └── release.yml ├── project.clj └── appveyor.yml /samples/dom/.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | dom.js -------------------------------------------------------------------------------- /samples/hello/.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | hello.js 3 | -------------------------------------------------------------------------------- /samples/repl/.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | main.js 3 | -------------------------------------------------------------------------------- /samples/hello-js/.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | hello*.js 3 | -------------------------------------------------------------------------------- /samples/string-requires-npm-deps/.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | -------------------------------------------------------------------------------- /samples/twitterbuzz/.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | twitterbuzz.js 3 | -------------------------------------------------------------------------------- /src/test/cljs_build/json_modules_test/b.json: -------------------------------------------------------------------------------- 1 | {"foo": 42} 2 | -------------------------------------------------------------------------------- /src/test/node/test.js: -------------------------------------------------------------------------------- 1 | var objectAssign = require("object-assign"); -------------------------------------------------------------------------------- /src/test/clojure/cljs/preamble1.js: -------------------------------------------------------------------------------- 1 | var preamble1 = require("preamble1"); -------------------------------------------------------------------------------- /src/test/clojure/cljs/preamble2.js: -------------------------------------------------------------------------------- 1 | var preamble2 = require("preamble2"); -------------------------------------------------------------------------------- /src/test/cljs_build/analyzer_test/no_defs.cljs: -------------------------------------------------------------------------------- 1 | (ns analyzer-test.no-defs) 2 | -------------------------------------------------------------------------------- /samples/repl/src/repl/foo.cljs: -------------------------------------------------------------------------------- 1 | (ns repl.foo) 2 | 3 | (defn bar [a b] 4 | (+ a b)) -------------------------------------------------------------------------------- /script/aot.clj: -------------------------------------------------------------------------------- 1 | (require '[cljs.closure :as cljsc]) 2 | (cljsc/aot-cache-core) 3 | -------------------------------------------------------------------------------- /src/test/cljs_build/trivial/core5.cljs: -------------------------------------------------------------------------------- 1 | (ns trivial.core5) 2 | 3 | (.log js/console {}) -------------------------------------------------------------------------------- /src/test/cljs/hello.cljs: -------------------------------------------------------------------------------- 1 | (ns hello) 2 | (defn ^:export greet [n] 3 | (str "Hello " n)) 4 | -------------------------------------------------------------------------------- /src/test/cljs_build/trivial/core3.cljs: -------------------------------------------------------------------------------- 1 | (ns trivial.core3) 2 | 3 | (.log js/console :foo) 4 | -------------------------------------------------------------------------------- /src/test/cljs_build/trivial/core4.cljs: -------------------------------------------------------------------------------- 1 | (ns trivial.core4) 2 | 3 | (.log js/console []) 4 | -------------------------------------------------------------------------------- /samples/string-requires-npm-deps/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "string-requires-npm-deps" 3 | } 4 | -------------------------------------------------------------------------------- /src/test/cljs_build/foreign-libs-dir/vendor/lib.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | foo: 'bar', 3 | } 4 | -------------------------------------------------------------------------------- /src/test/cljs_build/trivial/core.cljs: -------------------------------------------------------------------------------- 1 | (ns trivial.core) 2 | 3 | (. js/console (log "Hello!")) 4 | -------------------------------------------------------------------------------- /src/test/cljs_build/json_modules_test/a.js: -------------------------------------------------------------------------------- 1 | // b is a .json module 2 | var theJSON = require('./b'); 3 | -------------------------------------------------------------------------------- /src/test/cljs_build/trivial/core2.cljs: -------------------------------------------------------------------------------- 1 | (ns trivial.core2) 2 | 3 | (.log js/console (-lookup 1 2)) 4 | -------------------------------------------------------------------------------- /samples/hello/src/hello/foo/bar.cljs: -------------------------------------------------------------------------------- 1 | (ns hello.foo.bar) 2 | 3 | (defn sum [xs] 4 | (reduce + 0 xs)) 5 | -------------------------------------------------------------------------------- /src/main/cljs/cljs/nodejs_externs.js: -------------------------------------------------------------------------------- 1 | var global = {}; 2 | function require(){}; 3 | function process(){}; 4 | -------------------------------------------------------------------------------- /src/test/cljs/es6_default_hello.js: -------------------------------------------------------------------------------- 1 | export default function sayHello () { 2 | return "Hello, world!"; 3 | }; 4 | -------------------------------------------------------------------------------- /src/test/cljs/es6_dep.js: -------------------------------------------------------------------------------- 1 | import {default as calc} from './calculator'; 2 | 3 | export var calculator = calc; 4 | -------------------------------------------------------------------------------- /src/test/cljs/es6_hello.js: -------------------------------------------------------------------------------- 1 | export var sayHello = function() { 2 | console.log("Hello, world!"); 3 | }; 4 | -------------------------------------------------------------------------------- /src/test/cljs_build/firebase/core.cljs: -------------------------------------------------------------------------------- 1 | (ns firebase.core 2 | (:require ["firebase/auth" :as auth])) 3 | 4 | -------------------------------------------------------------------------------- /samples/hello-js/externs.js: -------------------------------------------------------------------------------- 1 | var external = {}; 2 | external.lib = {}; 3 | external.lib.send_alert = function() {}; 4 | -------------------------------------------------------------------------------- /src/test/cljs/single_seg_macros.clj: -------------------------------------------------------------------------------- 1 | (ns single-seg-macros) 2 | 3 | (defmacro test-macro [a b] 4 | `(+ ~a ~b)) 5 | -------------------------------------------------------------------------------- /src/test/cljs_build/adv_src_map/core.cljs: -------------------------------------------------------------------------------- 1 | (ns adv-src-map.core) 2 | 3 | (.log js/console "Hello!" (first [1 2 3])) -------------------------------------------------------------------------------- /resources/cljs-logo-icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clojure/clojurescript/HEAD/resources/cljs-logo-icon-32.png -------------------------------------------------------------------------------- /samples/hello-js/my-external-lib.js: -------------------------------------------------------------------------------- 1 | function send_alert(msg) { 2 | alert("Sending Alert via " + msg + "!"); 3 | }; 4 | -------------------------------------------------------------------------------- /src/test/cljs/externs.js: -------------------------------------------------------------------------------- 1 | var nth = function(array, n){}; 2 | var Calculator = { 3 | add: function(a, b) {} 4 | }; 5 | -------------------------------------------------------------------------------- /src/test/cljs_build/loader_test/foreignA.js: -------------------------------------------------------------------------------- 1 | global.foreignA = function() { 2 | console.log("I'm foreign!") 3 | }; 4 | -------------------------------------------------------------------------------- /src/test/cljs_build/loader_test/foreignB.js: -------------------------------------------------------------------------------- 1 | global.foreignB = function() { 2 | console.log("I'm foreign too!"); 3 | }; 4 | -------------------------------------------------------------------------------- /script/browser_repl.clj: -------------------------------------------------------------------------------- 1 | (require '[cljs.repl :as repl]) 2 | (require '[cljs.repl.browser :as browser]) 3 | (repl/repl (browser/repl-env)) -------------------------------------------------------------------------------- /script/repl.clj: -------------------------------------------------------------------------------- 1 | (require '[cljs.repl :as repl]) 2 | (require '[cljs.repl.node :as node]) 3 | (repl/repl (node/repl-env :debug-port 5002)) -------------------------------------------------------------------------------- /src/test/cljs/js_libs/tabby.js: -------------------------------------------------------------------------------- 1 | goog.provide("tabby"); 2 | 3 | tabby.hello = function() { 4 | return "hello there from tabby"; 5 | }; 6 | -------------------------------------------------------------------------------- /src/test/cljs_build/code-split/src/code/split/d.cljs: -------------------------------------------------------------------------------- 1 | (ns code.split.d) 2 | 3 | (defn hello [] 4 | (println "Hello from code.split.d.")) 5 | -------------------------------------------------------------------------------- /src/test/cljs_build/libs_test/core.cljs: -------------------------------------------------------------------------------- 1 | (ns libs-test.core 2 | (:require [tabby])) 3 | 4 | (enable-console-print!) 5 | 6 | (println (tabby/hello)) 7 | -------------------------------------------------------------------------------- /src/test/cljs/deps.cljs: -------------------------------------------------------------------------------- 1 | {:externs ["externs.js"] 2 | :foreign-libs [{:file "calculator_global.js" 3 | :provides ["thirdparty.calculator"]}]} 4 | -------------------------------------------------------------------------------- /src/test/cljs_build/cljs_3284/bean.cljs: -------------------------------------------------------------------------------- 1 | (ns cljs-3284.bean) 2 | 3 | (deftype ^:private SomeType [a]) 4 | 5 | (defn some-type 6 | [a] 7 | (SomeType. a)) 8 | -------------------------------------------------------------------------------- /src/test/cljs_build/foreign_libs_cljs_2334/lib.js: -------------------------------------------------------------------------------- 1 | import leftPad from 'left-pad'; 2 | 3 | export var lp = function() { 4 | return leftPad(42, 5, 0); 5 | } 6 | -------------------------------------------------------------------------------- /samples/hello-js/externed-lib.js: -------------------------------------------------------------------------------- 1 | external = {}; 2 | 3 | external.lib = { 4 | send_alert : function (msg) { 5 | alert("Sending Alert via " + msg + "!"); 6 | } 7 | }; 8 | -------------------------------------------------------------------------------- /src/test/cljs_build/cljs_3311_regress/tests.cljs: -------------------------------------------------------------------------------- 1 | (ns cljs-3311-regress.tests 2 | (:require [cljs.test :refer [deftest is]])) 3 | 4 | (deftest some-test 5 | (is (= 1 1))) 6 | -------------------------------------------------------------------------------- /src/test/cljs_build/npm_deps_test/core.cljs: -------------------------------------------------------------------------------- 1 | (ns npm-deps-test.core 2 | (:require left-pad)) 3 | 4 | (enable-console-print!) 5 | 6 | (println "Padded:" (left-pad 42 5 0)) 7 | -------------------------------------------------------------------------------- /src/test/cljs_build/foreign_libs_cljs_2334/core.cljs: -------------------------------------------------------------------------------- 1 | (ns foreign-libs-cljs-2334.core 2 | (:require [mylib])) 3 | 4 | (enable-console-print!) 5 | 6 | (println "mylib:" mylib) 7 | -------------------------------------------------------------------------------- /src/test/cljs_build/trivial/core6.cljs: -------------------------------------------------------------------------------- 1 | (ns trivial.core6) 2 | 3 | (.log js/console (->> (map inc (range 10)) (filter even?) (partition 2) (drop 1) (mapcat identity) into-array)) 4 | -------------------------------------------------------------------------------- /script/self-compile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | rm -rf classes 4 | mkdir classes 5 | ./script/repl -e "(compile 'cljs.repl.node) (compile 'cljs.repl.browser) (compile 'cljs.core)" 6 | -------------------------------------------------------------------------------- /src/test/cljs_build/node_modules_opt_test/core.cljs: -------------------------------------------------------------------------------- 1 | (ns node-modules-opt-test.core 2 | (:require left-pad)) 3 | 4 | (enable-console-print!) 5 | 6 | (println "Padded:" (left-pad 42 5 0)) 7 | -------------------------------------------------------------------------------- /src/test/cljs/calculator_global.js: -------------------------------------------------------------------------------- 1 | Calculator = { 2 | add: function (a, b) { 3 | return a + b; 4 | }, 5 | subtract: function (a, b) { 6 | return a - b; 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/test/cljs_build/cljs_3235/foreign.js: -------------------------------------------------------------------------------- 1 | window.globalLib = { 2 | woz: function() { 3 | 4 | }, 5 | foz: { 6 | boz: function() { 7 | 8 | } 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /src/test/cljs_build/cljs_3346_as_alias/core.cljs: -------------------------------------------------------------------------------- 1 | (ns cljs-3346-as-alias.core 2 | (:require [clojure.set :as-alias set] 3 | [made.up.lib :as-alias lib])) 4 | 5 | (println ::set/foo ::lib/bar) 6 | -------------------------------------------------------------------------------- /src/test/cljs_build/cljs_3284/core.cljs: -------------------------------------------------------------------------------- 1 | (ns cljs-3284.core 2 | (:require 3 | cljs-3284.bean)) 4 | 5 | (defn maybe-bean 6 | [x] 7 | (if (object? x) 8 | (cljs-3284.bean/some-type x) 9 | x)) 10 | -------------------------------------------------------------------------------- /src/test/cljs_build/cljs_3311_regress/core.cljs: -------------------------------------------------------------------------------- 1 | (ns cljs-3311-regress.core 2 | (:require [cljs.test :refer-macros [run-tests]] 3 | [cljs-3311-regress.tests])) 4 | 5 | (run-tests 'cljs-3311-regress.tests) 6 | -------------------------------------------------------------------------------- /samples/hello-js/src/hello-js/extern-example.cljs: -------------------------------------------------------------------------------- 1 | (ns hello.extern-example) 2 | 3 | (defn ^:export foo [] 42) 4 | 5 | (external.lib/send_alert "ClojureScript calling a function defined in an externed JavaScript library") 6 | -------------------------------------------------------------------------------- /script/test-cli: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ ! -f target/cljs.jar ]; then 4 | echo "Run script/uberjar first" 5 | exit 1 6 | fi 7 | 8 | java -cp target/cljs.jar:src/test/cljs_cli clojure.main -m cljs-cli.test-runner "$@" 9 | -------------------------------------------------------------------------------- /src/test/cljs_build/loader_test/bar.cljs: -------------------------------------------------------------------------------- 1 | (ns loader-test.bar 2 | (:require [cljs.loader :as loader])) 3 | 4 | (enable-console-print!) 5 | 6 | (println "Hello from bar!") 7 | 8 | (defn woz [] 9 | (println "Woz!")) 10 | -------------------------------------------------------------------------------- /ci/install_jsc.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | if [ ! -d WebKit ] 3 | then 4 | git clone -b Safari-611.1.5.1 --depth=1 https://github.com/WebKit/WebKit.git WebKit; 5 | cd WebKit; 6 | Tools/Scripts/build-jsc --jsc-only; 7 | cd .. 8 | fi 9 | -------------------------------------------------------------------------------- /script/clean: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | rm -rf closure 4 | rm -rf compilation 5 | rm -rf lib 6 | rm -rf target 7 | rm -rf builds 8 | rm -rf clojure 9 | rm -rf out 10 | rm -rf node_modules 11 | rm -rf package.json 12 | rm -rf package-lock.json 13 | -------------------------------------------------------------------------------- /src/test/cljs/calculator.js: -------------------------------------------------------------------------------- 1 | var calculator = { 2 | add: function (a, b) { 3 | return a + b; 4 | }, 5 | subtract: function (a, b) { 6 | return a - b; 7 | } 8 | }; 9 | 10 | module.exports = calculator; 11 | -------------------------------------------------------------------------------- /src/test/cljs_build/emit_node_requires_test/native_modules.cljs: -------------------------------------------------------------------------------- 1 | (ns emit-node-requires-test.native-modules 2 | (:require [path :refer [isAbsolute]])) 3 | 4 | (enable-console-print!) 5 | 6 | (println (isAbsolute (path/resolve js/__filename))) 7 | -------------------------------------------------------------------------------- /src/test/cljs_build/cljs_3452_str_optimizations/core.cljs: -------------------------------------------------------------------------------- 1 | (ns cljs-3452-str-optimizations.core) 2 | 3 | (defn my-str-fn [x y] 4 | (str x y nil ::foobar "my 5 | 6 | multiline 7 | 8 | string with `backticks`" 9 | true false 3.14)) 10 | -------------------------------------------------------------------------------- /src/test/cljs_build/hello-modules/src/bar/core.cljs: -------------------------------------------------------------------------------- 1 | (ns bar.core 2 | (:require [cljs.loader :as loader])) 3 | 4 | (enable-console-print!) 5 | 6 | (println "I'm bar!") 7 | 8 | (defn woz [] 9 | (println "WOZ!")) 10 | 11 | (loader/set-loaded! :bar) 12 | -------------------------------------------------------------------------------- /resources/self_parity_test.edn: -------------------------------------------------------------------------------- 1 | {:optimizations :none 2 | :main self-parity.test 3 | :language-out :es6 4 | :verbose true 5 | :output-to "builds/out-self-parity/main.js" 6 | :output-dir "builds/out-self-parity" 7 | :cache-analysis-format :edn 8 | :target :nodejs} 9 | -------------------------------------------------------------------------------- /src/test/cljs_build/code-split/src/code/split/b.cljs: -------------------------------------------------------------------------------- 1 | (ns code.split.b 2 | (:require [cljs.loader :as loader] 3 | [code.split.d :as d])) 4 | 5 | (defn hello [] 6 | (println "Hello from code.split.b.") 7 | (d/hello)) 8 | 9 | (loader/set-loaded! :b) 10 | -------------------------------------------------------------------------------- /src/test/cljs_build/hello-modules/index.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /samples/repl/repl.clj: -------------------------------------------------------------------------------- 1 | (require '[cljs.closure :as cljsc]) 2 | (require '[cljs.repl :as repl]) 3 | (require '[cljs.repl.browser :as brepl]) 4 | 5 | (cljsc/build "src" 6 | {:output-to "main.js" 7 | :verbose true}) 8 | 9 | (repl/repl (brepl/repl-env) 10 | :repl-verbose true) -------------------------------------------------------------------------------- /src/test/cljs_build/package_json_resolution_test/core.cljs: -------------------------------------------------------------------------------- 1 | (ns package-json-resolution-test.core 2 | (:require [iterall] 3 | [graphql])) 4 | 5 | (enable-console-print!) 6 | 7 | (println "Is collection:" (iterall/isCollection #js [1 2])) 8 | (println "GraphQL:" graphql) 9 | -------------------------------------------------------------------------------- /src/test/cljs_build/code-split/src/code/split/c.cljs: -------------------------------------------------------------------------------- 1 | (ns code.split.c 2 | (:require [cljs.loader :as loader] 3 | [code.split.d :as d])) 4 | 5 | (enable-console-print!) 6 | 7 | (defn hello [] 8 | (println "Hello from code.split.c.") 9 | (d/hello)) 10 | 11 | (loader/set-loaded! :c) 12 | -------------------------------------------------------------------------------- /resources/self_host_test.edn: -------------------------------------------------------------------------------- 1 | {:optimizations :simple 2 | :main self-host.test 3 | :static-fns true 4 | :output-to "builds/out-self/core-self-test.js" 5 | :output-dir "builds/out-self" 6 | :optimize-constants true 7 | :verbose true 8 | :compiler-stats true 9 | :parallel-build true 10 | :target :nodejs} -------------------------------------------------------------------------------- /samples/hello-js/src/hello-js/core.cljs: -------------------------------------------------------------------------------- 1 | (ns hello-js.core) 2 | 3 | (defn ^:export popup-msg 4 | [msg] 5 | (js/send_alert msg)) 6 | 7 | (popup-msg "ClojureScript calling a global function defined in an external JavaScript library") 8 | 9 | (popup-msg (str "ClojureScript: the time is now " (js/Date.))) 10 | -------------------------------------------------------------------------------- /devnotes/testing: -------------------------------------------------------------------------------- 1 | Definitely a work-in-progress. 2 | 3 | To run tests before you commit: 4 | 5 | script/test 6 | 7 | To add tests: 8 | 9 | * Create test fiels in the test/cljs directory. 10 | * Write fns that throw an exception on failure. 11 | * Call those fns from test/cljs/cljs/test_runner.cljs 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/test/cljs_cp/npm_deps_test/string_requires_in_classpath.cljs: -------------------------------------------------------------------------------- 1 | (ns npm-deps-test.string-requires-in-classpath 2 | "This tests string require of a lib that is not loaded 3 | by project local files from a classpath file." 4 | (:require ["lodash/array" :as array])) 5 | 6 | (println "lodash/array is loaded:" (array/nth #js [true] 1)) 7 | -------------------------------------------------------------------------------- /src/test/cljs_build/npm_deps_test/invoke.cljs: -------------------------------------------------------------------------------- 1 | (ns npm-deps-test.invoke 2 | (:require [react :refer [createElement]] 3 | ["react-dom/server" :as ReactDOMServer] 4 | ["lodash-es/array" :as array])) 5 | 6 | (createElement "div") 7 | 8 | (ReactDOMServer/renderToString nil) 9 | 10 | (array/findIndex #js [1 2] 2) 11 | -------------------------------------------------------------------------------- /script/repl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ "$CLOJURESCRIPT_HOME" = "" ]; then 4 | CLOJURESCRIPT_HOME="`dirname $0`/.." 5 | fi 6 | 7 | CLJSC_CP='' 8 | for next in classes: lib/*: src/main/clojure: src/main/cljs: test/cljs; do 9 | CLJSC_CP="${CLJSC_CP}${CLOJURESCRIPT_HOME}/${next}" 10 | done 11 | 12 | java -server -cp "$CLJSC_CP" clojure.main "$@" 13 | 14 | -------------------------------------------------------------------------------- /src/test/cljs_build/cljs_3235/core.cljs: -------------------------------------------------------------------------------- 1 | (ns cljs-3235.core 2 | (:require [some-foreign :refer [woz]] 3 | [some-foreign$woz :as sf-woz] 4 | [some-foreign$foz.boz :as sf-foz-boz] 5 | [react-select :refer [foo bar]] 6 | [react-select$default :as select] 7 | [react-select$default.baz :as select-baz])) 8 | -------------------------------------------------------------------------------- /src/test/cljs_build/code-split/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |