UNPKG

2.83 kBTypeScriptView Raw
1import type { PresentArray } from '@glimmer/interfaces';
2import type { CallFields } from './base';
3import type { VariableReference } from './refs';
4import { SourceSlice } from '../../source/slice';
5/**
6 * A Handlebars literal.
7 *
8 * {@link https://handlebarsjs.com/guide/expressions.html#literal-segments}
9 */
10export type LiteralValue = string | boolean | number | undefined | null;
11export interface LiteralTypes {
12 string: string;
13 boolean: boolean;
14 number: number;
15 null: null;
16 undefined: undefined;
17}
18declare const LiteralExpression_base: import("./node").TypedNodeConstructor<"Literal", {
19 value: LiteralValue;
20} & import("./node").BaseNodeFields>;
21/**
22 * Corresponds to a Handlebars literal.
23 *
24 * @see {LiteralValue}
25 */
26export declare class LiteralExpression extends LiteralExpression_base {
27 toSlice(this: StringLiteral): SourceSlice;
28}
29export type StringLiteral = LiteralExpression & {
30 value: string;
31};
32/**
33 * Returns true if an input {@see ExpressionNode} is a literal.
34 */
35export declare function isLiteral<K extends keyof LiteralTypes = keyof LiteralTypes>(node: ExpressionNode, kind?: K): node is StringLiteral;
36declare const PathExpression_base: import("./node").TypedNodeConstructor<"Path", {
37 ref: VariableReference;
38 tail: readonly SourceSlice[];
39} & import("./node").BaseNodeFields>;
40/**
41 * Corresponds to a path in expression position.
42 *
43 * ```hbs
44 * this
45 * this.x
46 * @x
47 * @x.y
48 * x
49 * x.y
50 * ```
51 */
52export declare class PathExpression extends PathExpression_base {
53}
54declare const KeywordExpression_base: import("./node").TypedNodeConstructor<"Keyword", {
55 name: string;
56 symbol: number;
57} & import("./node").BaseNodeFields>;
58/**
59 * Corresponds to a known strict-mode keyword. It behaves similarly to a
60 * PathExpression with a FreeVarReference, but implies StrictResolution and
61 * is guaranteed to not have a tail, since `{{outlet.foo}}` would have been
62 * illegal.
63 */
64export declare class KeywordExpression extends KeywordExpression_base {
65}
66declare const CallExpression_base: import("./node").TypedNodeConstructor<"Call", CallFields & import("./node").BaseNodeFields>;
67/**
68 * Corresponds to a parenthesized call expression.
69 *
70 * ```hbs
71 * (x)
72 * (x.y)
73 * (x y)
74 * (x.y z)
75 * ```
76 */
77export declare class CallExpression extends CallExpression_base {
78}
79declare const InterpolateExpression_base: import("./node").TypedNodeConstructor<"Interpolate", {
80 parts: PresentArray<ExpressionNode>;
81} & import("./node").BaseNodeFields>;
82/**
83 * Corresponds to an interpolation in attribute value position.
84 *
85 * ```hbs
86 * <a href="{{url}}.html"
87 * ```
88 */
89export declare class InterpolateExpression extends InterpolateExpression_base {
90}
91export type ExpressionNode = LiteralExpression | PathExpression | KeywordExpression | CallExpression | InterpolateExpression;
92export {};