Skip to content

Commit 23a8b0d

Browse files
committed
Add type TrustedHTML to methods used to append HTML
1 parent eee2ef7 commit 23a8b0d

File tree

7 files changed

+35
-98
lines changed

7 files changed

+35
-98
lines changed

packages/@glimmer/interfaces/lib/dom/attributes.d.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { TrustedHTML } from 'trusted-types/lib';
2+
13
import type { Maybe, Nullable } from '../core.js';
24
import type { ElementOperations, Environment, ModifierInstance } from '../runtime.js';
35
import type { Stack } from '../stack.js';
@@ -45,7 +47,7 @@ export interface DOMStack {
4547
appendText(string: string): SimpleText;
4648
appendComment(string: string): SimpleComment;
4749

48-
appendDynamicHTML(value: string): void;
50+
appendDynamicHTML(value: string | TrustedHTML): void;
4951
appendDynamicText(value: string): SimpleText;
5052
appendDynamicFragment(value: SimpleDocumentFragment): void;
5153
appendDynamicNode(value: SimpleNode): void;

packages/@glimmer/interfaces/lib/dom/changes.d.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
1+
import type { TrustedHTML } from 'trusted-types/lib';
2+
13
import type { Nullable } from '../core.js';
24
import type { Bounds } from './bounds.js';
35
import type { Namespace, SimpleComment, SimpleElement, SimpleNode, SimpleText } from './simple.js';
46

57
export interface GlimmerDOMOperations {
68
createElement(tag: string, context?: SimpleElement): SimpleElement;
79
insertBefore(parent: SimpleElement, node: SimpleNode, reference: Nullable<SimpleNode>): void;
8-
insertHTMLBefore(parent: SimpleElement, nextSibling: Nullable<SimpleNode>, html: string): Bounds;
10+
insertHTMLBefore(
11+
parent: SimpleElement,
12+
nextSibling: Nullable<SimpleNode>,
13+
html: string | TrustedHTML
14+
): Bounds;
915
createTextNode(text: string): SimpleText;
1016
createComment(data: string): SimpleComment;
1117
}

packages/@glimmer/interfaces/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"test:types": "tsc --noEmit"
2121
},
2222
"dependencies": {
23-
"@simple-dom/interface": "^1.4.0"
23+
"@simple-dom/interface": "^1.4.0",
24+
"@types/trusted-types": "^2.0.7"
2425
},
2526
"devDependencies": {
2627
"@glimmer-workspace/build-support": "workspace:^",

packages/@glimmer/runtime/lib/compiled/opcodes/content.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ APPEND_OPCODES.add(Op.AppendHTML, (vm) => {
9999
let value = isEmpty(rawValue)
100100
? ''
101101
: isTrustedHTML(rawValue)
102-
? (rawValue as string)
102+
? (rawValue)
103103
: String(rawValue);
104104

105105
vm.elements().appendDynamicHTML(value);

packages/@glimmer/runtime/lib/dom/normalize.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Dict, SimpleDocumentFragment, SimpleNode } from '@glimmer/interfaces';
2-
import type { TrustedTypesWindow } from 'trusted-types/lib';
2+
import type { TrustedHTML,TrustedTypesWindow } from 'trusted-types/lib';
33

44
export interface SafeString {
55
toHTML(): string;
@@ -52,7 +52,7 @@ if (typeof window !== 'undefined') {
5252
}
5353
}
5454

55-
export function isTrustedHTML(value: unknown): boolean {
55+
export function isTrustedHTML(value: unknown): value is TrustedHTML {
5656
return isHTML ? isHTML(value) : false;
5757
}
5858

packages/@glimmer/runtime/lib/vm/element-builder.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import type {
1919
SimpleText,
2020
UpdatableBlock,
2121
} from '@glimmer/interfaces';
22+
import type { TrustedHTML } from 'trusted-types/lib';
2223
import { destroy, registerDestructor } from '@glimmer/destroyable';
2324
import { assert, expect, Stack } from '@glimmer/util';
2425

@@ -301,7 +302,7 @@ export class NewElementBuilder implements ElementBuilder {
301302
}
302303
}
303304

304-
__appendHTML(html: string): Bounds {
305+
__appendHTML(html: string| TrustedHTML): Bounds {
305306
return this.dom.insertHTMLBefore(this.element, this.nextSibling, html);
306307
}
307308

0 commit comments

Comments
 (0)