mtl-js-sdk
Version:
ynf-fw-mtl-api
59 lines (56 loc) • 1.83 kB
JavaScript
/*
* @Author: wangyingliang@yonyou.com
* @Date: 2024-07-22 15:45:20
* @LastEditors: wangyingliang wangyingliang@yonyou.com
* @LastEditTime: 2025-02-08 17:14:20
* @FilePath: /mtl-api-project/src/platforms/APIIos/platform.js
* @Description: iOS 平台入口函数
* Copyright (c) 2024 by Yonyou, All Rights Reserved.
*/
// import methods from './APICloud.js'
import methods from "../yyzone/index.js"
import builder from '../../common/builder.js'
let isReady = false;
let callbacks = [];
function recurseDelegate(module) {
let delegate = {};
for (const key in module) {
if (Object.prototype.hasOwnProperty.call(module, key)) {
const element = module[key];
if (typeof element === "function") {
delegate[key] = (...args) => {
if (isReady) {
builder.assignGetter(window.mtl, key, element);
return element(...args);
} else {
callbacks.push(() => {
builder.assignGetter(window.mtl, key, element);
element(...args);
});
}
};
} else if (typeof element === "object") {
delegate[key] = recurseDelegate(element);
} else {
delegate[key] = element;
}
}
}
return delegate;
}
let platform = {
id: "APIIos",
bootstrap(onready) {
try {
methods?.ready(() => {
isReady = true;
callbacks.forEach(cb => cb());
callbacks = null;
onready();
});
} catch (error) {
}
}
};
platform.exports = recurseDelegate(methods);
export default platform;