@custom-elements-manifest/helpers
Version:
> ⚠️ Very experimental and very unfinished
95 lines (76 loc) • 2.74 kB
text/typescript
import {
JavaScriptModule,
Declaration,
Package,
Export,
CustomElement,
ClassMember,
} from 'custom-elements-manifest/schema';
/** Package */
export function hasModules(_package: Package): boolean {
return Array.isArray(_package?.modules) && _package?.modules.length > 0;
}
/** JavaScriptModule */
export function hasExports(_module: JavaScriptModule): boolean {
return Array.isArray(_module?.exports) && _module?.exports.length > 0;
}
export function hasDeclarations(_module: JavaScriptModule): boolean {
return Array.isArray(_module?.declarations) && _module?.declarations.length > 0;
}
export function isJavaScriptModule(_module: JavaScriptModule): boolean {
return _module.kind === 'javascript-module';
}
/** Exports */
export function isCustomElementExport(_export: Declaration | Export): boolean {
return _export.kind === 'custom-element-definition';
}
export function isJavaScriptExport(_export: Export): boolean {
return _export.kind === 'js';
}
/** Declarations */
export function isClass(item: Declaration | Export): boolean {
return item.kind === 'class';
}
export function isMixin(item: Declaration | Export): boolean {
return item.kind === 'mixin';
}
export function isFunction(item: Declaration | Export): boolean {
return item.kind === 'function';
}
export function isVariable(item: Declaration | Export): boolean {
return item.kind === 'variable';
}
/** CustomElement */
export function hasAttributes(customElement: CustomElement): boolean {
return Array.isArray(customElement?.attributes) && customElement?.attributes.length > 0;
}
export function hasEvents(customElement: CustomElement): boolean {
return Array.isArray(customElement?.events) && customElement?.events.length > 0;
}
export function hasSlots(customElement: CustomElement): boolean {
return Array.isArray(customElement?.slots) && customElement?.slots.length > 0;
}
export function hasMethods(customElement: CustomElement): boolean {
return (
Array.isArray(customElement?.members) &&
customElement?.members.length > 0 &&
customElement?.members.some(member => member.kind === 'method')
);
}
export function hasFields(customElement: CustomElement): boolean {
return (
Array.isArray(customElement?.members) &&
customElement?.members.length > 0 &&
customElement?.members.some(member => member.kind === 'field')
);
}
export function hasMixins(customElement: CustomElement): boolean {
return Array.isArray(customElement?.mixins) && customElement?.mixins.length > 0;
}
/** ClassMember */
export function isField(member: ClassMember): boolean {
return member.kind === 'field';
}
export function isMethod(member: ClassMember): boolean {
return member.kind === 'method';
}