@stacksjs/stx
Version:
A performant UI Framework. Powered by Bun.
59 lines • 2.12 kB
TypeScript
import { extractBalancedExpression, findMatchingDelimiter, splitByPipe, Tokenizer } from './tokenizer';
/**
* Find all template expressions in source ({{ }} and {!! !!})
*/
export declare function findExpressions(source: string): ExpressionMatch[];
/**
* Parse an expression with optional filter chain
* e.g., "value | uppercase | truncate(10)" -> { baseExpression: "value", filters: [...] }
*/
export declare function parseExpressionWithFilters(expression: string): ParsedExpression;
/**
* Parse comma-separated arguments, respecting nesting
*/
export declare function parseArguments(argsString: string): string[];
/**
* Extract directive parameters from parentheses
* e.g., "@foreach($items as $item)" -> "$items as $item"
*/
export declare function extractDirectiveParams(source: string, directiveEnd: number): {
params: string
endPos: number
} | null;
/**
* Parse script content and extract declarations
*/
export declare function parseScriptDeclarations(scriptContent: string): ScriptDeclaration[];
// =============================================================================
// Expression Extraction
// =============================================================================
export declare interface ExpressionMatch {
fullMatch: string
expression: string
start: number
end: number
isRaw: boolean
}
// =============================================================================
// Filter Parsing
// =============================================================================
export declare interface FilterCall {
name: string
args: string[]
}
export declare interface ParsedExpression {
baseExpression: string
filters: FilterCall[]
}
// =============================================================================
// Script Parsing Utilities
// =============================================================================
export declare interface ScriptDeclaration {
type: 'variable' | 'function'
name: string
value: string
exported: boolean
start: number
end: number
}
export { extractBalancedExpression, findMatchingDelimiter, splitByPipe, Tokenizer };