From 8906a59ab1dcad33eb2c441cd6f9848b01374590 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Wed, 26 May 2021 12:18:48 +0200 Subject: [PATCH] Upgrade shadow --- README.md | 12 +++- bb.edn | 14 +++-- deps.edn | 2 +- package-lock.json | 119 +++++++++++++++++++++++++++++++++++++ package.json | 6 ++ resources/public/base.html | 42 +++++++++++++ shadow-cljs.edn | 1 + 7 files changed, 189 insertions(+), 7 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 resources/public/base.html diff --git a/README.md b/README.md index ee53d34..8b4f374 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,18 @@ The [Small Clojure Interpreter](https://github.com/borkdude/sci) exposed for usa See [Github pages](https://borkdude.github.io/sci-script-tag) for usage. -## Dev +## Tasks + +Run `bb tasks` to see all available tasks: ``` -$ clojure -M:dev -m shadow.cljs.devtools.cli watch main +$ bb tasks +The following tasks are available: + +clean Start from clean slate. +build:dev Development build. Starts webserver and watches for changes. +build:release Builds release artifacts. +release Updates Github pages with new release build. ``` ## Credits diff --git a/bb.edn b/bb.edn index 4860867..7b973ea 100644 --- a/bb.edn +++ b/bb.edn @@ -1,4 +1,10 @@ -{:tasks {:requires ([babashka.fs :as fs]) - clean (run! fs/delete (fs/list-dir (fs/file "resources" "public" "js") "**.*")) - dev (clojure "-M:dev -m shadow.cljs.devtools.cli watch main") - release (clojure "-M:dev -m shadow.cljs.devtools.cli release main")}} +{:tasks + {:requires ([babashka.fs :as fs]) + clean {:doc "Start from clean slate." + :task (run! fs/delete (fs/list-dir (fs/file "resources" "public" "js") "**.*"))} + build:dev {:doc "Development build. Starts webserver and watches for changes." + :task (clojure "-M:dev -m shadow.cljs.devtools.cli watch main")} + build:release {:doc "Builds release artifacts." + :task (clojure "-M:dev -m shadow.cljs.devtools.cli release main")} + release {:doc "Updates Github pages with new release build." + :task (shell "script/release.clj")}}} diff --git a/deps.edn b/deps.edn index 890d7fb..fc8de33 100644 --- a/deps.edn +++ b/deps.edn @@ -12,4 +12,4 @@ :aliases {:dev {:extra-paths ["dev"] - :extra-deps {thheller/shadow-cljs {:mvn/version "2.12.5"}}}}} + :extra-deps {thheller/shadow-cljs {:mvn/version "2.14.0"}}}}} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c4c5d52 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,119 @@ +{ + "name": "sci-script-tag", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "react": "17.0.1", + "react-dom": "17.0.1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", + "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", + "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.1" + }, + "peerDependencies": { + "react": "17.0.1" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "react": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", + "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-dom": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", + "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.1" + } + }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4b98f1c --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "react": "17.0.1", + "react-dom": "17.0.1" + } +} diff --git a/resources/public/base.html b/resources/public/base.html new file mode 100644 index 0000000..78d2940 --- /dev/null +++ b/resources/public/base.html @@ -0,0 +1,42 @@ + + + + + + + + +

SCI script tag

+ +
+      
+<head>
+  <script src="https://borkdude.github.io/sci-script-tag/js/sci-script-tag.js" type="application/javascript"></script>
+
+  <script type="application/x-sci">
+    (defn my-alert []
+      (js/alert "You clicked!"))
+
+    ;; export function to use from JavaScript:
+    (set! (.-my_alert js/window) my-alert)
+  </script>
+
+</head>
+
+<body>
+  <button onclick="my_alert()">
+    Click me!
+  </button>
+</body>
+ + + + + diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 1b0ac2f..aeff75b 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -16,5 +16,6 @@ {:sci-script-tag {:entries [sci.script-tag]} :sci-script-tag-plugin-reagent {:entries [sci.script-tag.plugin-reagent] :depends-on #{:sci-script-tag}}} + :build-hooks [(shadow.cljs.build-report/hook)] :output-dir "resources/public/js" :devtools {:repl-pprint true}}}}