You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
3.6 KiB
TypeScript

import type { Comment, Locations, SvelteElement, SvelteHTMLElement, SvelteScriptElement, SvelteStyleElement, Token } from "../ast";
import type ESTree from "estree";
import type * as SvAST from "../parser/svelte-ast-types";
import { ScriptLetContext } from "./script-let";
import { LetDirectiveCollections } from "./let-directive-collection";
import type { AttributeToken } from "../parser/html";
export declare class ScriptsSourceCode {
private raw;
private trimmedRaw;
readonly attrs: Record<string, string | undefined>;
private _separate;
private _appendScriptLets;
separateIndexes: number[];
constructor(script: string, attrs: Record<string, string | undefined>);
getCurrentVirtualCode(): string;
getCurrentVirtualCodeInfo(): {
script: string;
render: string;
};
getCurrentVirtualCodeLength(): number;
addLet(letCode: string): {
start: number;
end: number;
};
stripCode(start: number, end: number): void;
}
export type ContextSourceCode = {
template: string;
scripts: ScriptsSourceCode;
};
export declare class Context {
readonly code: string;
readonly parserOptions: any;
readonly sourceCode: ContextSourceCode;
readonly tokens: Token[];
readonly comments: Comment[];
private readonly locs;
private readonly locsMap;
readonly scriptLet: ScriptLetContext;
readonly letDirCollections: LetDirectiveCollections;
readonly slots: Set<SvelteHTMLElement>;
readonly elements: Map<SvelteElement, SvAST.Element | SvAST.InlineComponent | SvAST.Window | SvAST.Document | SvAST.Body | SvAST.Head | SvAST.Title | SvAST.Options | SvAST.SlotTemplate | SvAST.Slot>;
private readonly state;
private readonly blocks;
constructor(code: string, parserOptions: any);
getLocFromIndex(index: number): {
line: number;
column: number;
};
getIndexFromLoc(loc: {
line: number;
column: number;
}): number;
/**
* Get the location information of the given node.
* @param node The node.
*/
getConvertLocation(node: {
start: number;
end: number;
} | ESTree.Node): Locations;
addComment(comment: Comment): void;
/**
* Add token to tokens
*/
addToken(type: Token["type"], range: {
start: number;
end: number;
}): Token;
/**
* get text
*/
getText(range: {
start: number;
end: number;
} | ESTree.Node): string;
isTypeScript(): boolean;
stripScriptCode(start: number, end: number): void;
findBlock(element: SvelteScriptElement | SvelteStyleElement | SvelteElement): Block | undefined;
findSelfClosingBlock(element: SvelteElement): SelfClosingBlock | undefined;
}
type Block = {
tag: "script" | "style" | "template";
originalTag: string;
attrs: AttributeToken[];
selfClosing?: false;
contentRange: [number, number];
startTagRange: [number, number];
endTagRange: [number, number];
} | SelfClosingBlock;
type SelfClosingBlock = {
tag: "script" | "style" | "template";
originalTag: string;
attrs: AttributeToken[];
selfClosing: true;
startTagRange: [number, number];
};
export declare class LinesAndColumns {
private readonly lineStartIndices;
constructor(code: string);
getLocFromIndex(index: number): {
line: number;
column: number;
};
getIndexFromLoc(loc: {
line: number;
column: number;
}): number;
/**
* Get the location information of the given indexes.
*/
getLocations(start: number, end: number): Locations;
}
export {};