mirror of
https://github.com/openharmony/third_party_jsframework.git
synced 2026-07-19 22:43:32 -04:00
1645e78746
Signed-off-by: buzhifeng <buzhifeng2@huawei.com>
92 lines
2.7 KiB
TypeScript
92 lines
2.7 KiB
TypeScript
import { ExportAssignment, ExportDeclaration, ImportDeclaration,
|
|
ImportEqualsDeclaration, isImportDeclaration, Node, SourceFile } from 'typescript';
|
|
|
|
/**
|
|
* get current sourceFile all imports
|
|
* @param sourceFile
|
|
* @returns
|
|
*/
|
|
export function getImportDeclarationArray(sourceFile: SourceFile): Array<ImportElementEntity> {
|
|
const importDeclarations: Array<ImportElementEntity> = [];
|
|
sourceFile.forEachChild(node => {
|
|
if (isImportDeclaration(node)) {
|
|
importDeclarations.push(getImportDeclaration(node, sourceFile));
|
|
}
|
|
});
|
|
return importDeclarations;
|
|
}
|
|
|
|
/**
|
|
* get module inner import info
|
|
* @param importEqualNode
|
|
* @param sourceFile
|
|
* @returns
|
|
*/
|
|
export function getModuleImportEqual(importEqualNode: ImportEqualsDeclaration, sourceFile: SourceFile): ImportEuqalEntity {
|
|
return {
|
|
importEqualName: importEqualNode.name.escapedText.toString(),
|
|
importEqualTypeName: sourceFile.text.substring(importEqualNode.moduleReference.pos, importEqualNode.moduleReference.end).trimStart().trimEnd(),
|
|
importEqualTypeKind: importEqualNode.moduleReference.kind
|
|
};
|
|
}
|
|
|
|
/**
|
|
* get export info
|
|
* @param exportNode
|
|
* @param sourceFile
|
|
* @returns
|
|
*/
|
|
export function getExportDeclaration(exportNode: ExportDeclaration, sourceFile: SourceFile): string {
|
|
return sourceFile.text.substring(exportNode.pos, exportNode.end).trimStart().trimEnd();
|
|
}
|
|
|
|
/**
|
|
* get import info
|
|
* @param node
|
|
* @param sourceFile
|
|
* @returns
|
|
*/
|
|
export function getImportDeclaration(node: Node, sourceFile: SourceFile): ImportElementEntity {
|
|
let importElements = '';
|
|
const importNode = node as ImportDeclaration;
|
|
const importPath = sourceFile.text.substring(importNode.moduleSpecifier.pos, importNode.moduleSpecifier.end).trimStart().trimEnd();
|
|
const importClause = importNode.importClause;
|
|
if (importClause !== undefined) {
|
|
importElements = sourceFile.text.substring(importClause.pos, importClause.end).trimStart().trimEnd();
|
|
}
|
|
|
|
return {
|
|
importPath: importPath,
|
|
importElements: importElements
|
|
};
|
|
}
|
|
|
|
/**
|
|
* get export info
|
|
* @param exportAssigment
|
|
* @param sourceFile
|
|
* @returns
|
|
*/
|
|
export function getExportAssignment(exportAssigment: ExportAssignment, sourceFile: SourceFile): Array<string> {
|
|
const exportAssignments: Array<string> = [];
|
|
if (exportAssigment.expression !== undefined) {
|
|
exportAssignments.push(sourceFile.text.substring(exportAssigment.expression.pos, exportAssigment.expression.end).trimStart().trimEnd());
|
|
}
|
|
return exportAssignments;
|
|
}
|
|
|
|
export interface ImportElementEntity {
|
|
importPath: string,
|
|
importElements: string
|
|
}
|
|
|
|
export interface ExportElementEntity {
|
|
exportName: string
|
|
}
|
|
|
|
export interface ImportEuqalEntity {
|
|
importEqualName: string,
|
|
importEqualTypeName: string,
|
|
importEqualTypeKind: number
|
|
}
|