# SPDX-License-Identifier: CC0-1.0 language = 'Clojure' display = 'Clojure (ClojureScript 1.12.42 (Clojure 1.12.2 Node.js 22.19.0))' license = [ { name = 'EPL-1.0', url = 'https://github.com/clojure/clojure/blob/master/readme.txt' }, { name = 'BSD-3-Clause', url = 'https://github.com/clojure/clojure/blob/master/readme.txt' }, { name = 'Apache-2.0', url = 'https://github.com/clojure/clojure/blob/master/readme.txt' }, { name = 'EPL-1.0', url = 'https://clojurescript.org/community/license' }, { name = '!License-31', url = 'https://github.com/nodejs/node/blob/main/LICENSE' }, ] library.ac-library-js = { license = [ { name = 'CC0-1.0', url = 'https://www.npmjs.com/package/ac-library-js' }, ], version = '0.1.1' } library.data-structure-typed = { license = [ { name = 'MIT', url = 'https://www.npmjs.com/package/data-structure-typed' }, ], version = '2.0.4' } filename = 'main/src/main/core.cljs' install = ''' sudo apt-get update sudo apt-get install -y leiningen NODE_VERSION=22.19.0 wget -q -O /tmp/node.tar.xz https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz sudo tar -C /usr/local --strip-components=1 -xf /tmp/node.tar.xz --wildcards '*/bin' '*/share' '*/lib' '*/include' # Node.js cannot find libraries in /usr/local/lib/node_modules export NODE_PATH=/usr/local/lib/node_modules lein new figwheel-node main pushd main npm install \ ac-library-js@0.1.1 \ data-structure-typed@2.0.4 \ source-map-support sed -i \ 's@org\.clojure/clojure ".*"@org.clojure/clojure "1.12.2"@; s@org\.clojure/clojurescript ".*"@org.clojure/clojurescript "1.12.42"@; s@:target :nodejs@:target :nodejs\n :source-map "server.js.map"\n :npm-deps {:data-structure-typed "*" :ac-library-js "*"}@g' \ project.clj cat << 'EOF' > src/main/core.cljs (ns main.core (:require ["ac-library-js" :refer [DSU]] ["data-structure-typed" :refer [RedBlackTree]])) (let [tree (RedBlackTree.) dsu (DSU. 10)] (.merge dsu 1 2) (.merge dsu 1 3) (js/console.log "same(1, 3): " (.same dsu 1 3)) (js/console.log "same(1, 4): " (.same dsu 1 4)) (js/console.log "RedBlackTree: " tree)) EOF lein cljsbuild once prod popd cat << 'EOF' > node.sh #!/bin/sh export NODE_PATH=/usr/local/lib/node_modules cd main if [ "$1" -gt 1048576 ]; then stack_size=1048576 else stack_size="$1" fi filename="$2" node \ -r source-map-support/register \ --stack-size="$stack_size" \ "$filename" \ EOF sh node.sh 2097152 server.js rm main/server.js ''' compile = ''' export NODE_PATH=/usr/local/lib/node_modules cd main lein cljsbuild once prod 2>&1 1>/dev/null | grep main/core 1>&2 ''' object = 'main/server.js' execution = [ 'sh', 'node.sh', '{memory:kb}', 'server.js', ]