File size: 2,834 Bytes
bc20498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import type { ASTNode, SourceCode } from '../../types';
import type { AnyToken, IndentOptions, MaybeNode } from './commons';
declare const enum OffsetDataType {
    normal = 0,
    align = 1,
    start = 2
}
type OffsetData = {
    type: OffsetDataType.normal;
    base: number;
    offset: number;
    expectedIndent?: number;
} | {
    type: OffsetDataType.align;
    base: number;
    alignIndent: number;
    expectedIndent?: number;
} | {
    type: OffsetDataType.start;
    offset: number;
    expectedIndent?: number;
};
export declare class OffsetContext {
    private readonly sourceCode;
    private readonly options;
    private readonly offsets;
    private readonly ignoreRanges;
    constructor(arg: {
        sourceCode: SourceCode;
        options: IndentOptions;
    });
    /**
     * Set offset to the given index.
     */
    setOffsetIndex(index: number, offset: number, base: number): void;
    /**
     * Set align indent to the given index.
     */
    private setAlignIndent;
    /**
     * Set offset to the given tokens.
     */
    setOffsetToken(token: AnyToken | null | undefined | (AnyToken | null | undefined)[], offset: number, baseToken: AnyToken): void;
    /**
     * Copy offset to the given index from srcIndex.
     */
    copyOffset(index: number, srcIndex: number): void;
    /**
     * Set start offset to the given index.
     */
    setStartOffsetIndex(index: number, offset: number): void;
    /**
     * Set start offset to the given token.
     */
    setStartOffsetToken(token: AnyToken | null | undefined | (AnyToken | null | undefined)[], offset: number): void;
    setOffsetElementList(nodes: (ASTNode | AnyToken | MaybeNode | null | undefined)[], baseNodeOrToken: ASTNode | AnyToken | MaybeNode, lastNodeOrToken: ASTNode | AnyToken | MaybeNode | null, offset: number, align?: boolean): void;
    private _setOffsetElementList;
    /**
     * Ignore range of the given node.
     */
    ignore(node: ASTNode): void;
    getOffsetCalculator(): OffsetCalculator;
}
export declare class OffsetCalculator {
    private readonly options;
    private readonly offsets;
    private readonly ignoreRanges;
    constructor(arg: {
        offsets: Map<number, OffsetData>;
        options: IndentOptions;
        ignoreRanges: [number, number][];
    });
    /**
     * Calculate correct indentation of the given index.
     */
    private getExpectedIndentFromIndex;
    /**
     * Calculate correct indentation of the given token.
     */
    getExpectedIndentFromToken(token: AnyToken): number | null;
    /**
     * Calculate correct indentation of the line of the given tokens.
     */
    getExpectedIndentFromTokens(tokens: AnyToken[]): null | number;
    /** Save expected indent to give tokens */
    saveExpectedIndent(tokens: AnyToken[], expectedIndent: number): void;
}
export {};