hyper-html-api 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/conformance/MANIFEST.json +2 -2
- package/conformance/cases/no-data-list-skipped.expected.json +6 -0
- package/conformance/cases/no-data-list-skipped.html +1 -0
- package/conformance/cases/no-data-list-skipped.meta +4 -0
- package/conformance/cases/no-data-list-skipped.parsed.json +3 -0
- package/conformance/cases/no-data-list-skipped.rules +1 -0
- package/conformance/cases/no-data-text-projected.expected.json +3 -0
- package/conformance/cases/no-data-text-projected.html +1 -0
- package/conformance/cases/no-data-text-projected.meta +4 -0
- package/conformance/cases/no-data-text-projected.parsed.json +3 -0
- package/conformance/cases/no-data-text-projected.rules +1 -0
- package/conformance/cases/props-type-is-attribute.expected.json +5 -0
- package/conformance/cases/props-type-is-attribute.meta +4 -0
- package/conformance/cases/write-attr-app-scheme.after.html +1 -0
- package/conformance/cases/write-attr-app-scheme.after.json +3 -0
- package/conformance/cases/write-attr-app-scheme.data.json +1 -0
- package/conformance/cases/write-attr-app-scheme.html +1 -0
- package/conformance/cases/write-attr-app-scheme.meta +4 -0
- package/conformance/cases/write-attr-app-scheme.write.json +4 -0
- package/conformance/cases/write-attr-href.after.html +1 -0
- package/conformance/cases/write-attr-href.after.json +3 -0
- package/conformance/cases/write-attr-href.data.json +1 -0
- package/conformance/cases/write-attr-href.html +1 -0
- package/conformance/cases/write-attr-href.meta +4 -0
- package/conformance/cases/write-attr-href.write.json +4 -0
- package/conformance/cases/write-checked-false.after.html +1 -0
- package/conformance/cases/write-checked-false.after.json +3 -0
- package/conformance/cases/write-checked-false.data.json +1 -0
- package/conformance/cases/write-checked-false.html +1 -0
- package/conformance/cases/write-checked-false.meta +4 -0
- package/conformance/cases/write-checked-false.write.json +4 -0
- package/conformance/cases/write-checked-true.after.html +1 -0
- package/conformance/cases/write-checked-true.after.json +3 -0
- package/conformance/cases/write-checked-true.data.json +1 -0
- package/conformance/cases/write-checked-true.html +1 -0
- package/conformance/cases/write-checked-true.meta +4 -0
- package/conformance/cases/write-checked-true.write.json +4 -0
- package/conformance/cases/write-crlf-multi.after.html +12 -0
- package/conformance/cases/write-crlf-multi.after.json +8 -0
- package/conformance/cases/write-crlf-multi.data.json +1 -0
- package/conformance/cases/write-crlf-multi.html +12 -0
- package/conformance/cases/write-crlf-multi.meta +4 -0
- package/conformance/cases/write-crlf-multi.write.json +4 -0
- package/conformance/cases/write-fallback-implied.after.html +1 -0
- package/conformance/cases/write-fallback-implied.after.json +3 -0
- package/conformance/cases/write-fallback-implied.data.json +1 -0
- package/conformance/cases/write-fallback-implied.html +1 -0
- package/conformance/cases/write-fallback-implied.meta +4 -0
- package/conformance/cases/write-fallback-implied.write.json +4 -0
- package/conformance/cases/write-flatten.after.html +1 -0
- package/conformance/cases/write-flatten.after.json +3 -0
- package/conformance/cases/write-flatten.data.json +1 -0
- package/conformance/cases/write-flatten.html +1 -0
- package/conformance/cases/write-flatten.meta +4 -0
- package/conformance/cases/write-flatten.write.json +4 -0
- package/conformance/cases/write-list-empty-no-seed.data.json +1 -0
- package/conformance/cases/write-list-empty-no-seed.error.json +8 -0
- package/conformance/cases/write-list-empty-no-seed.html +1 -0
- package/conformance/cases/write-list-empty-no-seed.meta +4 -0
- package/conformance/cases/write-list-grow-from-template.after.html +1 -0
- package/conformance/cases/write-list-grow-from-template.after.json +5 -0
- package/conformance/cases/write-list-grow-from-template.data.json +1 -0
- package/conformance/cases/write-list-grow-from-template.html +1 -0
- package/conformance/cases/write-list-grow-from-template.meta +4 -0
- package/conformance/cases/write-list-grow-from-template.write.json +4 -0
- package/conformance/cases/write-list-object-clone.after.html +1 -0
- package/conformance/cases/write-list-object-clone.after.json +12 -0
- package/conformance/cases/write-list-object-clone.data.json +1 -0
- package/conformance/cases/write-list-object-clone.html +1 -0
- package/conformance/cases/write-list-object-clone.meta +4 -0
- package/conformance/cases/write-list-object-clone.write.json +4 -0
- package/conformance/cases/write-list-scalar-grow.after.html +4 -0
- package/conformance/cases/write-list-scalar-grow.after.json +7 -0
- package/conformance/cases/write-list-scalar-grow.data.json +1 -0
- package/conformance/cases/write-list-scalar-grow.html +4 -0
- package/conformance/cases/write-list-scalar-grow.meta +4 -0
- package/conformance/cases/write-list-scalar-grow.write.json +4 -0
- package/conformance/cases/write-list-scalar-shrink.after.html +4 -0
- package/conformance/cases/write-list-scalar-shrink.after.json +5 -0
- package/conformance/cases/write-list-scalar-shrink.data.json +1 -0
- package/conformance/cases/write-list-scalar-shrink.html +4 -0
- package/conformance/cases/write-list-scalar-shrink.meta +4 -0
- package/conformance/cases/write-list-scalar-shrink.write.json +4 -0
- package/conformance/cases/write-list-shrink-zero.after.html +1 -0
- package/conformance/cases/write-list-shrink-zero.after.json +3 -0
- package/conformance/cases/write-list-shrink-zero.data.json +1 -0
- package/conformance/cases/write-list-shrink-zero.html +1 -0
- package/conformance/cases/write-list-shrink-zero.meta +4 -0
- package/conformance/cases/write-list-shrink-zero.write.json +4 -0
- package/conformance/cases/write-no-data-kept.after.html +1 -0
- package/conformance/cases/write-no-data-kept.after.json +3 -0
- package/conformance/cases/write-no-data-kept.data.json +1 -0
- package/conformance/cases/write-no-data-kept.html +1 -0
- package/conformance/cases/write-no-data-kept.meta +4 -0
- package/conformance/cases/write-no-data-kept.write.json +4 -0
- package/conformance/cases/write-no-rules-tag.data.json +1 -0
- package/conformance/cases/write-no-rules-tag.error.json +6 -0
- package/conformance/cases/write-no-rules-tag.html +1 -0
- package/conformance/cases/write-no-rules-tag.meta +4 -0
- package/conformance/cases/write-noop.after.html +3 -0
- package/conformance/cases/write-noop.after.json +3 -0
- package/conformance/cases/write-noop.data.json +1 -0
- package/conformance/cases/write-noop.html +3 -0
- package/conformance/cases/write-noop.meta +4 -0
- package/conformance/cases/write-noop.write.json +4 -0
- package/conformance/cases/write-outerhtml-unchanged.after.html +1 -0
- package/conformance/cases/write-outerhtml-unchanged.after.json +3 -0
- package/conformance/cases/write-outerhtml-unchanged.data.json +1 -0
- package/conformance/cases/write-outerhtml-unchanged.html +1 -0
- package/conformance/cases/write-outerhtml-unchanged.meta +4 -0
- package/conformance/cases/write-outerhtml-unchanged.write.json +4 -0
- package/conformance/cases/write-readonly-changed.data.json +1 -0
- package/conformance/cases/write-readonly-changed.error.json +6 -0
- package/conformance/cases/write-readonly-changed.html +1 -0
- package/conformance/cases/write-readonly-changed.meta +4 -0
- package/conformance/cases/write-readonly-unchanged.after.html +1 -0
- package/conformance/cases/write-readonly-unchanged.after.json +4 -0
- package/conformance/cases/write-readonly-unchanged.data.json +1 -0
- package/conformance/cases/write-readonly-unchanged.html +1 -0
- package/conformance/cases/write-readonly-unchanged.meta +4 -0
- package/conformance/cases/write-readonly-unchanged.write.json +4 -0
- package/conformance/cases/write-refused-animate.data.json +1 -0
- package/conformance/cases/write-refused-animate.error.json +11 -0
- package/conformance/cases/write-refused-animate.html +1 -0
- package/conformance/cases/write-refused-animate.meta +4 -0
- package/conformance/cases/write-refused-attr-name.data.json +1 -0
- package/conformance/cases/write-refused-attr-name.error.json +11 -0
- package/conformance/cases/write-refused-attr-name.html +1 -0
- package/conformance/cases/write-refused-attr-name.meta +4 -0
- package/conformance/cases/write-refused-data-url.data.json +1 -0
- package/conformance/cases/write-refused-data-url.error.json +11 -0
- package/conformance/cases/write-refused-data-url.html +1 -0
- package/conformance/cases/write-refused-data-url.meta +4 -0
- package/conformance/cases/write-refused-innerhtml.data.json +1 -0
- package/conformance/cases/write-refused-innerhtml.error.json +11 -0
- package/conformance/cases/write-refused-innerhtml.html +1 -0
- package/conformance/cases/write-refused-innerhtml.meta +4 -0
- package/conformance/cases/write-refused-javascript-url.data.json +1 -0
- package/conformance/cases/write-refused-javascript-url.error.json +11 -0
- package/conformance/cases/write-refused-javascript-url.html +1 -0
- package/conformance/cases/write-refused-javascript-url.meta +4 -0
- package/conformance/cases/write-refused-list-removes-rules-tag.data.json +1 -0
- package/conformance/cases/write-refused-list-removes-rules-tag.error.json +11 -0
- package/conformance/cases/write-refused-list-removes-rules-tag.html +1 -0
- package/conformance/cases/write-refused-list-removes-rules-tag.meta +4 -0
- package/conformance/cases/write-refused-multiple.data.json +1 -0
- package/conformance/cases/write-refused-multiple.error.json +15 -0
- package/conformance/cases/write-refused-multiple.html +1 -0
- package/conformance/cases/write-refused-multiple.meta +4 -0
- package/conformance/cases/write-refused-onclick.data.json +1 -0
- package/conformance/cases/write-refused-onclick.error.json +11 -0
- package/conformance/cases/write-refused-onclick.html +1 -0
- package/conformance/cases/write-refused-onclick.meta +4 -0
- package/conformance/cases/write-refused-rules-tag-ancestor.data.json +1 -0
- package/conformance/cases/write-refused-rules-tag-ancestor.error.json +11 -0
- package/conformance/cases/write-refused-rules-tag-ancestor.html +1 -0
- package/conformance/cases/write-refused-rules-tag-ancestor.meta +4 -0
- package/conformance/cases/write-refused-script.data.json +1 -0
- package/conformance/cases/write-refused-script.error.json +11 -0
- package/conformance/cases/write-refused-script.html +1 -0
- package/conformance/cases/write-refused-script.meta +4 -0
- package/conformance/cases/write-shape-mismatch.data.json +1 -0
- package/conformance/cases/write-shape-mismatch.error.json +12 -0
- package/conformance/cases/write-shape-mismatch.html +1 -0
- package/conformance/cases/write-shape-mismatch.meta +4 -0
- package/conformance/cases/write-text-basic.after.html +3 -0
- package/conformance/cases/write-text-basic.after.json +3 -0
- package/conformance/cases/write-text-basic.data.json +1 -0
- package/conformance/cases/write-text-basic.html +3 -0
- package/conformance/cases/write-text-basic.meta +4 -0
- package/conformance/cases/write-text-basic.write.json +4 -0
- package/conformance/cases/write-text-escape.after.html +1 -0
- package/conformance/cases/write-text-escape.after.json +3 -0
- package/conformance/cases/write-text-escape.data.json +1 -0
- package/conformance/cases/write-text-escape.html +1 -0
- package/conformance/cases/write-text-escape.meta +4 -0
- package/conformance/cases/write-text-escape.write.json +4 -0
- package/conformance/cases/write-text-null-clears.after.html +1 -0
- package/conformance/cases/write-text-null-clears.after.json +3 -0
- package/conformance/cases/write-text-null-clears.data.json +1 -0
- package/conformance/cases/write-text-null-clears.html +1 -0
- package/conformance/cases/write-text-null-clears.meta +4 -0
- package/conformance/cases/write-text-null-clears.write.json +4 -0
- package/conformance/cases/write-type-attribute.after.html +1 -0
- package/conformance/cases/write-type-attribute.after.json +3 -0
- package/conformance/cases/write-type-attribute.data.json +1 -0
- package/conformance/cases/write-type-attribute.html +1 -0
- package/conformance/cases/write-type-attribute.meta +4 -0
- package/conformance/cases/write-type-attribute.write.json +4 -0
- package/conformance/cases/write-unknown-key.data.json +1 -0
- package/conformance/cases/write-unknown-key.error.json +11 -0
- package/conformance/cases/write-unknown-key.html +3 -0
- package/conformance/cases/write-unknown-key.meta +4 -0
- package/conformance/cases/write-unmatched.data.json +1 -0
- package/conformance/cases/write-unmatched.error.json +14 -0
- package/conformance/cases/write-unmatched.html +1 -0
- package/conformance/cases/write-unmatched.meta +4 -0
- package/conformance/write-policy.json +78 -0
- package/dist/hyper-html-api.engine.min.js +1 -1
- package/dist/hyper-html-api.min.js +5 -4
- package/dist/hyper-html-api.upgrade.min.js +2 -2
- package/package.json +4 -3
- package/packed-contract.json +1 -1
- package/src/adapters/cheerio.js +105 -10
- package/src/engine/apply.js +2 -0
- package/src/engine/errors.js +25 -0
- package/src/engine/index.js +3 -0
- package/src/engine/splice.js +118 -0
- package/src/engine/write-plan.js +52 -0
- package/src/engine/write-policy.js +136 -0
- package/src/write.js +29 -0
- package/conformance/cases/props-type-is-node-type.expected.json +0 -5
- package/conformance/cases/props-type-is-node-type.meta +0 -11
- /package/conformance/cases/{props-type-is-node-type.html → props-type-is-attribute.html} +0 -0
- /package/conformance/cases/{props-type-is-node-type.parsed.json → props-type-is-attribute.parsed.json} +0 -0
- /package/conformance/cases/{props-type-is-node-type.rules → props-type-is-attribute.rules} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{o:"#h@outerHTML"}</script><h1 id=h>Hi</h1>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"t":"Hi","tag":"H2"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{t:"#h",tag:"#h@tagName"}</script><h1 id=h>Hi</h1>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{t:"#h",tag:"#h@tagName"}</script><h1 id=h>Hi</h1>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"t":"Hi","tag":"H1"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{t:"#h",tag:"#h@tagName"}</script><h1 id=h>Hi</h1>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"v":"javascript:alert(1)"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{v:"#a@to"}</script><svg><animate id=a attributeName="href" to="#x"></animate></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"v":"javascript:alert(1)"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{v:"#a@href "}</script><a id=a href="/x">x</a>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"h":"data:text/html,x"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{h:"#a@href"}</script><a id=a href="/">x</a>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"h":"<b>y</b>"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{h:"#p@innerHTML"}</script><p id=p>x</p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"h":" JaVaScRiPt:alert(1)"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{h:"#a@href"}</script><a id=a href="/">x</a>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"r":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<div id=c><p class=r>A</p><p class=r>B<script type="application/json" data-rules-name="api" data-rules-version="1">{r:"#c .r[]"}</script></p></div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"h":"javascript:1","o":"x"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "WriteRefused",
|
|
3
|
+
"message": "write refused: 2 write(s) broke the content-only policy",
|
|
4
|
+
"status": 400,
|
|
5
|
+
"details": [
|
|
6
|
+
{
|
|
7
|
+
"target": "<a#a>",
|
|
8
|
+
"reason": "\"javascript:\" URLs are not allowed in \"href\""
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"target": "<p#p>",
|
|
12
|
+
"reason": "attribute \"onclick\" can run script"
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{h:"#a@href",o:"#p@onclick"}</script><a id=a href="/">x</a><p id=p>y</p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"h":"alert(1)"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{h:"#a@onclick"}</script><a id=a>x</a>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"t":"gone"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<div id=d><p>x</p><script data-rules-name="api" data-rules-version="1">{t:"#d"}</script></div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"c":"alert(1)"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{c:"#s"}</script><script id=s>x</script>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"items":"A"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{items:"li[]"}</script><ul><li>A</li></ul>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"title":"World"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{t:"#t"}</script><p id="t">a < b & c</p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"t":"a < b & c"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{t:"#t"}</script><p id=t>x</p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{t:"#t"}</script><p id="t"></p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"t":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{t:"#t"}</script><p id=t>x</p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{t:"#i@type"}</script><input id="i" type="email" name="q">
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"t":"email"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{t:"#i@type"}</script><input id=i type=text name=q>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"titel":"x"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"sub":"x"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script data-rules-name="api" data-rules-version="1">{sub:"h2"}</script><p>x</p>
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"refusedRuleForms": [
|
|
3
|
+
"innerHTML",
|
|
4
|
+
"outerHTML"
|
|
5
|
+
],
|
|
6
|
+
"refusedTargets": [
|
|
7
|
+
"script",
|
|
8
|
+
"style",
|
|
9
|
+
"template",
|
|
10
|
+
"noscript",
|
|
11
|
+
"iframe",
|
|
12
|
+
"object",
|
|
13
|
+
"embed",
|
|
14
|
+
"xmp",
|
|
15
|
+
"plaintext",
|
|
16
|
+
"noembed",
|
|
17
|
+
"noframes",
|
|
18
|
+
"meta",
|
|
19
|
+
"link",
|
|
20
|
+
"base",
|
|
21
|
+
"animate",
|
|
22
|
+
"set",
|
|
23
|
+
"animatemotion",
|
|
24
|
+
"animatetransform"
|
|
25
|
+
],
|
|
26
|
+
"refusedAttributes": [
|
|
27
|
+
"style",
|
|
28
|
+
"srcdoc",
|
|
29
|
+
"is",
|
|
30
|
+
"http-equiv",
|
|
31
|
+
"sandbox",
|
|
32
|
+
"allow",
|
|
33
|
+
"nonce",
|
|
34
|
+
"integrity",
|
|
35
|
+
"charset",
|
|
36
|
+
"htmlclaytoken",
|
|
37
|
+
"htmlclayid",
|
|
38
|
+
"data-rules-name",
|
|
39
|
+
"data-rules-version",
|
|
40
|
+
"clay",
|
|
41
|
+
"contenteditable",
|
|
42
|
+
"no-save",
|
|
43
|
+
"no-snapshot",
|
|
44
|
+
"no-trigger-autosave",
|
|
45
|
+
"no-dirty",
|
|
46
|
+
"no-watch",
|
|
47
|
+
"no-undo",
|
|
48
|
+
"no-data",
|
|
49
|
+
"freeze",
|
|
50
|
+
"editor-ui"
|
|
51
|
+
],
|
|
52
|
+
"refusedAttributePrefixes": [
|
|
53
|
+
"on"
|
|
54
|
+
],
|
|
55
|
+
"urlAttributes": [
|
|
56
|
+
"href",
|
|
57
|
+
"src",
|
|
58
|
+
"srcset",
|
|
59
|
+
"action",
|
|
60
|
+
"formaction",
|
|
61
|
+
"poster",
|
|
62
|
+
"cite",
|
|
63
|
+
"data",
|
|
64
|
+
"ping",
|
|
65
|
+
"background",
|
|
66
|
+
"longdesc",
|
|
67
|
+
"usemap",
|
|
68
|
+
"xlink:href",
|
|
69
|
+
"manifest",
|
|
70
|
+
"codebase",
|
|
71
|
+
"icon"
|
|
72
|
+
],
|
|
73
|
+
"refusedSchemes": [
|
|
74
|
+
"javascript",
|
|
75
|
+
"vbscript",
|
|
76
|
+
"data"
|
|
77
|
+
]
|
|
78
|
+
}
|