in src/generator.js [38:107]
function resolveDependencies(lang, config, ast) {
const imports = ast.imports;
const dependencies = {
// Package AliasID : { meta, scope, package_name, client_name, client_alias }
};
if (!imports || !imports.length) {
return dependencies;
}
const self_client_name = config.clientName
? config.clientName.toLowerCase()
: config.client.name.toLowerCase();
const libraries = config.libraries;
const lock = readLock(config.pkgDir);
const default_client_name = config.client.name;
const default_model_dir = config.model.dir;
let package_sets = [];
let client_sets = [];
ast.imports.forEach((item) => {
const aliasId = item.lexeme;
const meta = readModuleMeta(
libraries[aliasId],
config.pkgDir,
lock
);
meta.libraries = {
lock: lock[libraries[aliasId]],
tag: libraries[aliasId],
alias_id: aliasId
};
const scope = meta.scope;
let package_name = meta.name;
let client_name = default_client_name;
let model_dir = default_model_dir;
let lang_config = !meta[lang] ? {} : meta[lang];
if (lang_config.package) {
package_name = lang_config.package;
}
if (lang_config.clientName) {
client_name = lang_config.clientName;
}
if (lang_config.modelDirName) {
model_dir = lang_config.modelDirName;
}
// check package name duplication
if (package_sets.indexOf(package_name.toLowerCase()) > 0) {
debug.stack(`The package name (${package_name}) has been defined in ${aliasId} dara package.`);
}
package_sets.push(package_name.toLowerCase());
// check client name duplication
let client_name_lower = client_name.toLowerCase();
let client_alias = '';
if (client_sets.indexOf(client_name_lower) > -1 || client_name_lower === self_client_name) {
client_alias = package_name.split('.').join('') + '->' + client_name.split('.').join('');
} else {
client_sets.push(client_name_lower);
}
dependencies[aliasId] = {
meta,
scope,
package_name,
client_name,
client_alias,
model_dir
};
});
return dependencies;
}