Skip to content

Commit ad2af2d

Browse files
committed
enforce Error type and add test
1 parent 6ffb1f9 commit ad2af2d

File tree

3 files changed

+18
-16
lines changed

3 files changed

+18
-16
lines changed

custom-elements.json

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
{
1010
"kind": "variable",
1111
"name": "IncludeFragmentElement",
12-
"default": "class extends HTMLElement {\n constructor() {\n super(...arguments);\n _IncludeFragmentElement_instances.add(this);\n _IncludeFragmentElement_busy.set(this, false);\n _IncludeFragmentElement_observer.set(this, new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n const { target } = entry;\n __classPrivateFieldGet(this, _IncludeFragmentElement_observer, \"f\").unobserve(target);\n if (!(target instanceof IncludeFragmentElement))\n return;\n if (target.loading === \"lazy\") {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n }\n }\n }, {\n rootMargin: \"0px 0px 256px 0px\",\n threshold: 0.01\n }));\n }\n static define(tag = \"include-fragment\", registry = customElements) {\n registry.define(tag, this);\n return this;\n }\n static setCSPTrustedTypesPolicy(policy) {\n cspTrustedTypesPolicyPromise = policy === null ? policy : Promise.resolve(policy);\n }\n static get observedAttributes() {\n return [\"src\", \"loading\"];\n }\n get src() {\n const src = this.getAttribute(\"src\");\n if (src) {\n const link = this.ownerDocument.createElement(\"a\");\n link.href = src;\n return link.href;\n } else {\n return \"\";\n }\n }\n set src(val) {\n this.setAttribute(\"src\", val);\n }\n get loading() {\n if (this.getAttribute(\"loading\") === \"lazy\")\n return \"lazy\";\n return \"eager\";\n }\n set loading(value) {\n this.setAttribute(\"loading\", value);\n }\n get accept() {\n return this.getAttribute(\"accept\") || \"\";\n }\n set accept(val) {\n this.setAttribute(\"accept\", val);\n }\n get data() {\n return __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getStringOrErrorData).call(this);\n }\n attributeChangedCallback(attribute, oldVal) {\n if (attribute === \"src\") {\n if (this.isConnected && this.loading === \"eager\") {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n } else if (attribute === \"loading\") {\n if (this.isConnected && oldVal !== \"eager\" && this.loading === \"eager\") {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n }\n }\n connectedCallback() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: \"open\" });\n const style = document.createElement(\"style\");\n style.textContent = `:host {display: block;}`;\n this.shadowRoot.append(style, document.createElement(\"slot\"));\n }\n if (this.src && this.loading === \"eager\") {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n if (this.loading === \"lazy\") {\n __classPrivateFieldGet(this, _IncludeFragmentElement_observer, \"f\").observe(this);\n }\n }\n request() {\n const src = this.src;\n if (!src) {\n throw new Error(\"missing src\");\n }\n return new Request(src, {\n method: \"GET\",\n credentials: \"same-origin\",\n headers: {\n Accept: this.accept || \"text/html\"\n }\n });\n }\n load() {\n return __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getStringOrErrorData).call(this);\n }\n fetch(request) {\n return fetch(request);\n }\n refetch() {\n privateData.delete(this);\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n}"
12+
"default": "class _IncludeFragmentElement extends HTMLElement {\n static"
1313
},
1414
{
1515
"kind": "variable",
16-
"name": "dist_default",
16+
"name": "index_default",
1717
"default": "IncludeFragmentElement"
1818
}
1919
],
@@ -30,7 +30,7 @@
3030
"kind": "js",
3131
"name": "default",
3232
"declaration": {
33-
"name": "dist_default",
33+
"name": "index_default",
3434
"module": "dist/bundle.js"
3535
}
3636
}
@@ -188,12 +188,6 @@
188188
}
189189
]
190190
},
191-
{
192-
"kind": "javascript-module",
193-
"path": "test/test.js",
194-
"declarations": [],
195-
"exports": []
196-
},
197191
{
198192
"kind": "javascript-module",
199193
"path": "src/include-fragment-element-define.ts",
@@ -383,6 +377,13 @@
383377
"type": {
384378
"text": "string[]"
385379
}
380+
},
381+
{
382+
"name": "error",
383+
"optional": true,
384+
"type": {
385+
"text": "Error"
386+
}
386387
}
387388
]
388389
},
@@ -408,12 +409,6 @@
408409
"type": {
409410
"text": "CustomEvent"
410411
}
411-
},
412-
{
413-
"name": "eventType",
414-
"type": {
415-
"text": "Event"
416-
}
417412
}
418413
],
419414
"attributes": [
@@ -471,6 +466,12 @@
471466
}
472467
}
473468
]
469+
},
470+
{
471+
"kind": "javascript-module",
472+
"path": "test/test.js",
473+
"declarations": [],
474+
"exports": []
474475
}
475476
]
476477
}

src/include-fragment-element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ export class IncludeFragmentElement extends HTMLElement {
258258
// Dispatch `error` and `loadend` async to allow
259259
// the `load()` promise to resolve _before_ these
260260
// events are fired.
261-
this.#task(['error', 'loadend'], error)
261+
this.#task(['error', 'loadend'], error as Error)
262262
throw error
263263
}
264264
}

test/test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ suite('include-fragment-element', function () {
342342
const event = await when(div.firstChild, 'error')
343343
assert.equal(event.bubbles, false)
344344
assert.equal(event.cancelable, false)
345+
assert.equal(event.detail.error, 'Failed to load resource: the server responded with a status of 500')
345346
})
346347

347348
test('adds is-error class on 500 status', async function () {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy