JSPM

@vuedx/analyze

0.6.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 810
  • Score
    100M100P100Q111991F
  • License MIT

Extracts public API information from Vue component.

Package Exports

  • @vuedx/analyze

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@vuedx/analyze) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Analyze

A tool to statically analyze Vue single file components.

Support

This package is part of VueDX project, maintained by Rahul Kadyan. You can 💖 sponsor him for continued development of this package and other VueDX tools.

Usage

API

ConfiguredVueProject

More info

Signature:

declare class ConfiguredVueProject extends VueProject {
  constructor(rootDir: string, packageFile: string | undefined, packageJSON: Partial<PackageJSON>, configFile: string, config: Readonly<ProjectConfig>, requireModule?: NodeJS.Require);
  readonly configFile: string;
  kind: "configured";
  protected refresh(): void;
  setFileNames(fileNames: string[]): void;
}

Members:

refresh

Signature:

protected refresh(): void;

setFileNames

Signature:

setFileNames(fileNames: string[]): void;
Parameter Type Description
fileNames string[] -


InferredVueProject

More info

Signature:

declare class InferredVueProject extends VueProject {
  kind: "inferred";
  protected refresh(): void;
}

Members:

refresh

Signature:

protected refresh(): void;


VueProject

More info

Signature:

declare abstract class VueProject {
  protected _config: Readonly<ProjectConfigNormalized>;
  protected _externalComponents: ComponentRegistrationInfo[];
  protected _fileNames: string[];
  protected _globalComponents: ComponentRegistrationInfo[];
  protected _projectComponents: Map<string, ComponentRegistrationInfo[]>;
  protected _version: string;
  constructor(rootDir: string, packageFile: string | undefined, packageJSON: Partial<PackageJSON>, requireModule?: NodeJS.Require);
  get components(): ComponentRegistrationInfo[];
  get config(): Readonly<ProjectConfigNormalized>;
  get fileNames(): string[];
  get globalComponents(): ComponentRegistrationInfo[];
  protected isDirty: boolean;
  abstract kind: 'inferred' | 'configured';
  protected loadGlobalComponents(): void;
  markDirty(): void;
  readonly packageFile: string | undefined;
  packageJSON: PackageJSON;
  protected abstract refresh(): void;
  protected reloadIfNeeded(): void;
  protected readonly requireModule: NodeJS.Require;
  readonly rootDir: string;
  setConfig(config: ProjectConfig): void;
  setFileNames(fileNames: string[]): void;
  get version(): string;
  get vueFileNames(): string[];
}

Members:

loadGlobalComponents

Signature:

protected loadGlobalComponents(): void;

markDirty

Signature:

markDirty(): void;

refresh

Signature:

protected abstract refresh(): void;

reloadIfNeeded

Signature:

protected reloadIfNeeded(): void;

setConfig

Signature:

setConfig(config: ProjectConfig): void;
Parameter Type Description
config ProjectConfig -

setFileNames

Signature:

setFileNames(fileNames: string[]): void;
Parameter Type Description
fileNames string[] -


createAnalyzer

More info

Signature:

declare function createAnalyzer(plugins: Plugin[], options?: Partial<Context['parsers']>): Analyzer;
Parameter Type Description
plugins Plugin[] -
options Partial<Context['parsers']> -

createFullAnalyzer

More info

Signature:

declare function createFullAnalyzer(plugins?: Plugin[], options?: Partial<Context['parsers']>): ReturnType<typeof createAnalyzer>;
Parameter Type Description
plugins Plugin[] -
options Partial<Context['parsers']> -

createSourceRange

More info

Signature:

declare function createSourceRange(context: Context | ScriptAnalyzerContext, node: Node): SourceRange;
Parameter Type Description
context Context | ScriptAnalyzerContext -
node Node -

toVeturData

More info

Signature:

declare function toVeturData(components: ComponentInfo[]): VeturData;
Parameter Type Description
components ComponentInfo[] -

toWebTypes

More info

Signature:

