Spaces:
Runtime error
Runtime error
| import { AssignmentExpression, Node, Program } from 'estree'; | |
| import { SourceMap } from 'magic-string'; | |
| interface BaseNode { | |
| start: number; | |
| end: number; | |
| type: string; | |
| children?: TemplateNode[]; | |
| [prop_name: string]: any; | |
| } | |
| export interface Fragment extends BaseNode { | |
| type: 'Fragment'; | |
| children: TemplateNode[]; | |
| } | |
| export interface Text extends BaseNode { | |
| type: 'Text'; | |
| data: string; | |
| } | |
| export interface MustacheTag extends BaseNode { | |
| type: 'MustacheTag' | 'RawMustacheTag'; | |
| expression: Node; | |
| } | |
| export interface Comment extends BaseNode { | |
| type: 'Comment'; | |
| data: string; | |
| ignores: string[]; | |
| } | |
| export interface ConstTag extends BaseNode { | |
| type: 'ConstTag'; | |
| expression: AssignmentExpression; | |
| } | |
| interface DebugTag extends BaseNode { | |
| type: 'DebugTag'; | |
| identifiers: Node[]; | |
| } | |
| export type DirectiveType = | |
| | 'Action' | |
| | 'Animation' | |
| | 'Binding' | |
| | 'Class' | |
| | 'StyleDirective' | |
| | 'EventHandler' | |
| | 'Let' | |
| | 'Ref' | |
| | 'Transition'; | |
| export interface BaseDirective extends BaseNode { | |
| type: DirectiveType; | |
| name: string; | |
| } | |
| interface BaseExpressionDirective extends BaseDirective { | |
| type: DirectiveType; | |
| expression: null | Node; | |
| name: string; | |
| modifiers: string[]; | |
| } | |
| export interface Element extends BaseNode { | |
| type: | |
| | 'InlineComponent' | |
| | 'SlotTemplate' | |
| | 'Title' | |
| | 'Slot' | |
| | 'Element' | |
| | 'Head' | |
| | 'Options' | |
| | 'Window' | |
| | 'Document' | |
| | 'Body'; | |
| attributes: Array<BaseDirective | Attribute | SpreadAttribute>; | |
| name: string; | |
| } | |
| export interface Attribute extends BaseNode { | |
| type: 'Attribute'; | |
| name: string; | |
| value: any[]; | |
| } | |
| export interface SpreadAttribute extends BaseNode { | |
| type: 'Spread'; | |
| expression: Node; | |
| } | |
| export interface Transition extends BaseExpressionDirective { | |
| type: 'Transition'; | |
| intro: boolean; | |
| outro: boolean; | |
| } | |
| export type Directive = BaseDirective | BaseExpressionDirective | Transition; | |
| export type TemplateNode = | |
| | Text | |
| | ConstTag | |
| | DebugTag | |
| | MustacheTag | |
| | BaseNode | |
| | Element | |
| | Attribute | |
| | SpreadAttribute | |
| | Directive | |
| | Transition | |
| | Comment; | |
| export interface Parser { | |
| readonly template: string; | |
| readonly filename?: string; | |
| index: number; | |
| stack: Node[]; | |
| html: Node; | |
| css: Node; | |
| js: Node; | |
| meta_tags: {}; | |
| } | |
| export interface Script extends BaseNode { | |
| type: 'Script'; | |
| context: string; | |
| content: Program; | |
| } | |
| export interface Style extends BaseNode { | |
| type: 'Style'; | |
| attributes: any[]; // TODO | |
| children: any[]; // TODO add CSS node types | |
| content: { | |
| start: number; | |
| end: number; | |
| styles: string; | |
| }; | |
| } | |
| export interface Ast { | |
| html: TemplateNode; | |
| css?: Style; | |
| instance?: Script; | |
| module?: Script; | |
| } | |
| export interface Warning { | |
| start?: { line: number; column: number; pos?: number }; | |
| end?: { line: number; column: number }; | |
| pos?: number; | |
| code: string; | |
| message: string; | |
| filename?: string; | |
| frame?: string; | |
| toString: () => string; | |
| } | |
| export type EnableSourcemap = boolean | { js: boolean; css: boolean }; | |
| export type CssHashGetter = (args: { | |
| name: string; | |
| filename: string | undefined; | |
| css: string; | |
| hash: (input: string) => string; | |
| }) => string; | |
| export interface CompileOptions { | |
| /** | |
| * Sets the name of the resulting JavaScript class (though the compiler will rename it if it would otherwise conflict with other variables in scope). | |
| * It will normally be inferred from `filename` | |
| * | |
| * @default 'Component' | |
| */ | |
| name?: string; | |
| /** | |
| * Used for debugging hints and sourcemaps. Your bundler plugin will set it automatically. | |
| * | |
| * @default null | |
| */ | |
| filename?: string; | |
| /** | |
| * If `"dom"`, Svelte emits a JavaScript class for mounting to the DOM. | |
| * If `"ssr"`, Svelte emits an object with a `render` method suitable for server-side rendering. | |
| * If `false`, no JavaScript or CSS is returned; just metadata. | |
| * | |
| * @default 'dom' | |
| */ | |
| generate?: 'dom' | 'ssr' | false; | |
| /** | |
| * If `"throw"`, Svelte throws when a compilation error occurred. | |
| * If `"warn"`, Svelte will treat errors as warnings and add them to the warning report. | |
| * | |
| * @default 'throw' | |
| */ | |
| errorMode?: 'throw' | 'warn'; | |
| /** | |
| * If `"strict"`, Svelte returns a variables report with only variables that are not globals nor internals. | |
| * If `"full"`, Svelte returns a variables report with all detected variables. | |
| * If `false`, no variables report is returned. | |
| * | |
| * @default 'strict' | |
| */ | |
| varsReport?: 'full' | 'strict' | false; | |
| /** | |
| * An initial sourcemap that will be merged into the final output sourcemap. | |
| * This is usually the preprocessor sourcemap. | |
| * | |
| * @default null | |
| */ | |
| sourcemap?: object | string; | |
| /** | |
| * If `true`, Svelte generate sourcemaps for components. | |
| * Use an object with `js` or `css` for more granular control of sourcemap generation. | |
| * | |
| * @default true | |
| */ | |
| enableSourcemap?: EnableSourcemap; | |
| /** | |
| * Used for your JavaScript sourcemap. | |
| * | |
| * @default null | |
| */ | |
| outputFilename?: string; | |
| /** | |
| * Used for your CSS sourcemap. | |
| * | |
| * @default null | |
| */ | |
| cssOutputFilename?: string; | |
| /** | |
| * The location of the `svelte` package. | |
| * Any imports from `svelte` or `svelte/[module]` will be modified accordingly. | |
| * | |
| * @default 'svelte' | |
| */ | |
| sveltePath?: string; | |
| /** | |
| * If `true`, causes extra code to be added to components that will perform runtime checks and provide debugging information during development. | |
| * | |
| * @default false | |
| */ | |
| dev?: boolean; | |
| /** | |
| * If `true`, getters and setters will be created for the component's props. If `false`, they will only be created for readonly exported values (i.e. those declared with `const`, `class` and `function`). If compiling with `customElement: true` this option defaults to `true`. | |
| * | |
| * @default false | |
| */ | |
| accessors?: boolean; | |
| /** | |
| * If `true`, tells the compiler that you promise not to mutate any objects. | |
| * This allows it to be less conservative about checking whether values have changed. | |
| * | |
| * @default false | |
| */ | |
| immutable?: boolean; | |
| /** | |
| * If `true` when generating DOM code, enables the `hydrate: true` runtime option, which allows a component to upgrade existing DOM rather than creating new DOM from scratch. | |
| * When generating SSR code, this adds markers to `<head>` elements so that hydration knows which to replace. | |
| * | |
| * @default false | |
| */ | |
| hydratable?: boolean; | |
| /** | |
| * If `true`, generates code that will work in IE9 and IE10, which don't support things like `element.dataset`. | |
| * | |
| * @default false | |
| */ | |
| legacy?: boolean; | |
| /** | |
| * If `true`, tells the compiler to generate a custom element constructor instead of a regular Svelte component. | |
| * | |
| * @default false | |
| */ | |
| customElement?: boolean; | |
| /** | |
| * A `string` that tells Svelte what tag name to register the custom element with. | |
| * It must be a lowercase alphanumeric string with at least one hyphen, e.g. `"my-element"`. | |
| * | |
| * @default null | |
| */ | |
| tag?: string; | |
| /** | |
| * - `'injected'` (formerly `true`), styles will be included in the JavaScript class and injected at runtime for the components actually rendered. | |
| * - `'external'` (formerly `false`), the CSS will be returned in the `css` field of the compilation result. Most Svelte bundler plugins will set this to `'external'` and use the CSS that is statically generated for better performance, as it will result in smaller JavaScript bundles and the output can be served as cacheable `.css` files. | |
| * - `'none'`, styles are completely avoided and no CSS output is generated. | |
| */ | |
| css?: 'injected' | 'external' | 'none' | boolean; | |
| /** | |
| * A `number` that tells Svelte to break the loop if it blocks the thread for more than `loopGuardTimeout` ms. | |
| * This is useful to prevent infinite loops. | |
| * **Only available when `dev: true`**. | |
| * | |
| * @default 0 | |
| */ | |
| loopGuardTimeout?: number; | |
| /** | |
| * The namespace of the element; e.g., `"mathml"`, `"svg"`, `"foreign"`. | |
| * | |
| * @default 'html' | |
| */ | |
| namespace?: string; | |
| /** | |
| * A function that takes a `{ hash, css, name, filename }` argument and returns the string that is used as a classname for scoped CSS. | |
| * It defaults to returning `svelte-${hash(css)}`. | |
| * | |
| * @default undefined | |
| */ | |
| cssHash?: CssHashGetter; | |
| /** | |
| * If `true`, your HTML comments will be preserved during server-side rendering. By default, they are stripped out. | |
| * | |
| * @default false | |
| */ | |
| preserveComments?: boolean; | |
| /** | |
| * If `true`, whitespace inside and between elements is kept as you typed it, rather than removed or collapsed to a single space where possible. | |
| * | |
| * @default false | |
| */ | |
| preserveWhitespace?: boolean; | |
| /** | |
| * If `true`, exposes the Svelte major version on the global `window` object in the browser. | |
| * | |
| * @default true | |
| */ | |
| discloseVersion?: boolean; | |
| } | |
| export interface ParserOptions { | |
| filename?: string; | |
| customElement?: boolean; | |
| css?: 'injected' | 'external' | 'none' | boolean; | |
| } | |
| export interface Visitor { | |
| enter: (node: Node) => void; | |
| leave?: (node: Node) => void; | |
| } | |
| export interface AppendTarget { | |
| slots: Record<string, string>; | |
| slot_stack: string[]; | |
| } | |
| export interface Var { | |
| name: string; | |
| /** the `bar` in `export { foo as bar }` or `export let bar` */ | |
| export_name?: string; | |
| /** true if assigned a boolean default value (`export let foo = true`) */ | |
| is_boolean?: boolean; | |
| injected?: boolean; | |
| module?: boolean; | |
| mutated?: boolean; | |
| reassigned?: boolean; | |
| referenced?: boolean; // referenced from template scope | |
| referenced_from_script?: boolean; // referenced from script | |
| writable?: boolean; | |
| // used internally, but not exposed | |
| global?: boolean; | |
| internal?: boolean; // event handlers, bindings | |
| initialised?: boolean; | |
| hoistable?: boolean; | |
| subscribable?: boolean; | |
| is_reactive_dependency?: boolean; | |
| imported?: boolean; | |
| } | |
| export interface CssResult { | |
| code: string; | |
| map: SourceMap; | |
| } | |
| /** The returned shape of `compile` from `svelte/compiler` */ | |
| export interface CompileResult { | |
| /** The resulting JavaScript code from compling the component */ | |
| js: { | |
| /** Code as a string */ | |
| code: string; | |
| /** A source map */ | |
| map: any; | |
| }; | |
| /** The resulting CSS code from compling the component */ | |
| css: CssResult; | |
| /** The abstract syntax tree representing the structure of the component */ | |
| ast: Ast; | |
| /** | |
| * An array of warning objects that were generated during compilation. Each warning has several properties: | |
| * - code is a string identifying the category of warning | |
| * - message describes the issue in human-readable terms | |
| * - start and end, if the warning relates to a specific location, are objects with line, column and character properties | |
| * - frame, if applicable, is a string highlighting the offending code with line numbers | |
| * */ | |
| warnings: Warning[]; | |
| /** An array of the component's declarations used by tooling in the ecosystem (like our ESLint plugin) to infer more information */ | |
| vars: Var[]; | |
| /** An object used by the Svelte developer team for diagnosing the compiler. Avoid relying on it to stay the same! */ | |
| stats: { | |
| timings: { | |
| total: number; | |
| }; | |
| }; | |
| } | |