123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 |
- interface ComponentCompilerPropertyComplexType {
- /**
- * The string of the original type annotation in the Stencil source code
- */
- original: string;
- /**
- * A 'resolved' type, where e.g. imported types have been resolved and inlined
- *
- * For instance, an annotation like `(foo: Foo) => string;` will be
- * converted to `(foo: { foo: string }) => string;`.
- */
- resolved: string;
- /**
- * A record of the types which were referenced in the assorted type
- * annotation in the original source file.
- */
- references: ComponentCompilerTypeReferences;
- }
- type ComponentCompilerTypeReferences = Record<string, ComponentCompilerTypeReference>;
- interface ComponentCompilerTypeReference {
- /**
- * A type may be defined:
- * - locally (in the same file as the component that uses it)
- * - globally
- * - by importing it into a file (and is defined elsewhere)
- */
- location: "local" | "global" | "import";
- /**
- * The path to the type reference, if applicable (global types should not need a path associated with them)
- */
- path?: string;
- /**
- * An ID for this type which is unique within a Stencil project.
- */
- id: string;
- }
- interface ComponentCompilerReferencedType {
- /**
- * The path to the module where the type is declared.
- */
- path: string;
- /**
- * The string of the original type annotation in the Stencil source code
- */
- declaration: string;
- /**
- * An extracted docstring
- */
- docstring: string;
- }
- interface ComponentCompilerEventComplexType {
- original: string;
- resolved: string;
- references: ComponentCompilerTypeReferences;
- }
- interface ComponentCompilerMethodComplexType {
- signature: string;
- parameters: JsonDocMethodParameter[];
- references: ComponentCompilerTypeReferences;
- return: string;
- }
- /**
- * The Type Library holds information about the types which are used in a
- * Stencil project. During compilation, Stencil gathers information about the
- * types which form part of a component's public API, such as properties
- * decorated with `@Prop`, `@Event`, `@Watch`, etc. This type information is
- * then added to the Type Library, where it can be accessed later on for
- * generating documentation.
- *
- * This information is included in the file written by the `docs-json` output
- * target (see {@link JsonDocs.typeLibrary}).
- */
- export type JsonDocsTypeLibrary = Record<string, ComponentCompilerReferencedType>;
- /**
- * A container for JSDoc metadata for a project
- */
- export interface JsonDocs {
- /**
- * The metadata for the JSDocs for each component in a Stencil project
- */
- components: JsonDocsComponent[];
- /**
- * The timestamp at which the metadata was generated, in the format YYYY-MM-DDThh:mm:ss
- */
- timestamp: string;
- compiler: {
- /**
- * The name of the compiler that generated the metadata
- */
- name: string;
- /**
- * The version of the Stencil compiler that generated the metadata
- */
- version: string;
- /**
- * The version of TypeScript that was used to generate the metadata
- */
- typescriptVersion: string;
- };
- typeLibrary: JsonDocsTypeLibrary;
- }
- /**
- * Container for JSDoc metadata for a single Stencil component
- */
- export interface JsonDocsComponent {
- /**
- * The directory containing the Stencil component, minus the file name.
- *
- * @example /workspaces/stencil-project/src/components/my-component
- */
- dirPath?: string;
- /**
- * The name of the file containing the Stencil component, with no path
- *
- * @example my-component.tsx
- */
- fileName?: string;
- /**
- * The full path of the file containing the Stencil component
- *
- * @example /workspaces/stencil-project/src/components/my-component/my-component.tsx
- */
- filePath?: string;
- /**
- * The path to the component's `readme.md` file, including the filename
- *
- * @example /workspaces/stencil-project/src/components/my-component/readme.md
- */
- readmePath?: string;
- /**
- * The path to the component's `usage` directory
- *
- * @example /workspaces/stencil-project/src/components/my-component/usage/
- */
- usagesDir?: string;
- /**
- * The encapsulation strategy for a component
- */
- encapsulation: "shadow" | "scoped" | "none";
- /**
- * The tag name for the component, for use in HTML
- */
- tag: string;
- /**
- * The contents of a component's `readme.md` that are user generated.
- *
- * Auto-generated contents are not stored in this reference.
- */
- readme: string;
- /**
- * The description of a Stencil component, found in the JSDoc that sits above the component's declaration
- */
- docs: string;
- /**
- * JSDoc tags found in the JSDoc comment written atop a component's declaration
- */
- docsTags: JsonDocsTag[];
- /**
- * The text from the class-level JSDoc for a Stencil component, if present.
- */
- overview?: string;
- /**
- * A mapping of usage example file names to their contents for the component.
- */
- usage: JsonDocsUsage;
- /**
- * Array of metadata for a component's `@Prop`s
- */
- props: JsonDocsProp[];
- /**
- * Array of metadata for a component's `@Method`s
- */
- methods: JsonDocsMethod[];
- /**
- * Array of metadata for a component's `@Event`s
- */
- events: JsonDocsEvent[];
- /**
- * Array of metadata for a component's `@Listen` handlers
- */
- listeners: JsonDocsListener[];
- /**
- * Array of metadata for a component's CSS styling information
- */
- styles: JsonDocsStyle[];
- /**
- * Array of component Slot information, generated from `@slot` tags
- */
- slots: JsonDocsSlot[];
- /**
- * Array of component Parts information, generate from `@part` tags
- */
- parts: JsonDocsPart[];
- /**
- * Array of metadata describing where the current component is used
- */
- dependents: string[];
- /**
- * Array of metadata listing the components which are used in current component
- */
- dependencies: string[];
- /**
- * Describes a tree of components coupling
- */
- dependencyGraph: JsonDocsDependencyGraph;
- /**
- * A deprecation reason/description found following a `@deprecated` tag
- */
- deprecation?: string;
- }
- export interface JsonDocsDependencyGraph {
- [tagName: string]: string[];
- }
- /**
- * A descriptor for a single JSDoc tag found in a block comment
- */
- export interface JsonDocsTag {
- /**
- * The tag name (immediately following the '@')
- */
- name: string;
- /**
- * The description that immediately follows the tag name
- */
- text?: string;
- }
- export interface JsonDocsValue {
- value?: string;
- type: string;
- }
- /**
- * A mapping of file names to their contents.
- *
- * This type is meant to be used when reading one or more usage markdown files associated with a component. For the
- * given directory structure:
- * ```
- * src/components/my-component
- * ├── my-component.tsx
- * └── usage
- * ├── bar.md
- * └── foo.md
- * ```
- * an instance of this type would include the name of the markdown file, mapped to its contents:
- * ```ts
- * {
- * 'bar': STRING_CONTENTS_OF_BAR.MD
- * 'foo': STRING_CONTENTS_OF_FOO.MD
- * }
- * ```
- */
- export interface JsonDocsUsage {
- [key: string]: string;
- }
- /**
- * An intermediate representation of a `@Prop` decorated member's JSDoc
- */
- export interface JsonDocsProp {
- /**
- * the name of the prop
- */
- name: string;
- complexType?: ComponentCompilerPropertyComplexType;
- /**
- * the type of the prop, in terms of the TypeScript type system (as opposed to JavaScript's or HTML's)
- */
- type: string;
- /**
- * `true` if the prop was configured as "mutable" where it was declared, `false` otherwise
- */
- mutable: boolean;
- /**
- * The name of the attribute that is exposed to configure a compiled web component
- */
- attr?: string;
- /**
- * `true` if the prop was configured to "reflect" back to HTML where it (the prop) was declared, `false` otherwise
- */
- reflectToAttr: boolean;
- /**
- * the JSDoc description text associated with the prop
- */
- docs: string;
- /**
- * JSDoc tags associated with the prop
- */
- docsTags: JsonDocsTag[];
- /**
- * The default value of the prop
- */
- default?: string;
- /**
- * Deprecation text associated with the prop. This is the text that immediately follows a `@deprecated` tag
- */
- deprecation?: string;
- values: JsonDocsValue[];
- /**
- * `true` if a component is declared with a '?', `false` otherwise
- *
- * @example
- * ```tsx
- * @Prop() componentProps?: any;
- * ```
- */
- optional: boolean;
- /**
- * `true` if a component is declared with a '!', `false` otherwise
- *
- * @example
- * ```tsx
- * @Prop() componentProps!: any;
- * ```
- */
- required: boolean;
- }
- export interface JsonDocsMethod {
- name: string;
- docs: string;
- docsTags: JsonDocsTag[];
- deprecation?: string;
- signature: string;
- returns: JsonDocsMethodReturn;
- parameters: JsonDocMethodParameter[];
- complexType: ComponentCompilerMethodComplexType;
- }
- export interface JsonDocsMethodReturn {
- type: string;
- docs: string;
- }
- export interface JsonDocMethodParameter {
- name: string;
- type: string;
- docs: string;
- }
- export interface JsonDocsEvent {
- event: string;
- bubbles: boolean;
- cancelable: boolean;
- composed: boolean;
- complexType: ComponentCompilerEventComplexType;
- docs: string;
- docsTags: JsonDocsTag[];
- deprecation?: string;
- detail: string;
- }
- /**
- * Type describing a CSS Style, as described by a JSDoc-style comment
- */
- export interface JsonDocsStyle {
- /**
- * The name of the style
- */
- name: string;
- /**
- * The type/description associated with the style
- */
- docs: string;
- /**
- * The annotation used in the JSDoc of the style (e.g. `@prop`)
- */
- annotation: string;
- /**
- * The mode associated with the style
- */
- mode: string | undefined;
- }
- export interface JsonDocsListener {
- event: string;
- target?: string;
- capture: boolean;
- passive: boolean;
- }
- /**
- * A descriptor for a slot
- *
- * Objects of this type are translated from the JSDoc tag, `@slot`
- */
- export interface JsonDocsSlot {
- /**
- * The name of the slot. Defaults to an empty string for an unnamed slot.
- */
- name: string;
- /**
- * A textual description of the slot.
- */
- docs: string;
- }
- /**
- * A descriptor of a CSS Shadow Part
- *
- * Objects of this type are translated from the JSDoc tag, `@part`, or the 'part'
- * attribute on a component in TSX
- */
- export interface JsonDocsPart {
- /**
- * The name of the Shadow part
- */
- name: string;
- /**
- * A textual description of the Shadow part.
- */
- docs: string;
- }
- /**
- * Represents a parsed block comment in a CSS, Sass, etc. file for a custom property.
- */
- export interface StyleDoc {
- /**
- * The name of the CSS property
- */
- name: string;
- /**
- * The user-defined description of the CSS property
- */
- docs: string;
- /**
- * The JSDoc-style annotation (e.g. `@prop`) that was used in the block comment to detect the comment.
- * Used to inform Stencil where the start of a new property's description starts (and where the previous description
- * ends).
- */
- annotation: "prop";
- /**
- * The Stencil style-mode that is associated with this property.
- */
- mode: string | undefined;
- }
- export {};
|