aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--javascript/olm_post.js20
-rw-r--r--javascript/olm_pre.js30
2 files changed, 34 insertions, 16 deletions
diff --git a/javascript/olm_post.js b/javascript/olm_post.js
index 8951c11..54e42c5 100644
--- a/javascript/olm_post.js
+++ b/javascript/olm_post.js
@@ -419,4 +419,22 @@ olm_exports["get_library_version"] = restore_stack(function() {
getValue(buf+2, 'i8'),
];
});
-}();
+
+})();
+
+// export the olm functions into the environment.
+//
+// make sure that we do this *after* populating olm_exports, so that we don't
+// get a half-built window.Olm if there is an exception.
+
+if (typeof module !== 'undefined' && module.exports) {
+ // node / browserify
+ module.exports = olm_exports;
+}
+
+if (typeof(window) !== 'undefined') {
+ // We've been imported directly into a browser. Define the global 'Olm' object.
+ // (we do this even if module.exports was defined, because it's useful to have
+ // Olm in the global scope for browserified and webpacked apps.)
+ window["Olm"] = olm_exports;
+}
diff --git a/javascript/olm_pre.js b/javascript/olm_pre.js
index 50bf8c2..ae7aba5 100644
--- a/javascript/olm_pre.js
+++ b/javascript/olm_pre.js
@@ -2,32 +2,32 @@ var olm_exports = {};
var get_random_values;
var process; // Shadow the process object so that emscripten won't get
// confused by browserify
-if (typeof(global) !== 'undefined' && global["window"]) {
- // We're running with browserify
- module["exports"] = olm_exports;
- global["window"]["Olm"] = olm_exports;
- get_random_values = function(buf) {
- window.crypto.getRandomValues(buf);
- };
-} else if (typeof(window) !== 'undefined') {
- // We've been imported directly into a browser.
- window["Olm"] = olm_exports;
+
+if (typeof(window) !== 'undefined') {
+ // We've in a browser (directly, via browserify, or via webpack).
get_random_values = function(buf) {
window.crypto.getRandomValues(buf);
};
} else if (module["exports"]) {
// We're running in node.
- module["exports"] = olm_exports;
var nodeCrypto = require("crypto");
get_random_values = function(buf) {
var bytes = nodeCrypto.randomBytes(buf.length);
buf.set(bytes);
- }
+ };
process = global["process"];
} else {
throw new Error("Cannot find global to attach library to");
}
-var init = function() {
- var module; // Shadow the Node 'module' object so that emscripten won't try
- // to fiddle with it.
+(function() {
+ /* applications should define OLM_OPTIONS in the environment to override
+ * emscripten module settings */
+ var Module = {};
+ if (typeof(OLM_OPTIONS) !== 'undefined') {
+ for (var key in OLM_OPTIONS) {
+ if (OLM_OPTIONS.hasOwnProperty(key)) {
+ Module[key] = OLM_OPTIONS[key];
+ }
+ }
+ }