337 lines
10 KiB
TypeScript
337 lines
10 KiB
TypeScript
/* auto-generated by NAPI-RS */
|
|
/* eslint-disable */
|
|
export declare const enum CompactOptions {
|
|
/** No whitespace modification */
|
|
None = 'none',
|
|
/** HTML-aware whitespace collapsing (default). */
|
|
Html = 'html',
|
|
/** JSX-style whitespace removal. */
|
|
Jsx = 'jsx'
|
|
}
|
|
|
|
/**
|
|
* Compile Astro file to JavaScript asynchronously on a separate thread.
|
|
*
|
|
* Generally `compileAstroSync` is preferable to use as it does not have the overhead
|
|
* of spawning a thread. If you need to parallelize compilation of multiple files,
|
|
* it is recommended to use worker threads.
|
|
*
|
|
* @example
|
|
* ```javascript
|
|
* import { compileAstro } from '@astrojs/compiler-binding';
|
|
*
|
|
* const result = await compileAstro(`---
|
|
* const name = "World";
|
|
* ---
|
|
* <h1>Hello {name}!</h1>`, {
|
|
* filename: 'Component.astro',
|
|
* });
|
|
*
|
|
* console.log(result.code); // Generated JavaScript
|
|
* ```
|
|
*/
|
|
export declare function compileAstro(sourceText: string, options?: CompileOptions | undefined | null): Promise<CompileResult>
|
|
|
|
/**
|
|
* Compile Astro file to JavaScript synchronously on current thread.
|
|
*
|
|
* @example
|
|
* ```javascript
|
|
* import { compileAstroSync } from '@astrojs/compiler-binding';
|
|
*
|
|
* const result = compileAstroSync(`---
|
|
* const name = "World";
|
|
* ---
|
|
* <h1>Hello {name}!</h1>`, {
|
|
* filename: 'Component.astro',
|
|
* });
|
|
*
|
|
* console.log(result.code); // Generated JavaScript
|
|
* ```
|
|
*/
|
|
export declare function compileAstroSync(sourceText: string, options?: CompileOptions | undefined | null): CompileResult
|
|
|
|
/** Options for compiling Astro files to JavaScript. */
|
|
export interface CompileOptions {
|
|
/**
|
|
* The filename of the Astro component being compiled.
|
|
* Used in the `$$createComponent` call for debugging.
|
|
*/
|
|
filename?: string
|
|
/**
|
|
* A normalized version of the filename used for scope hash generation.
|
|
* If not provided, falls back to `filename`.
|
|
*/
|
|
normalizedFilename?: string
|
|
/**
|
|
* The import specifier for Astro runtime functions.
|
|
* Defaults to `"astro/runtime/server/index.js"`.
|
|
*/
|
|
internalURL?: string
|
|
/**
|
|
* Source map generation mode.
|
|
*
|
|
* - `"external"`: populate the `map` field with a JSON source map.
|
|
* - `"inline"`: append an inline `//# sourceMappingURL=data:...` comment; `map` will be empty.
|
|
* - `"both"`: append the inline comment **and** populate `map`.
|
|
* - `undefined`: no source map (default).
|
|
*/
|
|
sourcemap?: 'external' | 'inline' | 'both'
|
|
/**
|
|
* Arguments passed to `$$createAstro` when the Astro global is used.
|
|
* Defaults to `"https://astro.build"`.
|
|
*/
|
|
astroGlobalArgs?: string
|
|
/**
|
|
* Controls whitespace collapsing in the HTML output.
|
|
*
|
|
* - `none` (default): no whitespace modification.
|
|
* - `html`: HTML-aware whitespace collapsing (collapses runs of whitespace,
|
|
* preserves significant whitespace, follows HTML whitespace rules).
|
|
* - `"jsx"`: strips all whitespace-only text nodes and leading/trailing
|
|
* whitespace from text content (JSX-style whitespace removal).
|
|
*
|
|
* @default false
|
|
*/
|
|
compact?: 'none' | 'html' | 'jsx'
|
|
/**
|
|
* Enable scoped slot result handling.
|
|
* When `true`, slot callbacks receive the `$$result` render context parameter.
|
|
*
|
|
* @default false
|
|
*/
|
|
resultScopedSlot?: boolean
|
|
/**
|
|
* Strategy for CSS scoping.
|
|
*
|
|
* @default "where"
|
|
*/
|
|
scopedStyleStrategy?: 'where' | 'class' | 'attribute'
|
|
/**
|
|
* URL for the view transitions animation CSS.
|
|
* When set, replaces the default `"transitions.css"` bare specifier in the emitted import.
|
|
*/
|
|
transitionsAnimationURL?: string
|
|
/**
|
|
* Whether to annotate generated code with the source file path.
|
|
* **Stub**: not yet implemented.
|
|
*
|
|
* @default false
|
|
*/
|
|
annotateSourceFile?: boolean
|
|
/**
|
|
* Whether to strip HTML comments from component slot children.
|
|
* Matches the official Astro compiler behavior by default.
|
|
*
|
|
* @default true
|
|
*/
|
|
stripSlotComments?: boolean
|
|
/**
|
|
* Whether the caller has a `resolvePath` function.
|
|
*
|
|
* When `true`, the codegen will:
|
|
* - Skip emitting `$$createMetadata` import
|
|
* - Skip emitting `import * as $$moduleN` re-imports
|
|
* - Skip emitting `export const $$metadata = ...`
|
|
* - Use plain string literals instead of `$$metadata.resolvePath(...)`
|
|
*
|
|
* The actual path resolution is done by the JS wrapper layer using
|
|
* the `resolvePath` callback post-compilation.
|
|
*
|
|
* @default false
|
|
*/
|
|
resolvePathProvided?: boolean
|
|
/**
|
|
* Preprocessed style content, indexed by extractable style order.
|
|
*
|
|
* When provided, the codegen uses these strings as CSS content instead
|
|
* of reading from the AST's `<style>` text children. Each entry
|
|
* corresponds to an extractable style in document order (matching the
|
|
* indices from `extractStylesSync`).
|
|
*
|
|
* An entry of `undefined` means "use the original content from the AST".
|
|
* An entry of `""` means "style had a preprocessing error — use empty content".
|
|
*/
|
|
preprocessedStyles?: Array<string | undefined | null>
|
|
}
|
|
|
|
/** Result of compiling an Astro file. */
|
|
export interface CompileResult {
|
|
/** The generated JavaScript code. */
|
|
code: string
|
|
/**
|
|
* Source map JSON string. Contains a JSON-encoded source map when
|
|
* `sourcemap: true` was passed in options. Empty string otherwise.
|
|
*/
|
|
map: string
|
|
/** CSS scope hash for the component. */
|
|
scope: string
|
|
/** Extracted CSS from `<style>` tags. */
|
|
css: Array<string>
|
|
/** Hoisted scripts extracted from the template. */
|
|
scripts: Array<HoistedScript>
|
|
/** Components with `client:*` hydration directives (except `client:only`). */
|
|
hydratedComponents: Array<Component>
|
|
/** Components with `client:only` directive. */
|
|
clientOnlyComponents: Array<Component>
|
|
/** Components with `server:defer` directive. */
|
|
serverComponents: Array<Component>
|
|
/** Whether the template contains an explicit `<head>` element. */
|
|
containsHead: boolean
|
|
/** Whether the component propagates head content. */
|
|
propagation: boolean
|
|
/** Style processing errors. */
|
|
styleError: Array<string>
|
|
/** Diagnostic messages (errors, warnings, hints). */
|
|
diagnostics: Array<DiagnosticMessage>
|
|
}
|
|
|
|
/** A component reference found in the template (hydrated, client-only, or server-deferred). */
|
|
export interface Component {
|
|
/** The export name from the module (e.g., `"default"`). */
|
|
exportName: string
|
|
/** The local variable name used in the component. */
|
|
localName: string
|
|
/** The import specifier (e.g., `"../components/Counter.jsx"`). */
|
|
specifier: string
|
|
/** The resolved path (empty string if unresolved). */
|
|
resolvedPath: string
|
|
}
|
|
|
|
/** A labeled source span within a diagnostic. */
|
|
export interface DiagnosticLabel {
|
|
/** Optional label text (e.g. "expected closing tag here"). */
|
|
text: string | null
|
|
/** Byte offset of the span start. */
|
|
start: number
|
|
/** Byte offset of the span end (exclusive). */
|
|
end: number
|
|
/** 1-based line number. */
|
|
line: number
|
|
/** 0-based column number. */
|
|
column: number
|
|
}
|
|
|
|
/** A diagnostic message produced by the compiler. */
|
|
export interface DiagnosticMessage {
|
|
severity: 'error' | 'warning' | 'information' | 'hint'
|
|
/** Human-readable message text. */
|
|
text: string
|
|
/** Optional hint/suggestion for fixing the issue. */
|
|
hint: string
|
|
/** Labeled source spans. */
|
|
labels: Array<DiagnosticLabel>
|
|
}
|
|
|
|
/** Severity level for a diagnostic message. */
|
|
export declare const enum DiagnosticSeverity {
|
|
Error = 'error',
|
|
Warning = 'warning',
|
|
Information = 'information',
|
|
Hint = 'hint'
|
|
}
|
|
|
|
/**
|
|
* Extract style block metadata from an Astro source without performing compilation.
|
|
*
|
|
* Returns an array of style blocks in document order. Each block contains the
|
|
* text content and attributes of an extractable `<style>` element.
|
|
*
|
|
* This is the first step in the "Rust extract → TS preprocess → Rust compile"
|
|
* pipeline for `preprocessStyle` support.
|
|
*/
|
|
export declare function extractStylesSync(sourceText: string): Array<StyleBlock>
|
|
|
|
/** A hoisted script extracted from an Astro component. */
|
|
export interface HoistedScript {
|
|
/** The script type: `"inline"` or `"external"`. */
|
|
type: string
|
|
/** The inline script code (when type is `"inline"`). */
|
|
code?: string
|
|
/** The external script src URL (when type is `"external"`). */
|
|
src?: string
|
|
}
|
|
|
|
/**
|
|
* Parse an Astro file into an AST asynchronously on a separate thread.
|
|
*
|
|
* Returns the oxc AST in ESTree-compatible JSON format.
|
|
*/
|
|
export declare function parseAstro(sourceText: string): Promise<ParseResult>
|
|
|
|
/**
|
|
* Parse an Astro file into an AST synchronously.
|
|
*
|
|
* Returns the oxc AST in ESTree-compatible JSON format.
|
|
*
|
|
* @example
|
|
* ```javascript
|
|
* import { parseAstroSync } from '@astrojs/compiler-binding';
|
|
*
|
|
* const { ast } = parseAstroSync(`---
|
|
* const name = "World";
|
|
* ---
|
|
* <h1>Hello {name}!</h1>`);
|
|
*
|
|
* const tree = JSON.parse(ast);
|
|
* console.log(tree.type); // "AstroRoot"
|
|
* ```
|
|
*/
|
|
export declare function parseAstroSync(sourceText: string): ParseResult
|
|
|
|
/** Result of parsing an Astro file into an AST. */
|
|
export interface ParseResult {
|
|
/**
|
|
* The AST serialized as a JSON string (ESTree-compatible format from oxc).
|
|
* Call `JSON.parse()` on this to get the AST object.
|
|
*/
|
|
ast: string
|
|
/** Diagnostic messages (parse errors, warnings). */
|
|
diagnostics: Array<DiagnosticMessage>
|
|
}
|
|
|
|
/**
|
|
* Strategy for CSS scoping.
|
|
*
|
|
* Determines how Astro scopes CSS selectors to components.
|
|
*/
|
|
export declare const enum ScopedStyleStrategy {
|
|
/** Use `:where(.astro-XXXX)` selector (default). */
|
|
Where = 'where',
|
|
/** Use `.astro-XXXX` class selector. */
|
|
Class = 'class',
|
|
/** Use `[data-astro-cid-XXXX]` attribute selector. */
|
|
Attribute = 'attribute'
|
|
}
|
|
|
|
/** Controls whether and how source maps are emitted. */
|
|
export declare const enum SourcemapOption {
|
|
/** Generate a source map in the `map` field of the result. */
|
|
External = 'external',
|
|
/**
|
|
* Append an inline `//# sourceMappingURL=data:...` comment to the code.
|
|
* The `map` field will be empty.
|
|
*/
|
|
Inline = 'inline',
|
|
/** Both: append the inline comment **and** populate the `map` field. */
|
|
Both = 'both'
|
|
}
|
|
|
|
/**
|
|
* An extractable `<style>` block from an Astro component.
|
|
*
|
|
* Returned by `extractStylesSync` for each `<style>` element that would be
|
|
* extracted and processed during compilation.
|
|
*/
|
|
export interface StyleBlock {
|
|
/** Zero-based index of this style block among all extractable styles. */
|
|
index: number
|
|
/** The CSS/preprocessor text content between `<style>` and `</style>`. */
|
|
content: string
|
|
/**
|
|
* The element's attributes as key-value pairs.
|
|
* Only quoted and empty (boolean) attributes are included — expression
|
|
* attributes (like `define:vars={...}`) are omitted.
|
|
*/
|
|
attrs: Record<string, string>
|
|
}
|