From 53322d838956e256a219e6f8fb0f6ed37f8d2942 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Tue, 6 Sep 2016 17:17:55 -0700 Subject: [PATCH 01/16] Pre: @arg -> @param to quiet cljsbuild warnings. --- src/datomish/query/clauses.cljc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/datomish/query/clauses.cljc b/src/datomish/query/clauses.cljc index 5052b3d0..eb27596d 100644 --- a/src/datomish/query/clauses.cljc +++ b/src/datomish/query/clauses.cljc @@ -126,8 +126,8 @@ "Transform a DataScript Pattern instance into the parts needed to build a SQL expression. - @arg cc A CC instance. - @arg pattern The pattern instance. + @param cc A CC instance. + @param pattern The pattern instance. @return an augmented CC" [cc pattern] (when-not (instance? Pattern pattern) From 687fddf709eb9cf7fcf6d699f765350d120ba0a4 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Wed, 7 Sep 2016 16:59:16 -0700 Subject: [PATCH 02/16] Pre: .gitignore. --- .gitignore | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 92502870..c4e033ac 100644 --- a/.gitignore +++ b/.gitignore @@ -22,5 +22,9 @@ pom.xml pom.xml.asc /.cljs_node_repl/ /.cljs_rhino_repl/ -/release-js/datomish.js -/release-js/datomish.bare.js +/release-browser +/release-browser/datomish.js +/release-browser/datomish.bare.js +/release-node +/release-node/datomish.js +/release-node/datomish.bare.js From fb8d46a4d7ee2333072cc041bcf4a006f4fc39b0 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Wed, 7 Sep 2016 17:03:03 -0700 Subject: [PATCH 03/16] Pre: bump to the latest ClojureScript release. --- project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.clj b/project.clj index c68cd5b2..01b38be9 100644 --- a/project.clj +++ b/project.clj @@ -3,7 +3,7 @@ :url "https://github.com/mozilla/datomish" :license {:name "Mozilla Public License Version 2.0" :url "https://github.com/mozilla/datomish/blob/master/LICENSE"} - :dependencies [[org.clojure/clojurescript "1.9.89"] + :dependencies [[org.clojure/clojurescript "1.9.229"] [org.clojure/clojure "1.8.0"] [org.clojure/core.async "0.2.385"] [datascript "0.15.1"] From 9dbda3d9d8ddbc358be60de197c6838d2909ebb7 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Wed, 7 Sep 2016 17:06:50 -0700 Subject: [PATCH 04/16] Pre: remove exec_repl.cljc. --- src/datomish/exec_repl.cljc | 111 ------------------------------------ 1 file changed, 111 deletions(-) delete mode 100644 src/datomish/exec_repl.cljc diff --git a/src/datomish/exec_repl.cljc b/src/datomish/exec_repl.cljc deleted file mode 100644 index 66f2bfcc..00000000 --- a/src/datomish/exec_repl.cljc +++ /dev/null @@ -1,111 +0,0 @@ -;; This Source Code Form is subject to the terms of the Mozilla Public -;; License, v. 2.0. If a copy of the MPL was not distributed with this -;; file, You can obtain one at http://mozilla.org/MPL/2.0/. - -(ns datomish.exec-repl - #?(:cljs - (:require-macros - [datomish.util :refer [while-let]] - [datomish.pair-chan :refer [go-pair lazy-seq - "Returns a blocking lazy sequence of items taken from the provided channel." - [channel] - (lazy-seq - (when-let [v (clojure.core.async/lazy-seq channel))))))) - -#?(:clj -(defn run-to-pair-seq - "Given an open database, returns a lazy sequence of results. - When fully consumed, underlying resources will be released." - [db find] - (pair-channel->lazy-seq (db/ ?v 1438748166567751)] [?page :page/title ?title] [?page :page/url ?url] ] {}))))))) - - -#_ -(go-pair - (let [connection ( ?v 1000)]] {})))))) - -(dq/parse '[:find ?entity ?tx ?score - :in $ ?search - :where [(foobar $ :artist/name ?search) [[?entity _ ?tx ?score]]]]) - -(honeysql.core/format {:select [:?foo] :from [:foo] :where [:match :foo.x "Bar"]}) From e76d7305d1067afe095d755eff982c7dc55dc202 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Wed, 7 Sep 2016 17:00:47 -0700 Subject: [PATCH 05/16] Split release-js into release-node and release-browser. Also expand our clean targets, and rewrite our build targets to generate different code for Node and Firefox. --- project.clj | 138 +++++++++++++----- {release-js => release-browser}/README.md | 0 .../test_include_node.js | 0 release-browser/wrap_bare.sh | 7 + .../wrapper.prefix | 0 .../wrapper.suffix | 0 release-js/wrap_bare.sh | 7 - release-node/README.md | 5 + release-node/test_include_node.js | 2 + release-node/wrap_bare.sh | 7 + release-node/wrapper.prefix | 29 ++++ release-node/wrapper.suffix | 6 + 12 files changed, 160 insertions(+), 41 deletions(-) rename {release-js => release-browser}/README.md (100%) rename {release-js => release-browser}/test_include_node.js (100%) create mode 100755 release-browser/wrap_bare.sh rename {release-js => release-browser}/wrapper.prefix (100%) rename {release-js => release-browser}/wrapper.suffix (100%) delete mode 100755 release-js/wrap_bare.sh create mode 100644 release-node/README.md create mode 100644 release-node/test_include_node.js create mode 100755 release-node/wrap_bare.sh create mode 100644 release-node/wrapper.prefix create mode 100644 release-node/wrapper.suffix diff --git a/project.clj b/project.clj index 01b38be9..54761b86 100644 --- a/project.clj +++ b/project.clj @@ -11,37 +11,88 @@ [com.taoensso/tufte "1.0.2"] [jamesmacaulay/cljs-promises "0.1.0"]] - :cljsbuild {:builds {:release { - :source-paths ["src"] - :assert false - :compiler {:output-to "release-js/datomish.bare.js" - :optimizations :advanced - :pretty-print false - :elide-asserts true - :output-wrapper false - :parallel-build true} - :notify-command ["release-js/wrap_bare.sh"]} - :advanced {:source-paths ["src"] - :compiler {:output-to "target/advanced/datomish.js" - :optimizations :advanced - :source-map "target/advanced/datomish.js.map" - :pretty-print true - :recompile-dependents true - :parallel-build true - }} - :test { - :source-paths ["src" "test"] - :compiler {:output-to "target/test/datomish.js" - :output-dir "target/test" - :main datomish.test - :optimizations :none - :source-map true - :recompile-dependents true - :parallel-build true - :target :nodejs - }} - } - } + :cljsbuild {:builds + { + :release-node + { + :source-paths ["src-node" "src"] + :assert false + :compiler + { + :elide-asserts true + :hashbang false + :language-in :ecmascript5 + :language-out :ecmascript5 + :optimizations :advanced + :output-dir "release-node" + :output-to "release-node/datomish.bare.js" + :output-wrapper false + :parallel-build true + :pretty-print false + :target :nodejs + } + :notify-command ["release-node/wrap_bare.sh"]} + + :release-browser + ;; Release builds for use in Firefox must: + ;; * Use :optimizations > :none, so that a single file is generated + ;; without a need to import Closure's own libs. + ;; * Be wrapped, so that a CommonJS module is produced. + ;; * Have a preload script that defines what `println` does. + ;; + ;; There's no point in generating a source map -- it'll be wrong + ;; due to wrapping. + { + :source-paths ["src-browser" "src"] + :assert false + :compiler + { + :elide-asserts true + :language-in :ecmascript5 + :language-out :ecmascript5 + :optimizations :advanced + :output-dir "release-browser" + :output-to "release-browser/datomish.bare.js" + :output-wrapper false + :parallel-build true + :preloads [datomish.preload] + :pretty-print true + :pseudo-names true + :static-fns true + } + :notify-command ["release-browser/wrap_bare.sh"]} + + :advanced + {:source-paths ["src-node" "src"] + :compiler + { + :language-in :ecmascript5 + :language-out :ecmascript5 + :output-dir "target/advanced" + :output-to "target/advanced/datomish.js" + :optimizations :advanced + :parallel-build true + :pretty-print true + :source-map "target/advanced/datomish.js.map" + :target :nodejs + }} + + :test + { + :source-paths ["src-node" "src" "test"] + :compiler + { + :language-in :ecmascript5 + :language-out :ecmascript5 + :main datomish.test + :optimizations :none + :output-dir "target/test" + :output-to "target/test/datomish.js" + :parallel-build true + :source-map true + :target :nodejs + }} + }} :profiles {:dev {:dependencies [[cljsbuild "1.1.3"] [tempfile "0.2.0"] @@ -59,7 +110,26 @@ :doo {:build "test"} - :clean-targets ^{:protect false} ["target" - "release-js/datomish.bare.js" - "release-js/datomish.js"] + :clean-targets ^{:protect false} + [ + "target" + "release-node/cljs/" + "release-node/cljs_promises/" + "release-node/clojure/" + "release-node/datascript/" + "release-node/datomish/" + "release-node/honeysql/" + "release-node/taoensso/" + "release-node/datomish.bare.js" + "release-node/datomish.js" + "release-browser/cljs/" + "release-browser/cljs_promises/" + "release-browser/clojure/" + "release-browser/datascript/" + "release-browser/datomish/" + "release-browser/honeysql/" + "release-browser/taoensso/" + "release-browser/datomish.bare.js" + "release-browser/datomish.js" + ] ) diff --git a/release-js/README.md b/release-browser/README.md similarity index 100% rename from release-js/README.md rename to release-browser/README.md diff --git a/release-js/test_include_node.js b/release-browser/test_include_node.js similarity index 100% rename from release-js/test_include_node.js rename to release-browser/test_include_node.js diff --git a/release-browser/wrap_bare.sh b/release-browser/wrap_bare.sh new file mode 100755 index 00000000..6d5ae26a --- /dev/null +++ b/release-browser/wrap_bare.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +(cat release-browser/wrapper.prefix; cat release-browser/datomish.bare.js; cat release-browser/wrapper.suffix) > release-browser/datomish.js + +echo "Packed release-browser/datomish.js" diff --git a/release-js/wrapper.prefix b/release-browser/wrapper.prefix similarity index 100% rename from release-js/wrapper.prefix rename to release-browser/wrapper.prefix diff --git a/release-js/wrapper.suffix b/release-browser/wrapper.suffix similarity index 100% rename from release-js/wrapper.suffix rename to release-browser/wrapper.suffix diff --git a/release-js/wrap_bare.sh b/release-js/wrap_bare.sh deleted file mode 100755 index 0256ad22..00000000 --- a/release-js/wrap_bare.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -set -e - -(cat release-js/wrapper.prefix; cat release-js/datomish.bare.js; cat release-js/wrapper.suffix) > release-js/datomish.js - -echo "Packed release-js/datomish.js" diff --git a/release-node/README.md b/release-node/README.md new file mode 100644 index 00000000..f31204bf --- /dev/null +++ b/release-node/README.md @@ -0,0 +1,5 @@ +# Datomish + +Datomish is a persistent, embedded knowledge base. It's written in ClojureScript, and draws heavily on [DataScript](https://github.com/tonsky/datascript) and [Datomic](http://datomic.com). + +For more info, check out the [project page](https://github.com/mozila/datomish). diff --git a/release-node/test_include_node.js b/release-node/test_include_node.js new file mode 100644 index 00000000..683261cd --- /dev/null +++ b/release-node/test_include_node.js @@ -0,0 +1,2 @@ +var d = require('./datomish'); +console.log(d.q("[:find ?e ?v :where [?e \"name\" ?v] {:x :y}]")); diff --git a/release-node/wrap_bare.sh b/release-node/wrap_bare.sh new file mode 100755 index 00000000..13707e8f --- /dev/null +++ b/release-node/wrap_bare.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +(cat release-node/wrapper.prefix && cat release-node/datomish.bare.js && cat release-node/wrapper.suffix) > release-node/datomish.js + +echo "Packed release-node/datomish.js" diff --git a/release-node/wrapper.prefix b/release-node/wrapper.prefix new file mode 100644 index 00000000..d852baf1 --- /dev/null +++ b/release-node/wrapper.prefix @@ -0,0 +1,29 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// Datomish 0.1.0-SNAPSHOT + +(function (definition) { + // This file will function properly as a