Skip to content

Commit 291be04

Browse files
authored
Merge branch 'main' into style-attr-undefined-var
2 parents 6703eec + 8c82274 commit 291be04

File tree

17 files changed

+628
-532
lines changed

17 files changed

+628
-532
lines changed

.github/workflows/main-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- uses: actions/checkout@v4
1616
- uses: pnpm/action-setup@v4
1717
with:
18-
version: 8
18+
version: 10
1919
- uses: actions/setup-node@v4
2020
with:
2121
node-version: 20

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
"publish:release": "lerna run build && lerna publish",
2222
"report:coverage": "lerna run report:coverage --parallel",
2323
"bootstrap": "lerna bootstrap",
24-
"init": "pnpm install && pnpm run bootstrap"
24+
"init": "pnpm install && pnpm run bootstrap",
25+
"jsx-sync-types": "node packages/dom-expressions/src/jsx-update.mjs"
2526
},
2627
"devDependencies": {
2728
"@babel/core": "^7.20.12",
@@ -47,6 +48,5 @@
4748
"rollup-plugin-cleanup": "^3.2.1",
4849
"s-js": "0.4.9",
4950
"typescript": "~5.3.3"
50-
},
51-
"packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39"
51+
}
5252
}
Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
import babel from "@rollup/plugin-babel";
2-
import nodeResolve from "@rollup/plugin-node-resolve";
3-
import path from "path";
4-
5-
const plugins = [
6-
nodeResolve({
7-
extensions: [".js", ".ts"],
8-
rootDir: path.join(process.cwd(), "../.."),
9-
moduleDirectories: ["node_modules", "packages"]
10-
}),
11-
babel({
12-
extensions: ['.js', '.ts'],
13-
babelHelpers: "bundled",
14-
presets: ["@babel/preset-typescript"],
15-
exclude: 'node_modules/**',
16-
babelrc: false,
17-
configFile: false,
18-
retainLines: true
19-
})
20-
];
21-
22-
export default {
23-
input: "src/index.ts",
24-
external: ["@babel/plugin-syntax-jsx", "@babel/helper-module-imports", "@babel/types", "html-entities", "validate-html-nesting"],
25-
output: {
26-
file: "index.js",
27-
format: "cjs",
28-
exports: "auto"
29-
},
30-
plugins
31-
};
1+
import babel from "@rollup/plugin-babel";
2+
import nodeResolve from "@rollup/plugin-node-resolve";
3+
import path from "path";
4+
5+
const plugins = [
6+
nodeResolve({
7+
extensions: [".js", ".ts"],
8+
rootDir: path.join(process.cwd(), "../.."),
9+
moduleDirectories: ["node_modules", "packages"]
10+
}),
11+
babel({
12+
extensions: ['.js', '.ts'],
13+
babelHelpers: "bundled",
14+
presets: ["@babel/preset-typescript"],
15+
exclude: 'node_modules/**',
16+
babelrc: false,
17+
configFile: false,
18+
retainLines: true
19+
})
20+
];
21+
22+
export default {
23+
input: "src/index.ts",
24+
external: ["@babel/plugin-syntax-jsx", "@babel/helper-module-imports", "@babel/types", "html-entities"],
25+
output: {
26+
file: "index.js",
27+
format: "cjs",
28+
exports: "auto"
29+
},
30+
plugins
31+
};

