|
@@ -49,9 +49,11 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require
|
|
|
|
|
|
function mixin(src, target, what) {
|
|
function mixin(src, target, what) {
|
|
for (var keys = Object.keys(what||src), l=keys.length, i=0; i<l; ++i) {
|
|
for (var keys = Object.keys(what||src), l=keys.length, i=0; i<l; ++i) {
|
|
- var value = src[keys[i]];
|
|
|
|
- if (typeof value !== "undefined") { target[keys[i]] = value; }
|
|
|
|
- }
|
|
|
|
|
|
+ if (src == null) { target[keys[i]] = undefined; } else {
|
|
|
|
+ var value = src[keys[i]];
|
|
|
|
+ if (typeof value !== "undefined") { target[keys[i]] = value; }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return target;
|
|
return target;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -61,13 +63,13 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require
|
|
|
|
|
|
this.rebuild = function () {
|
|
this.rebuild = function () {
|
|
Object.keys(backup).forEach(function (key) {
|
|
Object.keys(backup).forEach(function (key) {
|
|
- mixin({}, api, (backup[key]||0)[apiKey]);
|
|
|
|
|
|
+ mixin(null, api, (backup[key]||0)[apiKey]||{});
|
|
});
|
|
});
|
|
var oapi = mixin(api, {}), order = [], chk = {};
|
|
var oapi = mixin(api, {}), order = [], chk = {};
|
|
brikz.ensure = function(key) {
|
|
brikz.ensure = function(key) {
|
|
if (key in exclude) { return null; }
|
|
if (key in exclude) { return null; }
|
|
var b = brikz[key], bak = backup[key];
|
|
var b = brikz[key], bak = backup[key];
|
|
- mixin({}, api, api);
|
|
|
|
|
|
+ mixin(null, api, api);
|
|
while (typeof b === "function") { b = new b(brikz, api, bak); }
|
|
while (typeof b === "function") { b = new b(brikz, api, bak); }
|
|
if (b && !chk[key]) { chk[key]=true; order.push(b); }
|
|
if (b && !chk[key]) { chk[key]=true; order.push(b); }
|
|
if (b && !b[apiKey]) { b[apiKey] = mixin(api, {}); }
|
|
if (b && !b[apiKey]) { b[apiKey] = mixin(api, {}); }
|
|
@@ -75,7 +77,7 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require
|
|
};
|
|
};
|
|
Object.keys(brikz).forEach(function (key) { brikz.ensure(key); });
|
|
Object.keys(brikz).forEach(function (key) { brikz.ensure(key); });
|
|
brikz.ensure = null;
|
|
brikz.ensure = null;
|
|
- mixin(oapi, mixin({}, api, api));
|
|
|
|
|
|
+ mixin(oapi, mixin(null, api, api));
|
|
order.forEach(function(brik) { mixin(brik[apiKey] || {}, api); });
|
|
order.forEach(function(brik) { mixin(brik[apiKey] || {}, api); });
|
|
order.forEach(function(brik) { brik[initKey] && brik[initKey](); });
|
|
order.forEach(function(brik) { brik[initKey] && brik[initKey](); });
|
|
backup = mixin(brikz, {});
|
|
backup = mixin(brikz, {});
|