add ExpressionMetadata type

pull/12644/head
Rich Harris 2 years ago
parent 5817767a87
commit 7c9dea4b65

@ -507,9 +507,10 @@ function read_attribute(parser) {
end: parser.index,
expression,
parent: null,
metadata: {
contains_call_expression: false,
dynamic: false
effect: {
is_dynamic: false,
has_call_expression: false,
bindings: new Set()
}
};
@ -537,9 +538,10 @@ function read_attribute(parser) {
name
},
parent: null,
metadata: {
dynamic: false,
contains_call_expression: false
effect: {
has_call_expression: false,
is_dynamic: false,
bindings: new Set()
}
};

@ -316,6 +316,12 @@ export interface Binding {
} | null;
}
export interface ExpressionMetadata {
dependencies: Set<Binding>;
has_state: boolean;
has_call: boolean;
}
export * from './template.js';
export { Css };

@ -1,4 +1,4 @@
import type { Binding, Css } from '#compiler';
import type { Binding, Css, EffectMetadata } from '#compiler';
import type {
ArrayExpression,
ArrowFunctionExpression,
@ -110,14 +110,7 @@ export interface Text extends BaseNode {
export interface ExpressionTag extends BaseNode {
type: 'ExpressionTag';
expression: Expression;
metadata: {
contains_call_expression: boolean;
/**
* Whether or not the expression contains any dynamic references
* determines whether it will be updated in a render effect or not
*/
dynamic: boolean;
};
effect: EffectMetadata;
}
/** A (possibly reactive) HTML template expression — `{@html ...}` */
@ -463,10 +456,7 @@ export interface Attribute extends BaseNode {
export interface SpreadAttribute extends BaseNode {
type: 'SpreadAttribute';
expression: Expression;
metadata: {
contains_call_expression: boolean;
dynamic: boolean;
};
effect: EffectMetadata;
}
export type TemplateNode =

Loading…
Cancel
Save