@webdoc/model

Doclet API for JavaScript

Usage no npm install needed!

<script type="module">
  import webdocModel from 'https://cdn.skypack.dev/@webdoc/model';
</script>

README

@webdoc/model

This package is the API for editing and querying in-memory documentation tree models. @webdoc/types defines the node structure.

Installation :package:

This package is usually a dependency of templates and other webdoc packages.

npm install @webdoc/model

Usage :newspaper_roll:

import * as model from '@webdoc/model';

Constructing and editing documents

const entity = model.createDoc(
  "DocumentedEntity",
  "ClassDoc",
  {
    "description": "This is a programmatically created document!",
  }
);

const entityNs = model.doc("Documentation.Entities", documentTree);

model.addChildDoc(entity, entityNs);

@webdoc/model exports helper functions for creating and searching documents and mounting them into document trees.

Data types

model.createFunctionType(
  [model.createSimpleKeywordType("Promise")], // params
  model.createSimpleKeywordType("boolean"),   // returns
);

@webdoc/model exports helper functions for creating and joining data types. The DataType type is defined in @webdoc/types.

Querying

// Gets all the methods named "generic" in DocumentedEntity. Each signature of the method has a separate document. The
// # operator excludes any static "generic"-named methods.
const genericSignatures = model.query("Documentation.Entities.DocumentedEntity#generic", documentTree);

@webdoc/model exports a query engine for its document path language.

Runtime type-checking

const isInstantiable = model.isClass(doc) || model.isInterface(doc);

@webdoc/model exports helper functions for checking the types of document passed.