Skip to content

Commit

Permalink
chore (labs/compiler, labs/ssr, localize-tools): update parse5/tools (#…
Browse files Browse the repository at this point in the history
…4175)

Bumping `@parse5/tools` up so we can benefit from this easier import:

```ts
// new...

import {Element} from '@parse5/tools';

// previously...

import {DefaultTreeAdapterMap} from 'parse5';
type Element = DefaultTreeAdapterMap['element'];
```
  • Loading branch information
43081j committed Sep 3, 2023
1 parent c9f12f6 commit 84bb052
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 46 deletions.
7 changes: 7 additions & 0 deletions .changeset/swift-badgers-suffer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@lit/localize-tools': patch
'@lit-labs/compiler': patch
'@lit-labs/ssr': patch
---

Update parse5/tools to simplify importing of node types from the default tree adapter
38 changes: 12 additions & 26 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/labs/compiler/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@
}
},
"dependencies": {
"@parse5/tools": "^0.2.0",
"@parse5/tools": "^0.3.0",
"lit-html": "^2.7.5",
"parse5": "^7.1.2",
"typescript": "~5.2.0"
Expand Down
2 changes: 1 addition & 1 deletion packages/labs/ssr/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@
"@lit-labs/ssr-client": "^1.1.0",
"@lit-labs/ssr-dom-shim": "^1.1.0",
"@lit/reactive-element": "^1.6.0",
"@parse5/tools": "^0.1.0",
"@parse5/tools": "^0.3.0",
"@types/node": "^16.0.0",
"enhanced-resolve": "^5.10.0",
"lit": "^2.7.0",
Expand Down
13 changes: 9 additions & 4 deletions packages/labs/ssr/src/lib/util/parse5-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@
* SPDX-License-Identifier: BSD-3-Clause
*/

import {DefaultTreeAdapterMap} from 'parse5';
import {traverse, replaceWith, isElementNode} from '@parse5/tools';
import {
traverse,
replaceWith,
isElementNode,
Element,
Node,
} from '@parse5/tools';

export function removeFakeRootElements(node: DefaultTreeAdapterMap['node']) {
const fakeRootElements: DefaultTreeAdapterMap['element'][] = [];
export function removeFakeRootElements(node: Node) {
const fakeRootElements: Element[] = [];

traverse(node, {
'pre:node': (node) => {
Expand Down
1 change: 1 addition & 0 deletions packages/localize-tools/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@
"jsonschema": "^1.4.0",
"lit": "^2.7.0",
"minimist": "^1.2.5",
"@parse5/tools": "^0.3.0",
"parse5": "^7.1.1",
"source-map-support": "^0.5.19",
"typescript": "^4.7.4"
Expand Down
23 changes: 9 additions & 14 deletions packages/localize-tools/src/program-analysis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import ts from 'typescript';
import * as parse5 from 'parse5';
import {ChildNode, ParentNode, TextNode, CommentNode} from '@parse5/tools';
import {ProgramMessage, Placeholder} from './messages.js';
import {createDiagnostic} from './typescript.js';
import {
Expand Down Expand Up @@ -514,15 +515,13 @@ function replaceHtmlWithPlaceholders(
): Array<string | Omit<Placeholder, 'index'>> {
const components: Array<string | Omit<Placeholder, 'index'>> = [];

const traverse = (node: parse5.DefaultTreeAdapterMap['childNode']): void => {
const traverse = (node: ChildNode): void => {
if (node.nodeName === '#text') {
const text = (node as parse5.DefaultTreeAdapterMap['textNode']).value;
const text = (node as TextNode).value;
components.push(text);
} else if (node.nodeName === '#comment') {
components.push({
untranslatable: serializeComment(
node as parse5.DefaultTreeAdapterMap['commentNode']
),
untranslatable: serializeComment(node as CommentNode),
});
} else {
const {open, close} = serializeOpenCloseTags(node);
Expand Down Expand Up @@ -551,19 +550,17 @@ function replaceHtmlWithPlaceholders(
*
* <b class="red">foo</b> --> {open: '<b class="red">, close: '</b>'}
*/
function serializeOpenCloseTags(
node: parse5.DefaultTreeAdapterMap['childNode']
): {
function serializeOpenCloseTags(node: ChildNode): {
open: string;
close: string;
} {
const withoutChildren: parse5.DefaultTreeAdapterMap['childNode'] = {
const withoutChildren: ChildNode = {
...node,
childNodes: [],
};
const fakeParent = {
childNodes: [withoutChildren],
} as parse5.DefaultTreeAdapterMap['parentNode'];
} as ParentNode;
const serialized = parse5.serialize(fakeParent);
const lastLt = serialized.lastIndexOf('<');
const open = serialized.slice(0, lastLt);
Expand All @@ -578,12 +575,10 @@ function serializeOpenCloseTags(
*
* {data: "foo"} --> "<!-- foo -->"
*/
function serializeComment(
comment: parse5.DefaultTreeAdapterMap['commentNode']
): string {
function serializeComment(comment: CommentNode): string {
return parse5.serialize({
childNodes: [comment],
} as parse5.DefaultTreeAdapterMap['parentNode']);
} as ParentNode);
}

/**
Expand Down

0 comments on commit 84bb052

Please sign in to comment.