@morjs/runtime-web
Version:
mor runtime for web
76 lines • 2.35 kB
JavaScript
;
var _a, _b;
Object.defineProperty(exports, "__esModule", { value: true });
exports.appendApis = exports.convertApis = exports.DEFAULT_API_NO_CONFLICT = void 0;
const my_1 = require("../my");
/**
* 默认是否允许覆盖全局对象中已有的 API
*/
exports.DEFAULT_API_NO_CONFLICT = ((_a = window.$MOR_APP_CONFIG) === null || _a === void 0 ? void 0 : _a.apiNoConflict) == null
? true
: !!((_b = window.$MOR_APP_CONFIG) === null || _b === void 0 ? void 0 : _b.apiNoConflict);
function convertApi(api) {
if (typeof api !== 'function') {
return api;
}
return function (option = {}) {
const result = api(option);
if (result && result instanceof Promise) {
result
.then((res) => {
const success = option.success;
if (success) {
success(res);
}
const complete = option.complete;
if (complete) {
complete();
}
return res;
})
.catch((err) => {
const fail = option.fail;
if (fail) {
fail(err);
}
const complete = option.complete;
if (complete) {
complete();
}
});
}
return result;
};
}
function convertApis(apis) {
const temp = {};
Object.keys(apis).forEach((key) => {
const api = apis[key];
temp[key] = convertApi(api);
});
return temp;
}
exports.convertApis = convertApis;
function appendApis(apiObj, noConflict = false) {
const tmp = convertApis(apiObj);
// 开启 noConflict 的情况下, 只追加新接口
if (noConflict) {
Object.keys(tmp).forEach(function (name) {
if (name in my_1.my)
return;
my_1.my[name] = tmp[name];
});
}
// 默认直接添加并覆盖接口
else {
try {
// 除了内置 api,后续添加的 api 都应添加在 window.my 上以达到共用的目的
Object.assign(my_1.my, tmp);
}
catch (e) {
console.error('appendApis: ', `${e}`);
}
}
}
exports.appendApis = appendApis;
//# sourceMappingURL=extendApi.js.map