| // https://github.com/prettier/prettier/blob/next/src/document/public.js |
| export namespace builders { |
| type DocCommand = |
| | Align |
| | BreakParent |
| | Cursor |
| | Fill |
| | Group |
| | IfBreak |
| | Indent |
| | IndentIfBreak |
| | Label |
| | Line |
| | LineSuffix |
| | LineSuffixBoundary |
| | Trim; |
| type Doc = string | Doc[] | DocCommand; |
| |
| interface Align { |
| type: "align"; |
| contents: Doc; |
| n: number | string | { type: "root" }; |
| } |
| |
| interface BreakParent { |
| type: "break-parent"; |
| } |
| |
| interface Cursor { |
| type: "cursor"; |
| placeholder: symbol; |
| } |
| |
| interface Fill { |
| type: "fill"; |
| parts: Doc[]; |
| } |
| |
| interface Group { |
| type: "group"; |
| id?: symbol; |
| contents: Doc; |
| break: boolean; |
| expandedStates: Doc[]; |
| } |
| |
| interface HardlineWithoutBreakParent extends Line { |
| hard: true; |
| } |
| |
| interface IfBreak { |
| type: "if-break"; |
| breakContents: Doc; |
| flatContents: Doc; |
| } |
| |
| interface Indent { |
| type: "indent"; |
| contents: Doc; |
| } |
| |
| interface IndentIfBreak { |
| type: "indent-if-break"; |
| } |
| |
| interface Label { |
| type: "label"; |
| label: any; |
| contents: Doc; |
| } |
| |
| interface Line { |
| type: "line"; |
| soft?: boolean | undefined; |
| hard?: boolean | undefined; |
| literal?: boolean | undefined; |
| } |
| |
| interface LineSuffix { |
| type: "line-suffix"; |
| contents: Doc; |
| } |
| |
| interface LineSuffixBoundary { |
| type: "line-suffix-boundary"; |
| } |
| |
| interface LiterallineWithoutBreakParent extends Line { |
| hard: true; |
| literal: true; |
| } |
| |
| type LiteralLine = [LiterallineWithoutBreakParent, BreakParent]; |
| |
| interface Softline extends Line { |
| soft: true; |
| } |
| |
| type Hardline = [HardlineWithoutBreakParent, BreakParent]; |
| |
| interface Trim { |
| type: "trim"; |
| } |
| |
| interface GroupOptions { |
| shouldBreak?: boolean | undefined; |
| id?: symbol | undefined; |
| } |
| |
| function addAlignmentToDoc(doc: Doc, size: number, tabWidth: number): Doc; |
| |
| /** @see [align](https://github.com/prettier/prettier/blob/main/commands.md#align) */ |
| function align(widthOrString: Align["n"], doc: Doc): Align; |
| |
| /** @see [breakParent](https://github.com/prettier/prettier/blob/main/commands.md#breakparent) */ |
| const breakParent: BreakParent; |
| |
| /** @see [conditionalGroup](https://github.com/prettier/prettier/blob/main/commands.md#conditionalgroup) */ |
| function conditionalGroup(alternatives: Doc[], options?: GroupOptions): Group; |
| |
| /** @see [dedent](https://github.com/prettier/prettier/blob/main/commands.md#dedent) */ |
| function dedent(doc: Doc): Align; |
| |
| /** @see [dedentToRoot](https://github.com/prettier/prettier/blob/main/commands.md#dedenttoroot) */ |
| function dedentToRoot(doc: Doc): Align; |
| |
| /** @see [fill](https://github.com/prettier/prettier/blob/main/commands.md#fill) */ |
| function fill(docs: Doc[]): Fill; |
| |
| /** @see [group](https://github.com/prettier/prettier/blob/main/commands.md#group) */ |
| function group(doc: Doc, opts?: GroupOptions): Group; |
| |
| /** @see [hardline](https://github.com/prettier/prettier/blob/main/commands.md#hardline) */ |
| const hardline: Hardline; |
| |
| /** @see [hardlineWithoutBreakParent](https://github.com/prettier/prettier/blob/main/commands.md#hardlinewithoutbreakparent-and-literallinewithoutbreakparent) */ |
| const hardlineWithoutBreakParent: HardlineWithoutBreakParent; |
| |
| /** @see [ifBreak](https://github.com/prettier/prettier/blob/main/commands.md#ifbreak) */ |
| function ifBreak( |
| ifBreak: Doc, |
| noBreak?: Doc, |
| options?: { groupId?: symbol | undefined }, |
| ): IfBreak; |
| |
| /** @see [indent](https://github.com/prettier/prettier/blob/main/commands.md#indent) */ |
| function indent(doc: Doc): Indent; |
| |
| /** @see [indentIfBreak](https://github.com/prettier/prettier/blob/main/commands.md#indentifbreak) */ |
| function indentIfBreak( |
| doc: Doc, |
| opts: { groupId: symbol; negate?: boolean | undefined }, |
| ): IndentIfBreak; |
| |
| /** @see [join](https://github.com/prettier/prettier/blob/main/commands.md#join) */ |
| function join(sep: Doc, docs: Doc[]): Doc[]; |
| |
| /** @see [label](https://github.com/prettier/prettier/blob/main/commands.md#label) */ |
| function label(label: any | undefined, contents: Doc): Doc; |
| |
| /** @see [line](https://github.com/prettier/prettier/blob/main/commands.md#line) */ |
| const line: Line; |
| |
| /** @see [lineSuffix](https://github.com/prettier/prettier/blob/main/commands.md#linesuffix) */ |
| function lineSuffix(suffix: Doc): LineSuffix; |
| |
| /** @see [lineSuffixBoundary](https://github.com/prettier/prettier/blob/main/commands.md#linesuffixboundary) */ |
| const lineSuffixBoundary: LineSuffixBoundary; |
| |
| /** @see [literalline](https://github.com/prettier/prettier/blob/main/commands.md#literalline) */ |
| const literalline: LiteralLine; |
| |
| /** @see [literallineWithoutBreakParent](https://github.com/prettier/prettier/blob/main/commands.md#hardlinewithoutbreakparent-and-literallinewithoutbreakparent) */ |
| const literallineWithoutBreakParent: LiterallineWithoutBreakParent; |
| |
| /** @see [markAsRoot](https://github.com/prettier/prettier/blob/main/commands.md#markasroot) */ |
| function markAsRoot(doc: Doc): Align; |
| |
| /** @see [softline](https://github.com/prettier/prettier/blob/main/commands.md#softline) */ |
| const softline: Softline; |
| |
| /** @see [trim](https://github.com/prettier/prettier/blob/main/commands.md#trim) */ |
| const trim: Trim; |
| |
| /** @see [cursor](https://github.com/prettier/prettier/blob/main/commands.md#cursor) */ |
| const cursor: Cursor; |
| } |
| |
| export namespace printer { |
| function printDocToString( |
| doc: builders.Doc, |
| options: Options, |
| ): { |
| formatted: string; |
| /** |
| * This property is a misnomer, and has been since the changes in |
| * https://github.com/prettier/prettier/pull/15709. |
| * The region of the document indicated by `cursorNodeStart` and `cursorNodeText` will |
| * sometimes actually be what lies BETWEEN a pair of leaf nodes in the AST, rather than a node. |
| */ |
| cursorNodeStart?: number | undefined; |
| |
| /** |
| * Note that, like cursorNodeStart, this is a misnomer and may actually be the text between two |
| * leaf nodes in the AST instead of the text of a node. |
| */ |
| cursorNodeText?: string | undefined; |
| }; |
| interface Options { |
| /** |
| * Specify the line length that the printer will wrap on. |
| * @default 80 |
| */ |
| printWidth: number; |
| /** |
| * Specify the number of spaces per indentation-level. |
| * @default 2 |
| */ |
| tabWidth: number; |
| /** |
| * Indent lines with tabs instead of spaces |
| * @default false |
| */ |
| useTabs?: boolean; |
| parentParser?: string | undefined; |
| __embeddedInHtml?: boolean | undefined; |
| } |
| } |
| |
| export namespace utils { |
| function willBreak(doc: builders.Doc): boolean; |
| function traverseDoc( |
| doc: builders.Doc, |
| onEnter?: (doc: builders.Doc) => void | boolean, |
| onExit?: (doc: builders.Doc) => void, |
| shouldTraverseConditionalGroups?: boolean, |
| ): void; |
| function findInDoc<T = builders.Doc>( |
| doc: builders.Doc, |
| callback: (doc: builders.Doc) => T, |
| defaultValue: T, |
| ): T; |
| function mapDoc<T = builders.Doc>( |
| doc: builders.Doc, |
| callback: (doc: builders.Doc) => T, |
| ): T; |
| function removeLines(doc: builders.Doc): builders.Doc; |
| function stripTrailingHardline(doc: builders.Doc): builders.Doc; |
| function replaceEndOfLine( |
| doc: builders.Doc, |
| replacement?: builders.Doc, |
| ): builders.Doc; |
| function canBreak(doc: builders.Doc): boolean; |
| } |