@lcap/nasl
Version:
NetEase Application Specific Language
109 lines • 4.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUILibDeclarationWithoutEnv = exports.getUILibDeclaration = void 0;
const dependency_1 = require("./dependency");
const custom_1 = require("./custom");
const basic_1 = require("./basic");
const utils_1 = require("../release-body/utils");
const utils_2 = require("../../utils");
async function getUILibDeclaration(axios, app, appInfo) {
const ui = {
allNodesAPI: {},
needTSComponents: {},
standardUIComponents: {},
basicUITsCode: '',
withTypeLibraryTsCode: '',
};
const basicUITsCodes = [];
const context = {
axios,
app,
appInfo,
};
await Promise.all(app.frontendTypes.map(async (ft) => {
const { frameworkKind, kind } = ft;
const uiPackageInfo = (0, basic_1.getUIPackageInfo)(app, frameworkKind, kind);
const manifest = await (0, basic_1.loadBasicMainfest)(context, uiPackageInfo);
const [uiDeclaration, tsCode, cssRuleJSON] = await Promise.all([
(0, basic_1.loadBasicUINaslAPI)(context, uiPackageInfo, manifest),
(0, basic_1.loadBasicUIDeclaration)(context, uiPackageInfo, manifest),
(0, basic_1.loadBasicUICSSInfo)(context, uiPackageInfo, manifest),
]);
ui.allNodesAPI = {
...ui.allNodesAPI,
...uiDeclaration.allNodesAPI,
};
ui.standardUIComponents = {
...ui.standardUIComponents,
};
// merge CssInfo to allNodesAPI
Object.keys(cssRuleJSON || {}).forEach((key) => {
if (ui.allNodesAPI[key]) {
ui.allNodesAPI[key].cssInfo = cssRuleJSON[key];
}
else if (ui.allNodesAPI[(0, utils_2.Camel2kebab)(key)]) {
ui.allNodesAPI[(0, utils_2.Camel2kebab)(key)].cssInfo = cssRuleJSON[key];
}
else {
ui.allNodesAPI[key] = {
cssInfo: cssRuleJSON[key],
};
ui.allNodesAPI[(0, utils_2.Camel2kebab)(key)] = {
cssInfo: cssRuleJSON[key],
};
}
});
basicUITsCodes.push(tsCode);
}));
const libraryTsCodes = [];
await Promise.all(app.dependencies.map(async (dep) => {
if (!dep.frontends || dep.frontends.length === 0) {
return;
}
const uiDeclaration = await (0, dependency_1.loadDependencyUIDeclaration)(context, dep);
ui.allNodesAPI = {
...ui.allNodesAPI,
...uiDeclaration.allNodesAPI,
};
if (uiDeclaration.tsCode) {
libraryTsCodes.push(uiDeclaration.tsCode);
ui.standardUIComponents = {
...ui.standardUIComponents,
...uiDeclaration.allNodesAPI,
};
}
else {
ui.needTSComponents = {
...ui.needTSComponents,
...uiDeclaration.allNodesAPI,
};
}
}));
const { allNodesAPI } = await (0, custom_1.loadCustomUIDeclaration)(context);
ui.allNodesAPI = {
...ui.allNodesAPI,
...allNodesAPI,
};
ui.needTSComponents = {
...ui.needTSComponents,
...allNodesAPI,
};
ui.basicUITsCode = basicUITsCodes.join('\n\n');
ui.withTypeLibraryTsCode = libraryTsCodes.join('\n\n');
return ui;
}
exports.getUILibDeclaration = getUILibDeclaration;
async function getUILibDeclarationWithoutEnv(axios, app) {
const [env, version] = await Promise.all([
(0, utils_1.getEnvConfig)(axios, app.id),
(0, utils_1.getVersionDetail)(axios, app),
]);
// 此方法是向 app 实例中注入依赖信息
await (0, utils_1.getPackageInfos)(axios, app, env.STATIC_URL, version.fullVersion);
return getUILibDeclaration(axios, app, {
STATIC_URL: env.STATIC_URL,
tenantID: env.officialTenantId,
});
}
exports.getUILibDeclarationWithoutEnv = getUILibDeclarationWithoutEnv;
//# sourceMappingURL=material.js.map