diff --git a/.gitignore b/.gitignore index 92502870..76f17ade 100644 --- a/.gitignore +++ b/.gitignore @@ -22,5 +22,11 @@ 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 +/addon/datomish-test.xpi +/addon/datomish.js diff --git a/addon/README.md b/addon/README.md new file mode 100644 index 00000000..85643d4f --- /dev/null +++ b/addon/README.md @@ -0,0 +1,2 @@ +#Datomish Test +An example add-on that loads Datomish on top of Sqlite.jsm. \ No newline at end of file diff --git a/addon/index.js b/addon/index.js new file mode 100644 index 00000000..765cb243 --- /dev/null +++ b/addon/index.js @@ -0,0 +1,15 @@ +var self = require("sdk/self"); + +console.log("Datomish Test"); +console.log("This: " + this); + +var datomish = require("datomish.js"); +datomish.open("/tmp/foobar.db").then(function (db) { + console.log("Got " + db); + try { + db.close(); + console.log("Closed."); + } catch (e) { + console.log("Couldn't close: " + e); + } +}); diff --git a/addon/package.json b/addon/package.json new file mode 100644 index 00000000..6a190546 --- /dev/null +++ b/addon/package.json @@ -0,0 +1,15 @@ +{ + "title": "Datomish Test", + "name": "datomish-test", + "version": "0.0.1", + "description": "An example add-on that loads Datomish on top of Sqlite.jsm.", + "main": "index.js", + "author": "Richard Newman ", + "engines": { + "firefox": ">=48.0a1" + }, + "license": "MPL-2.0", + "keywords": [ + "jetpack" + ] +} diff --git a/project.clj b/project.clj index c68cd5b2..72b5b9c1 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"] @@ -11,37 +11,89 @@ [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 + :externs ["src-browser/externs.js"] + :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 +111,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-browser/wrapper.prefix b/release-browser/wrapper.prefix new file mode 100644 index 00000000..5693f1c6 --- /dev/null +++ b/release-browser/wrapper.prefix @@ -0,0 +1,34 @@ +/* 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