declare function toWebTypes(name: string, version: string, components: ComponentInfo[]): WebTypes;
Parameter Type Description
name string -
version string -
components ComponentInfo[] -

transformToFunction

More info

Signature:

declare function transformToFunction(content: string, options?: FunctionTransformOptions): string;
Parameter Type Description
content string -
options FunctionTransformOptions -

Types

Analyzer

interface Analyzer {
  analyze(content: string, fileName?: string): ComponentInfo;
  analyzeScript(content: string, fileName?: string, mode?: 'script' | 'scriptSetup'): ComponentInfo;
  analyzeTemplate(content: string, fileName?: string): ComponentInfo;
}

ComponentInfo

interface ComponentInfo extends Taggable {
  aliases: string[];
  components: LocalComponentRegistrationInfo[];
  description: string;
  emits: EmitInfo[];
  errors: SyntaxError[];
  fileName: string;
  fnSetupOption?: SetupInfo;
  identifierSource: Record<string, IdentifierSource>;
  name: string;
  options?: ComponentOptionsInfo;
  props: PropInfo[];
  scriptSetup?: ScriptSetupInfo;
}

ComponentRegistrationInfo

interface ComponentRegistrationInfo {
  aliases: string[];
  name: string;
  source: ImportSource;
}

EmitInfo

interface EmitInfo extends Taggable, Addressable {
  description: string;
  isDynamic: boolean;
  isInferred: boolean;
  name: string;
  references: SourceRange[];
  type: TypeInfo[];
}

IdentifierSource

interface IdentifierSource extends Addressable {
  name: string;
}

ImportSource

interface ImportSource {
  exportName?: string;
  localName: string;
  moduleName: string;
}

ImportSourceWithLocation

interface ImportSourceWithLocation extends ImportSource, Addressable {
}

LocalComponentRegistrationInfo

interface LocalComponentRegistrationInfo extends ComponentRegistrationInfo, Addressable {
  kind: 'script' | 'scriptSetup';
  source: ImportSourceWithLocation;
}

Plugin

interface Plugin {
  babel?: AbstractScriptAnalyzerFn | AbstractAnalyzerHandler;
  blocks?: Partial<{
        script: BlockAnalyzer<SFCScriptBlock>;
        template: BlockAnalyzer<SFCTemplateBlock>;
        style: BlockAnalyzer<SFCStyleBlock>;
    }> & Record<string, BlockAnalyzer<any>>;
  declaration?: ComponentDeclarationAnalyzer[];
  options?: ComponentOptionsAnalyzer[] | Record<string, AbstractScriptAnalyzerFn<ObjectMember>>;
  setup?: ComponentSetupFnAnalyzer[];
  templateExpression?: (node: File, context: Context) => void;
}

PropInfo

interface PropInfo extends Taggable, Addressable {
  defaultValue: ValueInfo | null;
  description: string;
  name: string;
  required: boolean;
  type: TypeInfo[];
}

ScriptSetupInfo

interface ScriptSetupInfo {
  defineEmit?: Addressable;
  defineProps?: Addressable;
}

SetupInfo

interface SetupInfo extends Addressable {
  context?: {
        identifiers: Partial<{
            attrs: string;
            slots: string;
            emit: string;
        }>;
        rest?: string;
    } & Addressable;
  props?: {
        identifiers: string[];
        rest?: string;
    } & Addressable;
  return?: Addressable;
}

SourceRange

interface SourceRange {
  end: SourceLocation;
  source: string;
  start: SourceLocation;
}

SyntaxError

interface SyntaxError {
  loc: SourceLocation;
  message: string;
}

VeturData

interface VeturData {
  attributes: Record<string, {
        type: string;
        description: string;
    }>;
  tags: Record<string, {
        description: string;
        attributes: string[];
    }>;
}

WebTypes

interface WebTypes {
  contributions: {
        'types-syntax': 'typescript';
        'description-markup': 'html' | 'markdown' | 'none';
        tags: Tag[];
        attributes: Attribute[];
    };
  framework: 'vue';
  name: string;
  version: string;
}