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 —