in packages/ice/src/service/runtimeGenerator.ts [39:79]
export function generateDeclaration(exportList: DeclarationData[]) {
const importDeclarations: Array<string> = [];
const exportDeclarations: Array<string> = [];
const exportNames: Array<string> = [];
exportList.forEach(data => {
const { specifier, source, alias, type } = data;
const isDefaultImport = !Array.isArray(specifier);
const specifiers = isDefaultImport ? [specifier] : specifier;
const symbol = type ? ';' : ',';
if (specifier) {
importDeclarations.push(`import ${type ? 'type ' : ''}${isDefaultImport ? specifier : `{ ${specifiers.map(specifierStr => ((alias && alias[specifierStr]) ? `${specifierStr} as ${alias[specifierStr]}` : specifierStr)).join(', ')} }`} from '${source}';`);
specifiers.forEach((specifierStr) => {
if (alias && alias[specifierStr]) {
exportDeclarations.push(`${alias[specifierStr]}${symbol}`);
exportNames.push(alias[specifierStr]);
} else {
exportDeclarations.push(`${specifierStr}${symbol}`);
exportNames.push(specifierStr);
}
});
} else {
importDeclarations.push(`import '${source}';`);
}
});
return {
importStr: importDeclarations.join('\n'),
/**
* Add two whitespace character in order to get the formatted code. For example:
* export {
withAuth,
useAuth,
};
*/
exportStr: exportDeclarations.join('\n '),
exportNames,
};
}