Browse Source

UMD version in brikz.umd.js.

Herbert Vojčík 1 year ago
parent
commit
6b2bb69f16
4 changed files with 89 additions and 0 deletions
  1. 2 0
      .gitignore
  2. 2 0
      brikz.js
  3. 66 0
      brikz.umd.js
  4. 19 0
      package.json

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+
+/node_modules/

+ 2 - 0
brikz.js

@@ -59,3 +59,5 @@ function Brikz(api, apiKey, initKey) {
         backup = mixin(brikz, {});
     };
 }
+
+return Brikz;

+ 66 - 0
brikz.umd.js

@@ -0,0 +1,66 @@
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.brikz = f()}})(function(){var define,module,exports;
+function Brikz(api, apiKey, initKey) {
+    var brikz = this, backup = {};
+    apiKey = apiKey || 'exports';
+    initKey = initKey || '__init__';
+
+    function mixin(src, target, what) {
+        for (var keys = Object.keys(what || src), l = keys.length, i = 0; i < l; ++i) {
+            if (src == null) {
+                target[keys[i]] = undefined;
+            } else {
+                var value = src[keys[i]];
+                if (typeof value !== "undefined") {
+                    target[keys[i]] = value;
+                }
+            }
+        }
+        return target;
+    }
+
+    Object.defineProperties(this, {
+        rebuild: {value: null, enumerable: false, configurable: true, writable: true}
+    });
+    var exclude = mixin(this, {});
+
+    this.rebuild = function () {
+        Object.keys(backup).forEach(function (key) {
+            mixin(null, api, (backup[key] || 0)[apiKey] || {});
+        });
+        var oapi = mixin(api, {}), order = [], chk = {};
+
+        function ensure(key) {
+            if (key in exclude) {
+                return null;
+            }
+            var b = brikz[key], bak = backup[key];
+            mixin(null, api, api);
+            while (typeof b === "function") {
+                (b.deps || []).forEach(ensure);
+                b = new b(brikz, api, bak);
+            }
+            brikz[key] = b;
+            if (b && !chk[key]) {
+                chk[key] = true;
+                order.push(b);
+            }
+            if (b && !b[apiKey]) {
+                b[apiKey] = mixin(api, {});
+            }
+        }
+
+        Object.keys(brikz).forEach(ensure);
+        mixin(oapi, mixin(null, api, api));
+        order.forEach(function (brik) {
+            mixin(brik[apiKey] || {}, api);
+        });
+        order.forEach(function (brik) {
+            if (brik[initKey]) brik[initKey]();
+        });
+        backup = mixin(brikz, {});
+    };
+}
+
+return Brikz;
+
+});

+ 19 - 0
package.json

@@ -0,0 +1,19 @@
+{
+  "name": "brikz",
+  "version": "0.0.2",
+  "description": "Reconfigurable micro composition of object APIs",
+  "main": "brikz.js",
+  "scripts": {
+    "build": "umd brikz < brikz.js > brikz.umd.js",
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://lolg.it/herby/brikz.git"
+  },
+  "author": "Herby Vojčík <herby@mailbox.sk>",
+  "license": "MIT",
+  "devDependencies": {
+    "umd": "^3.0.1"
+  }
+}