JSPM

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

Generate a JSON documentation for a Svelte file

Package Exports

  • sveltedoc-parser

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 (sveltedoc-parser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

The sveltedoc parser

Generate a JSON documentation for a Svelte file

npm

Changelog: [2.3.0] 02.10.2019

  • [Added] Svelte V3: Implement support of script element locations
  • [Fixed] Svelte V3: Fix parsing when component have multiple <script> blocks
  • [Added] Spec: Property locations was added to items and presents the list of item code locations
  • [Changed] Spec: Property loc for items marked as depricated, see locations property instead

[2.3.1] 25.11.2019

  • [Fixed] Svelte V3: Fix parsing issues when anonymous functions are used in event handlers at markup (Issue #18)

Full changelog of release versions can be found here

Install

npm install --save sveltedoc-parser

Features

  • JSDoc support
    • Support description extraction for everything items
    • Support visibility scope from JSDoc keywords: @public, @protected, @private
  • Extract list of imported components
    • Extract relative path to imported component (supports full-syntax and short-syntax import styles)
  • Extract data properties
    • Extract description from JSDoc comment
    • Extract JS type from JSDoc (@type {string}) or parse default value if is not provided
  • Extract computed properties with list of dependencies
  • Extract list of references that attached to components or HTML elements
  • Extract information about events
    • Events that propogated from child component or HTML elements <button on:click>...</button>
    • Parse event modificators ... on:click|once
  • Extract all fired events (Svelte 2 only)
    • Events that fired by this component by fire(...) method
    • Custom event handlers with private visibility scope
  • Extract all dispatched events (Svelte 3)
    • Events that dispatched from script block by user-created dispatcher
    • Events that dispatched from markup expressions by user-created dispatcher
  • Extract list of used default and named slots
  • Extract component methods
    • Extract description from JSDoc comment
    • Extract parameters description from JSDoc comment
    • Extract JS type from JSDoc for parameters (@param {string} parameter)
    • Identify optional parameters (@param [parameter]), Google Closure Compiler syntax supported as well (@param {string=} parameter)
    • Identify default values for optional parameters (@param [parameter=Default value])
  • Extract component helpers (Svelte 2 only)
  • Extract component actions (Svelte 2 only)
  • Extract component transitions (Svelte 2 only)
  • Extract source locations for component symbols
    • data
    • slots
    • methods
    • refs
    • events

Configuration

json Path Description Default value
filename The filename to parse. Required, unless fileContent is passed.
fileContent The file content to parse. Required, unless filename is passed.
encoding The file encoding. utf8
features The component features to parse and extracting. By default used all supported features (see below).
ignoredVisibilities The list of ignored visibilities. ['private', 'protected']
includeSourceLocations Flag, which indicates that source locations should be provided for component symbols. false
version Optional. Use 2 or 3 to specify which svelte syntax should be used. When that is not provided, parser try to detect version of the syntax. undefined
defaultVersion Optional. Specify default version of svelte syntax, if auto-detector can't indetify correct version. undefined

Supported feature names

  • 'name' - Extract the component name (Supported by Svelte 2 and Svelte 3).
  • 'data' - Extract and parse the list of component data properties (Supported by Svelte 2 and Svelte 3).
  • 'computed' - Extract and parse the list of component computed properties (Supported by Svelte 2 and Svelte 3).
  • 'methods' - Extract the list of component methods (Supported by Svelte 2 and Svelte 3).
  • 'actions' - Extract the list of component actions (Supported by Svelte 2).
  • 'helpers' - Extract the list of component helpers (Supported by Svelte 2).
  • 'components' - Extract the list of imported components (Supported by Svelte 2 and Svelte 3).
  • 'description' - Extract the component description (Supported by Svelte 2 and Svelte 3).
  • 'events' - Extract the list of events that fired by this component (Supported by Svelte 2 and Svelte 3).
  • 'slots' - Extract the list of slots provided by this component (Supported by Svelte 2 and Svelte 3).
  • 'transitions' - Extract the list of transitions used by this component (Supported by Svelte 2).
  • 'refs' - Extract the list of references used by this component (Supported by Svelte 2 and Svelte 3).

Output format

Output format are described at this document.

See example of output for Svelte 2 component here presented in JSON format for this component.

Usage

const sveltedoc = require('sveltedoc-parser');
const options = {
    filename: 'main.svelte'
};

sveltedoc.parse(options)
    .then(componentDoc => {
        console.log(componentDoc);
    })
    .catch(e => {
        console.error(e);
    });

API

parse(options)

Method to parse svelte component and provide doc object structure with details information.

detectVersion(options)

Method to detect svelte syntax version

  • Returns 3 when Svelte 3 special syntax feature are used
  • Returns 2 when Svelte 2 special syntax feature are used
  • Returns defaultVersion or undefined when specific version can't be identified

Issues

All list of known issues presented at this page.

Found a new issues? Please contribute and write detailed description here.

Contributors

Author Alexey Mulyukin

Based on vuedoc-parse