import type { CompilerStyleSegments, CompilerEmitterOptions, Expression, Program, Statement, LoweringHints, ValueType } from "@velarscript/compiler/extension"; import { JavaScriptEmitter } from "@velarscript/compiler/extension"; export { dynamicChildLeaves, jsxKeyedList, JSX_SCALAR_TEXT_HINT, type DynamicChildGuard, type DynamicChildLeaf, type JsxKeyedList, } from "./emit/jsx.ts"; export declare class WebJavaScriptEmitter extends JavaScriptEmitter { private currentScope; /** * Whether the statement being emitted runs while the module evaluates, with * nothing standing between its failure and the module's own. It starts true * at the module's top level, stays true through the `@main` region, which is * the same evaluation, and is cleared for every body that runs later or under * an owner of its own: a `def`, a class, a `test`, an arrow, a derived or * watched expression, a `try` the author wrote, and the root argument of * `mount`, whose failure `__velarMount` already owns. * * Only a component element read here answers an instance nobody has caught, * which is the one construction whose throw used to take the whole page with * it; see `__velarModuleInstantiate`. */ private moduleEvaluation; private currentJsxNamespace; private readonly resourceContents; private cssOutput; private cssSegments; private webOutput; private needsFileTypeHelper; private needsLookArithmeticRuntime; private readonly importedLookStaticValues; private lookStaticValues; /** CSS names of the closed-keyword properties this module styles, for the runtime guard. */ private readonly lookKeywordProperties; private jsxId; private readonly keyframeNames; /** * D115 P4 R3d: the four emission families this emitter owns as collaborators * rather than as more of itself, and the one host object they reach it * through. Every `protected` seam is still declared on this class, forwarding * to the family that owns its body, so the base emitter reaches the same seam * it always did. */ private readonly host; constructor(hints: LoweringHints, forcedFunctionExports?: ReadonlySet, resourceContents?: ReadonlyMap, extensionImports?: ReadonlyMap>, options?: CompilerEmitterOptions); emit(program: Program): string; private outsideModuleEvaluation; css(): string; styleSegments(): CompilerStyleSegments; web(): boolean; protected emitTypeCheck(type: ValueType, value: string, state?: string): string; protected emitIsCheck(type: ValueType, value: string): string; protected additionalHelpers(_program: Program): readonly string[]; protected reactiveBridgeHelpers(needsJavaScriptCallBoundary: boolean, needsCollections: boolean, usedIdentifiers?: ReadonlySet): readonly string[]; protected includesErrorNormalizationRuntime(): boolean; protected detachedTaskHelpers(): readonly string[]; protected visitExtensionRuntimeExpression(expression: Expression, visitExpression: (expression: Expression) => void): boolean; protected visitExtensionRuntimeStatement(statement: Statement, visitExpression: (expression: Expression) => void, visitStatement: (statement: Statement) => void): boolean; protected extensionExpressionContainsDirectAwait(expression: Expression, contains: (expression: Expression) => boolean): boolean | undefined; protected extensionStatementContainsDirectAwait(statement: Statement, containsExpression: (expression: Expression) => boolean, containsBlock: (statements: readonly Statement[]) => boolean): boolean | undefined; protected emitStatement(statement: Statement, depth: number): string; protected emitExpression(expression: Expression): string; /** * The one object every family is handed. Its properties are live reads and * writes of this emitter: a family that records "this module needs the * file-type helper" or assigns the stylesheet must set the emitter's own * field, because `emit()`, `css()` and `styleSegments()` read them after * every family has run. */ private emitHost; } //# sourceMappingURL=emitter.d.ts.map