From 92b123c094517daf5721db9599c44910e20fc5ea Mon Sep 17 00:00:00 2001 From: David Rivera Date: Tue, 18 Jul 2017 21:22:09 -0600 Subject: [PATCH] Added umdAugmentation template to allow Module Augmentation in the root --- templates/umdAugmentation.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 templates/umdAugmentation.js diff --git a/templates/umdAugmentation.js b/templates/umdAugmentation.js new file mode 100644 index 0000000..1f24888 --- /dev/null +++ b/templates/umdAugmentation.js @@ -0,0 +1,31 @@ +// This UMD allows extend an existing module or library in the browser, +// instead of overwriting it. It is useful for libraries that serves +// as a shared namespace. + +(function umd(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + // Node. CommonJs2 environments that support module.exports. + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + // AMD. Register as an anonymous module. + define([], factory); + else if(typeof exports === 'object') + // CommonJs + exports.myLib = factory(); + else { + // Browser. Allow Module Augmentation (root is window) + var ts = Object.prototype.toString, + obj = '[object Object]', + myLib = factory(); + if (ts.call(root.myLib) === obj && ts.call(myLib) === obj) { + for (var p in myLib) root.myLib[p] = myLib[p]; + // not used Object.assign(a,b) for compatibility + } else root.myLib = myLib; + } +}(this, function() { + + // Just return a value to define the module export. + // This example returns an object, but the module + // can return a function as the exported value. + return {}; +}));