Skip to content

Commit

Permalink
feat(vue-component-meta): expose more infos (#1674)
Browse files Browse the repository at this point in the history
Co-authored-by: johnsoncodehk <johnsoncodehk@gmail.com>
  • Loading branch information
sxzz and johnsoncodehk committed Aug 6, 2022
1 parent d7af2ee commit b4220d4
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 6 deletions.
19 changes: 14 additions & 5 deletions packages/vue-component-meta/src/index.ts
Expand Up @@ -102,6 +102,11 @@ export function createComponentMetaChecker(tsconfigPath: string, checkerOptions:
return {
getExportNames,
getComponentMeta,
__internal__: {
program,
tsLs,
typeChecker,
},
};

function getMetaFileName(fileName: string) {
Expand Down Expand Up @@ -152,7 +157,7 @@ export function createComponentMetaChecker(tsconfigPath: string, checkerOptions:
.map((prop) => {
const {
resolveNestedProperties,
} = createSchemaResolvers(typeChecker, symbolNode!, checkerOptions.schema);
} = createSchemaResolvers(typeChecker, symbolNode!, checkerOptions);

return resolveNestedProperties(prop);
})
Expand Down Expand Up @@ -210,7 +215,7 @@ export function createComponentMetaChecker(tsconfigPath: string, checkerOptions:

const {
resolveEventSignature,
} = createSchemaResolvers(typeChecker, symbolNode!, checkerOptions.schema);
} = createSchemaResolvers(typeChecker, symbolNode!, checkerOptions);

return resolveEventSignature(call);
}).filter(event => event.name);
Expand All @@ -231,7 +236,7 @@ export function createComponentMetaChecker(tsconfigPath: string, checkerOptions:
return properties.map((prop) => {
const {
resolveSlotProperties,
} = createSchemaResolvers(typeChecker, symbolNode!, checkerOptions.schema);
} = createSchemaResolvers(typeChecker, symbolNode!, checkerOptions);

return resolveSlotProperties(prop);
});
Expand All @@ -251,7 +256,7 @@ export function createComponentMetaChecker(tsconfigPath: string, checkerOptions:
return exposed.map((prop) => {
const {
resolveExposedProperties,
} = createSchemaResolvers(typeChecker, symbolNode!, checkerOptions.schema);
} = createSchemaResolvers(typeChecker, symbolNode!, checkerOptions);

return resolveExposedProperties(prop);
});
Expand Down Expand Up @@ -300,7 +305,7 @@ export function createComponentMetaChecker(tsconfigPath: string, checkerOptions:
}
}

function createSchemaResolvers(typeChecker: ts.TypeChecker, symbolNode: ts.Expression, options: MetaCheckerSchemaOptions = false) {
function createSchemaResolvers(typeChecker: ts.TypeChecker, symbolNode: ts.Expression, { rawType, schema: options }: MetaCheckerOptions) {
const enabled = !!options;
const ignore = typeof options === 'object' ? [...options?.ignore ?? []] : [];

Expand Down Expand Up @@ -341,6 +346,7 @@ function createSchemaResolvers(typeChecker: ts.TypeChecker, symbolNode: ts.Expre
})),
required: !Boolean((prop.declarations?.[0] as ts.ParameterDeclaration)?.questionToken ?? false),
type: typeChecker.typeToString(subtype),
rawType: rawType ? subtype : undefined,
schema,
};
}
Expand All @@ -351,6 +357,7 @@ function createSchemaResolvers(typeChecker: ts.TypeChecker, symbolNode: ts.Expre
return {
name: prop.getName(),
type: typeChecker.typeToString(subtype),
rawType: rawType ? subtype : undefined,
description: ts.displayPartsToString(prop.getDocumentationComment(typeChecker)),
schema,
};
Expand All @@ -362,6 +369,7 @@ function createSchemaResolvers(typeChecker: ts.TypeChecker, symbolNode: ts.Expre
return {
name: expose.getName(),
type: typeChecker.typeToString(subtype),
rawType: rawType ? subtype : undefined,
description: ts.displayPartsToString(expose.getDocumentationComment(typeChecker)),
schema,
};
Expand All @@ -375,6 +383,7 @@ function createSchemaResolvers(typeChecker: ts.TypeChecker, symbolNode: ts.Expre
return {
name: (typeChecker.getTypeOfSymbolAtLocation(call.parameters[0], symbolNode!) as ts.StringLiteralType).value,
type: typeChecker.typeToString(subtype),
rawType: rawType ? subtype : undefined,
signature: typeChecker.signatureToString(call),
schema,
};
Expand Down
7 changes: 6 additions & 1 deletion packages/vue-component-meta/src/types.ts
Expand Up @@ -13,25 +13,29 @@ export interface PropertyMeta {
global: boolean;
required: boolean;
type: string;
rawType?: ts.Type;
tags: { name: string, text?: string; }[];
schema?: PropertyMetaSchema;
};
export interface EventMeta {
name: string;
type: string;
rawType?: ts.Type;
signature: string;
schema?: PropertyMetaSchema[];
}
export interface SlotMeta {
name: string;
type: string;
rawType?: ts.Type;
description: string;
schema?: PropertyMetaSchema;
}
export interface ExposeMeta {
name: string;
description: string;
type: string;
rawType?: ts.Type;
schema?: PropertyMetaSchema;
}

Expand All @@ -43,9 +47,10 @@ export type PropertyMetaSchema = string

export type MetaCheckerSchemaOptions = boolean | {
ignore?: string[];
}
};
export interface MetaCheckerOptions {
schema?: MetaCheckerSchemaOptions;
forceUseTs?: boolean;
printer?: import('typescript').PrinterOptions;
rawType?: boolean;
}

0 comments on commit b4220d4

Please sign in to comment.