Skip to content

Language record

Vue

A `.vue` file is indexed as one component with a surface: its props, computed values, methods, emitted events and the components its template renders are all recorded, while the script block itself is handed to the real JavaScript/TypeScript analyzer — so a component's logic and its component graph arrive together.

.vue · 1 registry id · 14 of 14 relationship types

The registry row this page is generated from

Read at render time from the same family row the register reads, so nothing in this block can disagree with it.

Extensions
.vue
Registry names
vue
Recorded symbols
components · props · events · methods

Relationship types this analyzer constructs

14 of 14 constructed, read from this analyzer's source and re-derived by the languages gate. Each row below is one of the engine's types, in the engine's own order.

Relationship typeConstructed
callspublished through delegated analyzers
extendsconstructed by this analyzer
implementspublished through delegated analyzers
usesconstructed by this analyzer
importspublished through delegated analyzers
exportsconstructed by this analyzer
containsconstructed by this analyzer
referencesconstructed by this analyzer
overridesconstructed by this analyzer
instantiatespublished through delegated analyzers
decoratespublished through delegated analyzers
rendersconstructed by this analyzer
mixes_inpublished through delegated analyzers
part_ofpublished through delegated analyzers

14 constructed, 0 not constructed. The 7 types marked as published through delegated analyzers come from the JavaScript, TypeScript analyzers this one hosts for inline blocks; their edges are stored under Vue. The register explains what each label means.

What this analyzer does not resolve

  • The template is markup, not symbols. Template elements, attributes and directives are never recorded: a component usage comes from its tag name, a provide/inject key from its argument, and an identifier read in {{ }} or :attr from the expression — so a directive is read, never resolved.
  • The seven compiler macros are how a file declares its own surface, so they publish props and events rather than edges. withDefaults(defineProps(xPropsDefaults), …) reads its defaults object within the file: a defaults constant imported from another module yields no defaults, because this lane does not resolve cross-file constants.
  • A <style> block is skipped entirely, and it is not the CSS family's either unless a build step writes it out as a real stylesheet file. And a placeholder in a template is read as a name: two corpus files published components literally named COMPONENT_NAME with 64 edges between them, which is what a template awaiting substitution looks like to an identifier reader.

Every line above was written against Vue’s own analyzer module and is named against a construct in it, so it can be checked against the source. Nothing here is inherited from a template, or from another language’s page.

Where you meet it in a repository

Recognised by extension — .vue. Everything below is about where those files actually sit in a working repository.

  • One component per file, and the file's own name is the component's name, so the class symbol, the parent's import and the tag in a template are the same string.
  • Options API and <script setup> land in the same component symbol — methods, computed, props, emits, watch, setup and the lifecycle hooks are all members of it — so a codebase mid-migration reads as one graph rather than two.
  • A component's real dependencies (a store, a router, an API client) are ordinary imports in its script block, handed to the JavaScript or TypeScript analyzer, so they sit in the same graph as the components it renders. Which of the two runs is decided per script block from the block's declared language rather than from the file extension.

Questions this index answers

Phrased as retrievals, because that is what an index can honestly do: it holds the symbols and the edges between them, and hands them back with the evidence attached.

  1. Which components does this template render?
  2. Which props and events does this component declare?
  3. Which methods does this component define, and what do they call?
  4. Which key does this component provide or inject?

What the analyzer sees in code like this

A script-setup component: the props and events it declares, and the tag it renders
<script setup>
const props = defineProps({ id: String, total: Number })   // bb records: properties id, total
const emit  = defineEmits(['save'])                          // bb records: event save
</script>

<template>
  <!-- bb records: instantiates edge -> InvoiceRow, from the tag name alone -->
  <InvoiceRow :total="props.total" @save="emit('save')" />
</template>

Symbols are stored with the file they came from and the bytes they span, so a hit points at a line rather than at a guess. The annotations in the sample are commentary for the reader, not strings the index would store.

Languages that turn up in the same repository

Web, data & config — the count beside each name is how many relationship types that family’s analyzer constructs.

The extensions, registry names, recorded symbols and relationship types above are the parser registry row for Vue, read while the page rendered — the same row the register reads, so the two surfaces cannot tell two stories. Every relationship type listed as constructed appears in src/ast/real-*, the analyzer modules bb ships. bb 0.1.0 answers from a local store over 50 languages (53 registry ids, three of them aliases). There is no benchmark on this page: every claim here is one you can go and read in the source.