diff --git a/src/compiler/compile/nodes/Action.ts b/src/compiler/compile/nodes/Action.ts index f0d92f8537..2072c0b9df 100644 --- a/src/compiler/compile/nodes/Action.ts +++ b/src/compiler/compile/nodes/Action.ts @@ -1,31 +1,44 @@ -import Node from './shared/Node'; -import Expression from './shared/Expression'; -import Component from '../Component'; -import TemplateScope from './shared/TemplateScope'; -import { Directive } from '../../interfaces'; +import Node from './shared/Node.js'; +import Expression from './shared/Expression.js'; +/** @extends Node */ export default class Action extends Node { - type: 'Action'; - name: string; - expression: Expression; - uses_context: boolean; - template_scope: TemplateScope; - constructor(component: Component, parent: Node, scope: TemplateScope, info: Directive) { - super(component, parent, scope, info); + /** @type {'Action'} */ + type; - const object = info.name.split('.')[0]; - component.warn_if_undefined(object, info, scope); + /** @type {string} */ + name; - this.name = info.name; - component.add_reference(this as any, object); + /** @type {import('./shared/Expression.js').default} */ + expression; - this.expression = info.expression - ? new Expression(component, this, scope, info.expression) - : null; + /** @type {boolean} */ + uses_context; - this.template_scope = scope; + /** @type {import('./shared/TemplateScope.js').default} */ + template_scope; - this.uses_context = this.expression && this.expression.uses_context; - } + /** + * @param {import('../Component.js').default} component * + * @param {import('./shared/Node.js').default} parent * + * @param {import('./shared/TemplateScope.js').default} scope * + * @param {import('../../interfaces.js').Directive} info undefined + */ + constructor(component, parent, scope, info) { + super(component, parent, scope, info); + const object = info.name.split('.')[0]; + component.warn_if_undefined(object, info, scope); + this.name = info.name; + component.add_reference(/** @type {any} */ (this), object); + this.expression = info.expression + ? new Expression(component, this, scope, info.expression) + : null; + this.template_scope = scope; + this.uses_context = this.expression && this.expression.uses_context; + } } + + + + diff --git a/src/compiler/compile/nodes/shared/Context.js b/src/compiler/compile/nodes/shared/Context.js index 5cf842b1c3..ee7a75eef4 100644 --- a/src/compiler/compile/nodes/shared/Context.js +++ b/src/compiler/compile/nodes/shared/Context.js @@ -13,7 +13,7 @@ import flatten_reference from '../../utils/flatten_reference.js'; * component: import('../../Component.js').default; * context_rest_properties: Map; * in_rest_element?: boolean; - * }} + * }} params */ export function unpack_destructuring({ contexts, @@ -175,7 +175,7 @@ export function unpack_destructuring({ * @param {number} n * @param {import('estree').Expression} expression * @param {(name: string) => import('estree').Node} to_ctx - * @returns {import("C:/repos/svelte/svelte/node_modules/.pnpm/@types+estree@1.0.0/node_modules/@types/estree/index").import('estree').Node} + * @returns {import('estree').Node} */ function update_reference(contexts, n, expression, to_ctx) { /** @param {import('estree').Identifier} node */ @@ -231,15 +231,18 @@ function mark_referenced(node, scope, component) { /** @typedef {DestructuredVariable | ComputedProperty} Context */ -/** @typedef {Object} ComputedProperty +/** + * @typedef {Object} ComputedProperty * @property {'ComputedProperty'} type - * @property {Identifier} property_name - * @property {Expression|PrivateIdentifier} key + * @property {import('estree').Identifier} property_name + * @property {import('estree').Expression|import('estree').PrivateIdentifier} key */ -/** @typedef {Object} DestructuredVariable + +/** + * @typedef {Object} DestructuredVariable * @property {'DestructuredVariable'} type - * @property {Identifier} key + * @property {import('estree').Identifier} key * @property {string} [name] - * @property {(node:Node)=>Node} modifier - * @property {(node:Node,to_ctx:(name:string)=>Node)=>Node} default_modifier + * @property {(node:import('estree').Node)=>import('estree').Node} modifier + * @property {(node:import('estree').Node,to_ctx:(name:string)=>import('estree').Node)=>import('estree').Node} default_modifier */ diff --git a/src/compiler/compile/nodes/shared/TemplateScope.js b/src/compiler/compile/nodes/shared/TemplateScope.js index aa9863841f..dd54116e96 100644 --- a/src/compiler/compile/nodes/shared/TemplateScope.js +++ b/src/compiler/compile/nodes/shared/TemplateScope.js @@ -1,4 +1,14 @@ export default class TemplateScope { + /** + * @typedef {import('../EachBlock').default + * | import('../ThenBlock').default + * | import('../CatchBlock').default + * | import('../InlineComponent').default + * | import('../Element').default + * | import('../SlotTemplate').default + * | import('../ConstTag').default} NodeWithScope + */ + /** @type {Set} */ names; @@ -41,7 +51,7 @@ export default class TemplateScope { /** * @param {string} name - * @returns {any} + * @returns {NodeWithScope} */ get_owner(name) { return this.owners.get(name) || (this.parent && this.parent.get_owner(name)); @@ -70,13 +80,3 @@ export default class TemplateScope { return owner && owner.type === 'ConstTag'; } } - -/** - * @typedef {| EachBlock - * | ThenBlock - * | CatchBlock - * | InlineComponent - * | Element - * | SlotTemplate - * | ConstTag} NodeWithScope - */