packages/babel-plugin-jsx-dom-expressions/src/dom/element.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ export function setAttr(path, elem, name, value, { isSVG, dynamic, prevId, isCE,
259259
if (config.hydratable && namespace !== "prop") {
260260
return t.callExpression(registerImportMethod(path, "setProperty"), [
261261
elem,
262-
t.stringLiteral(name),
262+
t.stringLiteral(alias || name),
263263
value
264264
]);
265265
}
Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,4 @@
1-
import * as t from "@babel/types";
21
import config from "../config";
3-
import { isComponent } from "./utils";
4-
const { isValidHTMLNesting } = require("validate-html-nesting");
5-
6-
// From https://github.com/MananTank/babel-plugin-validate-jsx-nesting/blob/main/src/index.js
7-
const JSXValidator = {
8-
JSXElement(path) {
9-
const elName = path.node.openingElement.name;
10-
const parent = path.parent;
11-
12-
if (!t.isJSXElement(parent) || !t.isJSXIdentifier(elName)) return;
13-
const elTagName = elName.name;
14-
if (isComponent(elTagName)) return;
15-
const parentElName = parent.openingElement.name;
16-
if (!t.isJSXIdentifier(parentElName)) return;
17-
const parentElTagName = parentElName.name;
18-
if (!isComponent(parentElTagName)) {
19-
if (!isValidHTMLNesting(parentElTagName, elTagName)) {
20-
throw path.buildCodeFrameError(
21-
`Invalid JSX: <${elTagName}> cannot be child of <${parentElTagName}>`
22-
);
23-
}
24-
}
25-
}
26-
};
272

283
export default (path, { opts }) => {
294
const merged = (path.hub.file.metadata.config = Object.assign({}, config, opts));
@@ -44,5 +19,4 @@ export default (path, { opts }) => {
4419
return;
4520
}
4621
}
47-
if (merged.validate) path.traverse(JSXValidator);
4822
};

packages/babel-plugin-jsx-dom-expressions/src/shared/validate.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export function isInvalidMarkup(html) {
8787
/** Parse HTML. `browser` is a string with the supposed resulting html of a real `innerHTML` call */
8888
const browser = innerHTML(html);
8989

90-
if (html !== browser) {
90+
if (html.toLowerCase() !== browser.toLowerCase()) {
9191
return {
9292
html,
9393
browser

packages/babel-plugin-jsx-dom-expressions/test/__dom_compatible_fixtures__/attributeExpressions/code.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,3 +270,9 @@ const template86 = <div><video prop:poster="1.jpg"/></div>
270270
const template87 = <video bool:poster="1.jpg"/>
271271
const template88 = <div><video bool:poster="1.jpg"/></div>
272272

273+
const template89 = <video playsinline={value}/>
274+
const template90 = <video playsinline={true}/>
275+
const template91 = <video playsinline={false}/>
276+
const template92 = <video playsInline={value}/>
277+
const template93 = <video playsInline={true}/>
278+
const template94 = <video playsInline={false}/>

packages/babel-plugin-jsx-dom-expressions/test/__dom_compatible_fixtures__/attributeExpressions/output.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,4 +610,34 @@ const template86 = (() => {
610610
})();
611611
const template87 = _tmpl$58();
612612
const template88 = _tmpl$59();
613+
const template89 = (() => {
614+
var _el$107 = _tmpl$56();
615+
_el$107.playsInline = value;
616+
return _el$107;
617+
})();
618+
const template90 = (() => {
619+
var _el$108 = _tmpl$56();
620+
_el$108.playsInline = true;
621+
return _el$108;
622+
})();
623+
const template91 = (() => {
624+
var _el$109 = _tmpl$56();
625+
_el$109.playsInline = false;
626+
return _el$109;
627+
})();
628+
const template92 = (() => {
629+
var _el$110 = _tmpl$56();
630+
_el$110.playsInline = value;
631+
return _el$110;
632+
})();
633+
const template93 = (() => {
634+
var _el$111 = _tmpl$56();
635+
_el$111.playsInline = true;
636+
return _el$111;
637+
})();
638+
const template94 = (() => {
639+
var _el$112 = _tmpl$56();
640+
_el$112.playsInline = false;
641+
return _el$112;
642+
})();
613643
_$delegateEvents(["click", "input"]);

packages/babel-plugin-jsx-dom-expressions/test/__dom_hydratable_fixtures__/attributeExpressions/code.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,3 +204,10 @@ const template41 = (
204204
);
205205

206206
const template42 = <div a a="" a='' a={true} a={false} a={0} a={''} a={""} a={undefined} a={null} a={void 0} a/>
207+
208+
const template43 = <video playsinline={value}/>
209+
const template44 = <video playsinline={true}/>
210+
const template45 = <video playsinline={false}/>
211+
const template46 = <video playsInline={value}/>
212+
const template47 = <video playsInline={true}/>
213+
const template48 = <video playsInline={false}/>

packages/babel-plugin-jsx-dom-expressions/test/__dom_hydratable_fixtures__/attributeExpressions/output.js

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ var _tmpl$ = /*#__PURE__*/ _$template(`<div id=main><h1 class=base id=my-h1><a h
3737
_tmpl$18 = /*#__PURE__*/ _$template(`<button>`),
3838
_tmpl$19 = /*#__PURE__*/ _$template(`<input value=10>`),
3939
_tmpl$20 = /*#__PURE__*/ _$template(`<select><option>Red</option><option>Blue`),
40-
_tmpl$21 = /*#__PURE__*/ _$template(`<div a a a a=0 a a a>`);
40+
_tmpl$21 = /*#__PURE__*/ _$template(`<div a a a a=0 a a a>`),
41+
_tmpl$22 = /*#__PURE__*/ _$template(`<video>`);
4142
import * as styles from "./styles.module.css";
4243
const selected = true;
4344
let id = "my-h1";
@@ -236,7 +237,7 @@ const template20 = (() => {
236237
_el$28 = _el$27.nextSibling;
237238
_$addEventListener(_el$27, "input", doSomething, true);
238239
_$addEventListener(_el$28, "input", doSomethingElse, true);
239-
_$setProperty(_el$28, "readonly", value);
240+
_$setProperty(_el$28, "readOnly", value);
240241
_$effect(
241242
_p$ => {
242243
var _v$4 = min(),
@@ -455,4 +456,34 @@ const template42 = (() => {
455456
_$setAttribute(_el$64, "a", void 0);
456457
return _el$64;
457458
})();
459+
const template43 = (() => {
460+
var _el$65 = _$getNextElement(_tmpl$22);
461+
_$setProperty(_el$65, "playsInline", value);
462+
return _el$65;
463+
})();
464+
const template44 = (() => {
465+
var _el$66 = _$getNextElement(_tmpl$22);
466+
_$setProperty(_el$66, "playsInline", true);
467+
return _el$66;
468+
})();
469+
const template45 = (() => {
470+
var _el$67 = _$getNextElement(_tmpl$22);
471+
_$setProperty(_el$67, "playsInline", false);
472+
return _el$67;
473+
})();
474+
const template46 = (() => {
475+
var _el$68 = _$getNextElement(_tmpl$22);
476+
_$setProperty(_el$68, "playsInline", value);
477+
return _el$68;
478+
})();
479+
const template47 = (() => {
480+
var _el$69 = _$getNextElement(_tmpl$22);
481+
_$setProperty(_el$69, "playsInline", true);
482+
return _el$69;
483+
})();
484+
const template48 = (() => {
485+
var _el$70 = _$getNextElement(_tmpl$22);
486+
_$setProperty(_el$70, "playsInline", false);
487+
return _el$70;
488+
})();
458489
_$delegateEvents(["click", "input"]);

0 commit comments

Comments
 (0)