@ionic/core
Version:
Base components for Ionic
436 lines (432 loc) • 11.3 kB
TypeScript
/**
* This is an autogenerated file created by the Stencil compiler.
* DO NOT MODIFY IT MANUALLY
*/
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 {};
declare const _default: JsonDocs;
export default _default;