|
@@ -0,0 +1,24 @@
|
|
|
+function Brikz(api) {
|
|
|
+ var brikz = this, backup = {};
|
|
|
+
|
|
|
+ function mixin(s, t, k) {
|
|
|
+ for (k=k||Object.keys(s), l=k.length, i=0; i<l; ++i) t[k[i]]=s[k[i]];
|
|
|
+ return t;
|
|
|
+ }
|
|
|
+
|
|
|
+ Object.defineProperties(this, {
|
|
|
+ ensure: { value: null,
|
|
|
+ enumerable: false, configurable: true, writable: true},
|
|
|
+ rebuild: { value: function () {
|
|
|
+ var oapi = mixin(api, {}), obrikz = mixin(backup, {});
|
|
|
+ mixin({}, api, Object.keys(api)); backup = {};
|
|
|
+ brikz.ensure = function (key) {
|
|
|
+ var b = brikz[key], bak = [];
|
|
|
+ while (typeof b === "function") b = new b(brikz, api, bak);
|
|
|
+ if (b === bak) { b = obrikz[key]; mixin(oapi, api, bak); }
|
|
|
+ brikz[key] = backup[key] = b;
|
|
|
+ }
|
|
|
+ Object.keys(brikz).forEach(function (key) { brikz.ensure(key); });
|
|
|
+ brikz.ensure = null;
|
|
|
+ }, enumerable: false, configurable: true, writable: false }});
|
|
|
+}
|