From 2577e0d4a7b128c48f0eb8479432bc6f3d51fb1a Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Tue, 15 Nov 2016 10:54:55 -0800 Subject: [PATCH] Produce different output for Firefox and Firefox add-ons. Firefox itself doesn't need `require("chrome")` to get access to Cu, and shouldn't touch the Add-on SDK at all. --- project.clj | 36 +++++++++++++--- release-addon/README.md | 5 +++ release-addon/wrap_bare.sh | 7 +++ release-addon/wrapper.prefix | 34 +++++++++++++++ release-addon/wrapper.suffix | 6 +++ release-browser/wrapper.prefix | 43 ++++++++----------- release-browser/wrapper.suffix | 8 +--- src/addon/datomish/sqlite_module.cljs | 9 ++++ .../datomish/cljify.cljs | 0 .../datomish/core.cljs | 1 - .../datomish/js_sqlite.cljs | 0 .../datomish/preload.cljs | 0 .../datomish/sqlitejsm_sqlite.cljs | 7 +-- .../externs/datomish.js | 4 ++ src/browser/datomish/sqlite_module.cljs | 9 ++++ 15 files changed, 128 insertions(+), 41 deletions(-) create mode 100644 release-addon/README.md create mode 100755 release-addon/wrap_bare.sh create mode 100644 release-addon/wrapper.prefix create mode 100644 release-addon/wrapper.suffix create mode 100644 src/addon/datomish/sqlite_module.cljs rename src/{browser => browser-common}/datomish/cljify.cljs (100%) rename src/{browser => browser-common}/datomish/core.cljs (99%) rename src/{browser => browser-common}/datomish/js_sqlite.cljs (100%) rename src/{browser => browser-common}/datomish/preload.cljs (100%) rename src/{browser => browser-common}/datomish/sqlitejsm_sqlite.cljs (90%) rename src/{browser => browser-common}/externs/datomish.js (87%) create mode 100644 src/browser/datomish/sqlite_module.cljs diff --git a/project.clj b/project.clj index d687ca63..8a80783a 100644 --- a/project.clj +++ b/project.clj @@ -47,6 +47,31 @@ } :notify-command ["release-node/wrap_bare.sh"]} + :release-addon + ;; Release builds for use in Firefox add-ons are much like the ones + ;; for Firefox itself, but they can freely use `console` and must + ;; `require("chrome")` to get access to Components. + { + :source-paths ["src/common" "src/browser-common" "src/addon"] + :assert false + :compiler + { + :elide-asserts true + :externs ["src/browser-common/externs/datomish.js"] + :language-in :ecmascript5 + :language-out :ecmascript5 + :optimizations :advanced + :output-dir "target/release-addon" + :output-to "target/release-addon/datomish.bare.js" + :output-wrapper false + :parallel-build true + :preloads [datomish.preload] + :pretty-print true + :pseudo-names true + :static-fns true + } + :notify-command ["release-addon/wrap_bare.sh"]} + :release-browser ;; Release builds for use in Firefox must: ;; * Use :optimizations > :none, so that a single file is generated @@ -57,15 +82,16 @@ ;; There's no point in generating a source map -- it'll be wrong ;; due to wrapping. { - :source-paths ["src/common" "src/browser"] + :source-paths ["src/common" "src/browser-common" "src/browser"] :assert false :compiler { + :verbose true :elide-asserts true - :externs ["src/browser/externs/datomish.js"] - :language-in :ecmascript5 - :language-out :ecmascript5 - :optimizations :advanced + :externs ["src/browser-common/externs/datomish.js"] + :language-in :ecmascript5-strict + :language-out :ecmascript5-strict + :optimizations :simple :output-dir "target/release-browser" :output-to "target/release-browser/datomish.bare.js" :output-wrapper false diff --git a/release-addon/README.md b/release-addon/README.md new file mode 100644 index 00000000..f31204bf --- /dev/null +++ b/release-addon/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-addon/wrap_bare.sh b/release-addon/wrap_bare.sh new file mode 100755 index 00000000..ff03a0d4 --- /dev/null +++ b/release-addon/wrap_bare.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +(cat release-browser/wrapper.prefix; cat target/release-browser/datomish.bare.js; cat release-browser/wrapper.suffix) > target/release-browser/datomish.js + +echo "Packed target/release-browser/datomish.js" diff --git a/release-addon/wrapper.prefix b/release-addon/wrapper.prefix new file mode 100644 index 00000000..5693f1c6 --- /dev/null +++ b/release-addon/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