diff --git a/.mocharc.unit.js b/.mocharc.unit.js index 387d70e7e0..2ccb85dfa6 100644 --- a/.mocharc.unit.js +++ b/.mocharc.unit.js @@ -1,6 +1,6 @@ module.exports = { spec: [ - 'src/**/__test__.ts', + 'src/**/__test__.js', ], require: [ 'sucrase/register' diff --git a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts index 1ca1b97dc4..7906a2ee67 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts @@ -1,423 +1,416 @@ -import Attribute from '../../../nodes/Attribute'; -import Block from '../../Block'; -import fix_attribute_casing from './fix_attribute_casing'; -import ElementWrapper from './index'; -import { string_literal } from '../../../utils/stringify'; +import fix_attribute_casing from './fix_attribute_casing.js'; +import { string_literal } from '../../../utils/stringify.js'; import { b, x } from 'code-red'; -import Expression from '../../../nodes/shared/Expression'; -import Text from '../../../nodes/Text'; -import handle_select_value_binding from './handle_select_value_binding'; -import { Identifier, Node } from 'estree'; -import { namespaces } from '../../../../utils/namespaces'; -import { BooleanAttributes, boolean_attributes } from '../../../../../shared/boolean_attributes'; -import { regex_double_quotes } from '../../../../utils/patterns'; - +import handle_select_value_binding from './handle_select_value_binding.js'; +import { namespaces } from '../../../../utils/namespaces.js'; +import { boolean_attributes } from '../../../../../shared/boolean_attributes.js'; +import { regex_double_quotes } from '../../../../utils/patterns.js'; const non_textlike_input_types = new Set([ - 'button', - 'checkbox', - 'color', - 'date', - 'datetime-local', - 'file', - 'hidden', - 'image', - 'radio', - 'range', - 'reset', - 'submit' + 'button', + 'checkbox', + 'color', + 'date', + 'datetime-local', + 'file', + 'hidden', + 'image', + 'radio', + 'range', + 'reset', + 'submit' ]); - +/** */ export class BaseAttributeWrapper { - node: Attribute; - parent: ElementWrapper; - - constructor(parent: ElementWrapper, block: Block, node: Attribute) { - this.node = node; - this.parent = parent; - - if (node.dependencies.size > 0) { - block.add_dependencies(node.dependencies); - } - } - render(_block: Block) {} + /** @type {import('../../../nodes/Attribute.js').default} */ + node; + + /** @type {import('./index.js').default} */ + parent; + constructor(parent, block, node) { + this.node = node; + this.parent = parent; + if (node.dependencies.size > 0) { + block.add_dependencies(node.dependencies); + } + } + + /** @param {import('../../Block.js').default} _block */ + render(_block) { } } - const regex_minus_sign = /-/; const regex_invalid_variable_identifier_characters = /[^a-zA-Z_$]/g; +/** @extends BaseAttributeWrapper */ export default class AttributeWrapper extends BaseAttributeWrapper { - node: Attribute; - parent: ElementWrapper; - metadata: any; - name: string; - property_name: string; - is_indirectly_bound_value: boolean; - is_src: boolean; - is_select_value_attribute: boolean; - is_input_value: boolean; - should_cache: boolean; - last: Identifier; - - constructor(parent: ElementWrapper, block: Block, node: Attribute) { - super(parent, block, node); - - if (node.dependencies.size > 0) { - // special case —