File tree Expand file tree Collapse file tree 3 files changed +33
-8
lines changed
src/net/coruscation/js4clj Expand file tree Collapse file tree 3 files changed +33
-8
lines changed Original file line number Diff line number Diff line change 44 [org.graalvm.polyglot Context])
55 (:require [clojure.java.io :as io]))
66
7- (defonce ^{:dynamic true :private true } *cjs-cwd*
8- (str (System/getProperty " user.dir" )
9- " /node_modules" ))
7+ (def ^{:dynamic true } *js-cwd*
8+ " cwd of the javascript environment when doing `require` or `import`.
9+ In most cases it is the directory contains `node_modules`
10+
11+ Default: cwd of the Clojure process"
12+ (System/getProperty " user.dir" ))
1013
1114(defn default-builder
1215 " Return a `org.graalvm.polyglot.Context$Builder` object with necessary options set for js4clj to function properly.
2124
2225 "
2326 []
24- (let [cwd-dir (io/file *cjs -cwd*)]
27+ (let [cwd-dir (io/file *js -cwd*)]
2528 (when (not (.exists cwd-dir))
2629 (.mkdirs cwd-dir)))
2730 (-> (Context/newBuilder (into-array String [" js" ]))
2831 (.allowExperimentalOptions true )
2932 (.options (HashMap.
30- {" js.esm-eval-returns-exports" " true"
31- " js.commonjs-require" " true"
32- " js.commonjs-require-cwd" *cjs-cwd*}))
33+ (merge {" js.esm-eval-returns-exports" " true" }
34+ (if *js-cwd*
35+ {" js.commonjs-require" " true"
36+ " js.commonjs-require-cwd" *js-cwd*}
37+ {}))))
3338 (.allowIO true )))
3439
3540(def ^:dynamic *context-per-thread*
Original file line number Diff line number Diff line change 33 [clojure.test :refer [deftest is use-fixtures]]
44 [net.coruscation.js4clj.context :as subject]
55 [net.coruscation.js4clj.js :as js]
6+ [net.coruscation.js4clj.require :as require ]
67 [net.coruscation.js4clj.test-utils :refer [fresh-context]]
78 [net.coruscation.js4clj.utils :refer [js-set! js.-]]))
89
10+ (use-fixtures :each #'fresh-context)
11+
12+ (def test-js-cwd " test/resources/js-cwd" )
13+
914(deftest *context-per-thread*-test
1015 (binding [subject/*context-per-thread* true ]
1116 (.eval @subject/*context*
4550 (is (nil? (js.- js/globalThis
4651 demo))))
4752
48- (use-fixtures :each #'fresh-context)
53+ (deftest *js-cwd*-test
54+ (binding [subject/*js-cwd* test-js-cwd]
55+ (subject/reinitialize-context! )
56+ (is (= " index.js" (js.- (require/load-es-module " sample-package" )
57+ name)))))
Original file line number Diff line number Diff line change 1+ {
2+ "name" : " js-cwd" ,
3+ "version" : " 1.0.0" ,
4+ "description" : " " ,
5+ "main" : " index.js" ,
6+ "scripts" : {
7+ "test" : " echo \" Error: no test specified\" && exit 1"
8+ },
9+ "author" : " " ,
10+ "license" : " ISC"
11+ }
You can’t perform that action at this time.
0 commit comments