diff --git a/docs/index.html b/docs/index.html
index 42a52f4..2a8edbc 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -193,104 +193,6 @@
GitHub Feature Support Table
|
Base Objects & Functions |
-
-
-
- Blob Constructor
-
- |
- ! |
- 5+ |
- 12+ |
- 4+ |
- 6+ |
- 11+ |
- 1.0+ |
-
-
-
-
- PerformanceObserver Constructor
-
- |
- ! |
- 52+ |
- 79+ |
- 57+ |
- 11+ |
- 39+ |
- 6.0+ |
-
-
-
-
- Intl Constructor
-
- |
- ! |
- 24+ |
- 12+ |
- 29+ |
- 10+ |
- 15+ |
- 1.5+ |
-
-
-
-
- MutationObserver Constructor
-
- |
- ! |
- 26+ |
- 12+ |
- 14+ |
- 7+ |
- 15+ |
- 1.5+ |
-
-
-
-
- URLSearchParams Constructor
-
- |
- ! |
- 49+ |
- 17+ |
- 29+ |
- 10.1+ |
- 36+ |
- 5.0+ |
-
-
-
-
- WebSocket Constructor
-
- |
- ! |
- 4+ |
- 12+ |
- 11+ |
- 5+ |
- 12.1+ |
- 1.0+ |
-
-
-
-
- IntersectionObserver Constructor
-
- |
- ! |
- 51+ |
- 15+ |
- 55+ |
- 12.1+ |
- 38+ |
- 5.0+ |
-
@@ -307,87 +209,17 @@ GitHub Feature Support Table
|
-
- TextEncoder Constructor
-
- |
- ! |
- 38+ |
- 79+ |
- 18+ |
- 10.1+ |
- 25+ |
- 3.0+ |
-
-
-
-
- TextDecoder Constructor
+
+ HTMLDialogElement Constructor
|
- ! |
- 38+ |
- 79+ |
- 19+ |
- 10.1+ |
- 25+ |
- 3.0+ |
-
-
-
-
- customElements
-
- |
- ! |
- 54+ |
- 79+ |
- 63+ |
- 10.1+ |
- 41+ |
- 6.0+ |
-
-
-
-
- HTMLDetailsElement Constructor
-
- |
- ! |
- 10+ |
+ ! |
+ 37+ |
79+ |
- 49+ |
- 6+ |
- 15+ |
- 1.0+ |
-
-
-
-
- AbortController Constructor
-
- |
- ! |
- 66+ |
- 16+ |
- 57+ |
- 12.1+ |
- 53+ |
- 9.0+ |
-
-
-
-
- AbortSignal Constructor
-
- |
- ! |
- 66+ |
- 16+ |
- 57+ |
- 11.1+ |
- 53+ |
- 9.0+ |
+ 98+ |
+ 24+ |
+ 15.4+ |
+ 4.0+ |
@@ -403,34 +235,6 @@ GitHub Feature Support Table
| 58+ |
10.0+ |
-
-
-
- FormData.entries
-
- |
- ! |
- 50+ |
- 18+ |
- 44+ |
- 11.1+ |
- 37+ |
- 5.0+ |
-
-
-
-
- Element.toggleAttribute
-
- |
- ! |
- 69+ |
- 18+ |
- 63+ |
- 12+ |
- 56+ |
- 10.0+ |
-
GitHub Feature Support Table
String.replaceAll
|
- * |
+ ! |
85+ |
85+ |
77+ |
@@ -507,34 +311,6 @@ GitHub Feature Support Table
71+ |
14.0+ |
-
-
-
- AggregateError
-
- |
- * |
- 85+ |
- 85+ |
- 79+ |
- 14+ |
- 71+ |
- 14.0+ |
-
-
-
-
- Element.replaceChildren
-
- |
- * |
- 86+ |
- 86+ |
- 78+ |
- 14+ |
- 72+ |
- 14.0+ |
-
GitHub Feature Support Table
Promise.allSettled
|
- * |
+ ! |
76+ |
79+ |
71+ |
@@ -557,7 +333,7 @@ GitHub Feature Support Table
Promise.any
- * |
+ ! |
85+ |
85+ |
79+ |
@@ -565,9 +341,51 @@ GitHub Feature Support Table
71+ |
14+ |
-
- |
- Polyfilled Features |
+
+
+
+ String.prototype.at
+
+ |
+ ! |
+ 92+ |
+ 92+ |
+ 90+ |
+ 15.4+ |
+ 65+ |
+ 16.0+ |
+
+
+
+
+ Array.prototype.at
+
+ |
+ ! |
+ 92+ |
+ 92+ |
+ 90+ |
+ 15.4+ |
+ 65+ |
+ 16.0+ |
+
+
+
+
+ Object.hasOwn
+
+ |
+ ! |
+ 93+ |
+ 93+ |
+ 92+ |
+ 15.4+ |
+ 79+ |
+ 17.0+ |
@@ -575,7 +393,7 @@ GitHub Feature Support Table
AbortSignal.abort
|
- * |
+ ! |
93+ |
93+ |
88+ |
@@ -585,32 +403,92 @@ GitHub Feature Support Table
-
- AbortSignal.timeout
+
+ AggregateError
|
- * |
- 103+ |
- 103+ |
- 100+ |
- 16+ |
- 89+ |
- 16+ |
+ ! |
+ 85+ |
+ 85+ |
+ 79+ |
+ 14+ |
+ 71+ |
+ 14.0+ |
-
- Array.at
+
+ BroadcastChannel
|
- * |
+ ! |
+ 54+ |
+ 79+ |
+ 38+ |
+ 15.4+ |
+ 41+ |
+ 6.0+ |
+
+
+
+
+ Crypto.randomUUID
+
+ |
+ ! |
92+ |
92+ |
- 90+ |
+ 95+ |
15.4+ |
78+ |
16.0+ |
+
+
+
+ Element.replaceChildren
+
+ |
+ ! |
+ 86+ |
+ 86+ |
+ 78+ |
+ 14+ |
+ 72+ |
+ 14.0+ |
+
+
+
+
+ HTMLFormElement.requestSubmit
+
+ |
+ ! |
+ 76+ |
+ 79+ |
+ 75+ |
+ 16+ |
+ 63+ |
+ 12.0+ |
+
+
+ |
+ Polyfilled Features |
+
+
+
+
+ AbortSignal.timeout
+
+ |
+ * |
+ 103+ |
+ 103+ |
+ 100+ |
+ 16+ |
+ 89+ |
+ 16+ |
+
@@ -625,20 +503,6 @@ GitHub Feature Support Table
| 53+ † |
9.0+ † |
-
-
-
- Crypto.randomUUID
-
- |
- * |
- 92+ |
- 92+ |
- 95+ |
- 15.4+ |
- 78+ |
- 16.0+ |
-
@@ -653,22 +517,6 @@ GitHub Feature Support Table
| 91+ |
20.0+ |
-
-
-
- EventTarget.addEventListener signal
-
- |
- * |
- 90+ |
- 90+ |
- 86+ |
- 15+ |
- 76+ |
- 15.0+ |
-
@@ -683,34 +531,6 @@ GitHub Feature Support Table
| 63+ † |
12.0+ † |
-
-
-
- HTMLFormElement.requestSubmit
-
- |
- * |
- 76+ |
- 79+ |
- 75+ |
- 16+ |
- 63+ |
- 12.0+ |
-
-
-
-
- Object.hasOwn
-
- |
- * |
- 93+ |
- 93+ |
- 92+ |
- 15.4+ |
- 79+ |
- 17.0+ |
-
@@ -725,36 +545,6 @@ GitHub Feature Support Table
| 34+ |
5.0+ |
-
-
-
- Array.findLast
-
- |
- * |
- 97+ |
- 97+ |
- 104+ |
- 15.4+ |
- 83+ |
- 18.0+ |
-
-
-
-
- Array.findLastIndex
-
- |
- * |
- 97+ |
- 97+ |
- 104+ |
- 15.4+ |
- 83+ |
- 18.0+ |
-
|
Native Syntax |
diff --git a/package-lock.json b/package-lock.json
index 525ecf4..b403a02 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2524,9 +2524,9 @@
"dev": true
},
"node_modules/follow-redirects": {
- "version": "1.14.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
- "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
+ "version": "1.15.4",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
+ "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==",
"dev": true,
"funding": [
{
diff --git a/src/abortsignal-abort.ts b/src/abortsignal-abort.ts
deleted file mode 100644
index fb8f8ab..0000000
--- a/src/abortsignal-abort.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-export function abortSignalAbort(reason: unknown) {
- const controller = new AbortController()
- controller.abort(reason)
- return controller.signal
-}
-
-declare global {
- interface AbortController {
- abort(reason: unknown): void
- }
-}
-
-/*#__PURE__*/
-export function isSupported(): boolean {
- return 'abort' in AbortSignal && typeof AbortSignal.abort === 'function'
-}
-
-/*#__PURE__*/
-export function isPolyfilled(): boolean {
- return AbortSignal.abort === abortSignalAbort
-}
-
-export function apply(): void {
- if (!isSupported()) {
- AbortSignal.abort = abortSignalAbort
- }
-}
diff --git a/src/array-findlast.ts b/src/array-findlast.ts
deleted file mode 100644
index 516235e..0000000
--- a/src/array-findlast.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-export function arrayFindLast(
- this: T[],
- pred: (this: T[], value: T, i: number, array: T[]) => boolean,
- recv = this,
-): T | void {
- for (let i = this.length - 1; i >= 0; i -= 1) {
- if (pred.call(recv, this[i], i, this)) return this[i]
- }
-}
-
-/*#__PURE__*/
-export function isSupported(): boolean {
- return 'findLast' in Array.prototype && typeof Array.prototype.findLast === 'function'
-}
-
-/*#__PURE__*/
-export function isPolyfilled(): boolean {
- return Array.prototype.findLast === arrayFindLast
-}
-
-export function apply(): void {
- if (!isSupported()) {
- const defn = {value: arrayFindLast, writable: true, configurable: true}
- Object.defineProperty(Array.prototype, 'findLast', defn)
- }
-}
diff --git a/src/array-findlastindex.ts b/src/array-findlastindex.ts
deleted file mode 100644
index 092e350..0000000
--- a/src/array-findlastindex.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-export function arrayFindLastIndex(
- this: T[],
- pred: (this: T[], value: T, i: number, array: T[]) => boolean,
- recv = this,
-): number {
- for (let i = this.length - 1; i >= 0; i -= 1) {
- if (pred.call(recv, this[i], i, this)) return i
- }
- return -1
-}
-
-/*#__PURE__*/
-export function isSupported(): boolean {
- return 'findLastIndex' in Array.prototype && typeof Array.prototype.findLastIndex === 'function'
-}
-
-/*#__PURE__*/
-export function isPolyfilled(): boolean {
- return Array.prototype.findLastIndex === arrayFindLastIndex
-}
-
-export function apply(): void {
- if (!isSupported()) {
- const defn = {
- value: arrayFindLastIndex,
- writable: true,
- configurable: true,
- }
- Object.defineProperty(Array.prototype, 'findLastIndex', defn)
- }
-}
diff --git a/src/arraylike-at.ts b/src/arraylike-at.ts
deleted file mode 100644
index 256dbb5..0000000
--- a/src/arraylike-at.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-const TypedArray = Reflect.getPrototypeOf(Int8Array) as Int8ArrayConstructor | null
-
-export function arrayLikeAt(this: ArrayLike, i: number): T | void {
- const l = this.length
- i = Math.trunc(i) || 0
- if (i < 0) i += l
- return i < 0 || i >= l ? undefined : this[i]
-}
-
-/*#__PURE__*/
-export function isSupported(): boolean {
- return (
- 'at' in Array.prototype &&
- typeof Array.prototype.at === 'function' &&
- 'at' in String.prototype &&
- typeof String.prototype.at === 'function' &&
- typeof TypedArray === 'function' &&
- 'at' in TypedArray.prototype &&
- typeof TypedArray.prototype.at === 'function'
- )
-}
-
-/*#__PURE__*/
-export function isPolyfilled(): boolean {
- return (
- Array.prototype.at === arrayLikeAt &&
- String.prototype.at === arrayLikeAt &&
- typeof TypedArray === 'function' &&
- TypedArray.prototype.at === arrayLikeAt
- )
-}
-
-export function apply(): void {
- if (!isSupported()) {
- const defn = {value: arrayLikeAt, writable: true, configurable: true}
- Object.defineProperty(Array.prototype, 'at', defn)
- Object.defineProperty(String.prototype, 'at', defn)
- Object.defineProperty(TypedArray, 'at', defn)
- }
-}
diff --git a/src/crypto-randomuuid.ts b/src/crypto-randomuuid.ts
deleted file mode 100644
index 6fc83cd..0000000
--- a/src/crypto-randomuuid.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-export function randomUUID(): `${string}-${string}-${string}-${string}-${string}` {
- const buf = new Uint32Array(4)
- crypto.getRandomValues(buf)
- let idx = -1
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
- idx++
- const r = (buf[idx >> 3] >> ((idx % 8) * 4)) & 15
- const v = c === 'x' ? r : (r & 0x3) | 0x8
- return v.toString(16)
- }) as `${string}-${string}-${string}-${string}-${string}`
-}
-
-declare global {
- interface Crypto {
- randomUUID(): string
- }
-}
-
-/*#__PURE__*/
-export function isSupported(): boolean {
- return typeof crypto === 'object' && 'randomUUID' in crypto && typeof crypto.randomUUID === 'function'
-}
-
-/*#__PURE__*/
-export function isPolyfilled(): boolean {
- return isSupported() && crypto.randomUUID === randomUUID
-}
-
-export function apply(): void {
- if (!isSupported()) {
- crypto.randomUUID = randomUUID
- }
-}
diff --git a/src/event-abortsignal.ts b/src/event-abortsignal.ts
deleted file mode 100644
index b355519..0000000
--- a/src/event-abortsignal.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-const originalAddEventListener = EventTarget.prototype.addEventListener
-export function addEventListenerWithAbortSignal(
- this: EventTarget,
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
-): void {
- if (typeof options === 'object' && 'signal' in options && options.signal instanceof AbortSignal) {
- if (options.signal.aborted) return
- originalAddEventListener.call(options.signal, 'abort', () => {
- this.removeEventListener(type, callback, options)
- })
- }
- return originalAddEventListener.call(this, type, callback, options)
-}
-
-declare global {
- interface AddEventListenerOptions {
- signal?: AbortSignal
- }
-}
-
-export function isSupported(): boolean {
- let signalSupported = false
- const setSignalSupported = () => (signalSupported = true)
-
- function noop() {}
- const options = Object.create({}, {signal: {get: setSignalSupported}})
- try {
- const target = new EventTarget()
- target.addEventListener('test', noop, options)
- target.removeEventListener('test', noop, options)
- return signalSupported
- } catch {
- return signalSupported
- }
-}
-
-/*#__PURE__*/
-export function isPolyfilled(): boolean {
- return EventTarget.prototype.addEventListener === addEventListenerWithAbortSignal
-}
-
-export function apply(): void {
- if (typeof AbortSignal === 'function' && !isSupported()) {
- EventTarget.prototype.addEventListener = addEventListenerWithAbortSignal
- }
-}
diff --git a/src/form-requestsubmit.ts b/src/form-requestsubmit.ts
deleted file mode 100644
index 20e1bcc..0000000
--- a/src/form-requestsubmit.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-export function requestSubmit(
- this: HTMLFormElement,
- submitter: HTMLButtonElement | HTMLInputElement | null = null,
-): void {
- const event = new SubmitEvent('submit', {bubbles: true, cancelable: true, submitter})
- let input
- if (submitter && submitter.name) {
- input = Object.assign(document.createElement('input'), {
- type: 'hidden',
- hidden: true,
- name: submitter.name,
- value: submitter.value,
- })
- this.append(input)
- }
- this.checkValidity() && !this.dispatchEvent(event) && this.submit()
- input?.remove()
-}
-
-export function isSupported(): boolean {
- return 'requestSubmit' in HTMLFormElement.prototype && typeof HTMLFormElement.prototype.requestSubmit === 'function'
-}
-
-export function isPolyfilled(): boolean {
- return HTMLFormElement.prototype.requestSubmit === requestSubmit
-}
-
-export function apply(): void {
- if (!isSupported()) {
- HTMLFormElement.prototype.requestSubmit = requestSubmit
- }
-}
diff --git a/src/index.ts b/src/index.ts
index 1581473..52624c4 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,35 +1,11 @@
-import * as abortSignalAbort from './abortsignal-abort.js'
import * as abortSignalTimeout from './abortsignal-timeout.js'
-import * as arrayAt from './arraylike-at.js'
import * as clipboardItem from './clipboarditem.js'
-import * as cryptoRandomUUID from './crypto-randomuuid.js'
import * as elementCheckVisibility from './element-checkvisibility.js'
-import * as eventAbortSignal from './event-abortsignal.js'
import * as navigatorClipboard from './navigator-clipboard.js'
-import * as formRequestSubmit from './form-requestsubmit.js'
-import * as objectHasOwn from './object-hasown.js'
import * as requestIdleCallback from './requestidlecallback.js'
-import * as arrayFindLast from './array-findlast.js'
-import * as arrayFindLastIndex from './array-findlastindex.js'
export const baseSupport =
- typeof Blob === 'function' &&
- typeof PerformanceObserver === 'function' &&
- typeof Intl === 'object' &&
- typeof MutationObserver === 'function' &&
- typeof URLSearchParams === 'function' &&
- typeof WebSocket === 'function' &&
- typeof IntersectionObserver === 'function' &&
- typeof queueMicrotask === 'function' &&
- typeof TextEncoder === 'function' &&
- typeof TextDecoder === 'function' &&
- typeof customElements === 'object' &&
- typeof HTMLDetailsElement === 'function' &&
- typeof AbortController === 'function' &&
- typeof AbortSignal === 'function' &&
typeof globalThis === 'object' &&
- 'entries' in FormData.prototype &&
- 'toggleAttribute' in Element.prototype &&
// ES2019
'fromEntries' in Object &&
'flatMap' in Array.prototype &&
@@ -41,32 +17,29 @@ export const baseSupport =
'replaceAll' in String.prototype &&
'any' in Promise &&
// ES2022
- // 'at' in String.prototype && // Polyfilled
- // 'at' in Array.prototype && // Polyfilled
- // 'hasOwn' in Object && // Polyfilled
+ 'at' in String.prototype &&
+ 'at' in Array.prototype &&
+ 'hasOwn' in Object &&
// ESNext
- // 'abort' in AbortSignal && // Polyfilled
+ 'abort' in AbortSignal &&
// 'timeout' in AbortSignal && // Polyfilled
+ // DOM / HTML and other specs
+ typeof queueMicrotask === 'function' &&
+ typeof HTMLDialogElement === 'function' &&
typeof AggregateError === 'function' &&
- // 'randomUUID' in crypto && // Polyfilled
+ typeof BroadcastChannel === 'function' &&
+ 'randomUUID' in crypto &&
'replaceChildren' in Element.prototype &&
+ 'requestSubmit' in HTMLFormElement.prototype &&
// 'requestIdleCallback' in window && // Polyfilled
true
export const polyfills = {
- abortSignalAbort,
abortSignalTimeout,
- arrayAt,
clipboardItem,
- cryptoRandomUUID,
elementCheckVisibility,
- eventAbortSignal,
navigatorClipboard,
- formRequestSubmit,
- objectHasOwn,
requestIdleCallback,
- arrayFindLast,
- arrayFindLastIndex,
}
export function isSupported() {
diff --git a/src/object-hasown.ts b/src/object-hasown.ts
deleted file mode 100644
index 574d42b..0000000
--- a/src/object-hasown.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-const phasOwn = Object.prototype.hasOwnProperty
-export function objectHasOwn(object: unknown, property: PropertyKey) {
- if (object == null) {
- throw new TypeError('Cannot convert undefined or null to object')
- }
- return phasOwn.call(Object(object), property)
-}
-
-declare global {
- interface Object {
- hasOwn: (object: unknown, property: Key) => object is unknown & Record
- }
-}
-
-/*#__PURE__*/
-export function isSupported(): boolean {
- return 'hasOwn' in Object && typeof Object.hasOwn === 'function'
-}
-
-/*#__PURE__*/
-export function isPolyfilled(): boolean {
- return Object.hasOwn === objectHasOwn
-}
-
-export function apply(): void {
- if (!isSupported()) {
- Object.defineProperty(Object, 'hasOwn', {
- value: objectHasOwn,
- configurable: true,
- writable: true,
- })
- }
-}
diff --git a/test/abortsignal-abort.js b/test/abortsignal-abort.js
deleted file mode 100644
index 707cb61..0000000
--- a/test/abortsignal-abort.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import {abortSignalAbort, apply, isPolyfilled, isSupported} from '../lib/abortsignal-abort.js'
-
-describe('abortSignalAbort', () => {
- it('has standard isSupported, isPolyfilled, apply API', () => {
- expect(isSupported).to.be.a('function')
- expect(isPolyfilled).to.be.a('function')
- expect(apply).to.be.a('function')
- expect(isSupported()).to.be.a('boolean')
- expect(isPolyfilled()).to.equal(false)
- })
-
- it('returns already aborted signal', () => {
- expect(abortSignalAbort()).to.be.instanceOf(AbortSignal)
- expect(abortSignalAbort().aborted).to.equal(true)
- })
-
- it('creates a new signal each time', () => {
- expect(abortSignalAbort()).to.not.equal(abortSignalAbort())
- })
-
- it('forwards reason property', () => {
- expect(abortSignalAbort('Foo')).to.have.property('reason', 'Foo')
- })
-})
diff --git a/test/array-findlast.js b/test/array-findlast.js
deleted file mode 100644
index 2933f12..0000000
--- a/test/array-findlast.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import {apply, arrayFindLast, isPolyfilled, isSupported} from '../lib/array-findlast.js'
-
-describe('arrayFindLast', () => {
- it('has standard isSupported, isPolyfilled, apply API', () => {
- expect(isSupported).to.be.a('function')
- expect(isPolyfilled).to.be.a('function')
- expect(apply).to.be.a('function')
- expect(isSupported()).to.be.a('boolean')
- expect(isPolyfilled()).to.equal(false)
- })
-
- it('returns value that passes truthy', () => {
- expect(arrayFindLast.call([1, 2, 3], v => v === 3)).to.equal(3)
- expect(arrayFindLast.call([1, 2, 3], v => v === 1)).to.equal(1)
- const arr = [1, 2, 3]
- const recv = {}
- expect(
- arrayFindLast.call(
- arr,
- function (v, i, _arr) {
- // eslint-disable-next-line @typescript-eslint/no-invalid-this
- expect(this).to.equal(recv)
- expect(_arr).to.equal(arr)
- expect(v).to.equal(arr[i])
- },
- recv,
- ),
- )
- })
-})
diff --git a/test/array-findlastindex.js b/test/array-findlastindex.js
deleted file mode 100644
index eecdfd1..0000000
--- a/test/array-findlastindex.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import {apply, arrayFindLastIndex, isPolyfilled, isSupported} from '../lib/array-findlastindex.js'
-
-describe('arrayFindLastIndex', () => {
- it('has standard isSupported, isPolyfilled, apply API', () => {
- expect(isSupported).to.be.a('function')
- expect(isPolyfilled).to.be.a('function')
- expect(apply).to.be.a('function')
- expect(isSupported()).to.be.a('boolean')
- expect(isPolyfilled()).to.equal(false)
- })
-
- it('returns value that passes truthy', () => {
- expect(arrayFindLastIndex.call([1, 2, 3], v => v === 3)).to.equal(2)
- expect(arrayFindLastIndex.call([1, 2, 3], v => v === 1)).to.equal(0)
- const arr = [1, 2, 3]
- const recv = {}
- expect(
- arrayFindLastIndex.call(
- arr,
- function (v, i, _arr) {
- // eslint-disable-next-line @typescript-eslint/no-invalid-this
- expect(this).to.equal(recv)
- expect(_arr).to.equal(arr)
- expect(v).to.equal(arr[i])
- },
- recv,
- ),
- )
- })
-})
diff --git a/test/arraylike-at.js b/test/arraylike-at.js
deleted file mode 100644
index 8c75106..0000000
--- a/test/arraylike-at.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import {apply, arrayLikeAt, isPolyfilled, isSupported} from '../lib/arraylike-at.js'
-
-describe('arrayLikeAt', () => {
- it('has standard isSupported, isPolyfilled, apply API', () => {
- expect(isSupported).to.be.a('function')
- expect(isPolyfilled).to.be.a('function')
- expect(apply).to.be.a('function')
- expect(isSupported()).to.be.a('boolean')
- expect(isPolyfilled()).to.equal(false)
- })
-
- it('returns value at given index', () => {
- expect(arrayLikeAt.call([1, 2, 3], -1)).to.equal(3)
- expect(arrayLikeAt.call('bar', -2)).to.equal('a')
- expect(arrayLikeAt.call('bar', 1)).to.equal('a')
- })
-})
diff --git a/test/crypto-randomuuid.js b/test/crypto-randomuuid.js
deleted file mode 100644
index 67ce2f5..0000000
--- a/test/crypto-randomuuid.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import {apply, isPolyfilled, isSupported, randomUUID} from '../lib/crypto-randomuuid.js'
-
-describe('randomUUID', () => {
- it('has standard isSupported, isPolyfilled, apply API', () => {
- expect(isSupported).to.be.a('function')
- expect(isPolyfilled).to.be.a('function')
- expect(apply).to.be.a('function')
- expect(isSupported()).to.be.a('boolean')
- expect(isPolyfilled()).to.equal(false)
- })
-
- it('returns a UUID string', async () => {
- expect(randomUUID()).to.match(
- /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,
- )
- expect(randomUUID()).to.not.equal(randomUUID())
- })
-})
diff --git a/test/event-abortsignal.js b/test/event-abortsignal.js
deleted file mode 100644
index 2e2edcd..0000000
--- a/test/event-abortsignal.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import {addEventListenerWithAbortSignal, apply, isPolyfilled, isSupported} from '../lib/event-abortsignal.js'
-
-describe('addEventListenerWithAbortSignal', () => {
- it('has standard isSupported, isPolyfilled, apply API', () => {
- expect(isSupported).to.be.a('function')
- expect(isPolyfilled).to.be.a('function')
- expect(apply).to.be.a('function')
- expect(isSupported()).to.be.a('boolean')
- expect(isPolyfilled()).to.equal(false)
- })
-
- it('adds event listener, with abortable signal', async () => {
- const et = new EventTarget()
- const ac = new AbortController()
- let i = 0
- const incr = () => (i += 1)
- addEventListenerWithAbortSignal.call(et, 'test', incr, {signal: ac.signal})
- et.dispatchEvent(new Event('test'))
- et.dispatchEvent(new Event('test'))
- expect(i).to.equal(2)
- ac.abort()
- et.dispatchEvent(new Event('test'))
- expect(i).to.equal(2)
- })
-})
diff --git a/test/form-requestsubmit.js b/test/form-requestsubmit.js
deleted file mode 100644
index 577c9af..0000000
--- a/test/form-requestsubmit.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import {requestSubmit, apply, isPolyfilled, isSupported} from '../lib/form-requestsubmit.js'
-
-describe('requestSubmit', () => {
- let form
- beforeEach(() => {
- form = document.createElement('form')
- document.body.append(form)
- })
- afterEach(() => {
- form.remove()
- })
-
- it('has standard isSupported, isPolyfilled, apply API', () => {
- expect(isSupported).to.be.a('function')
- expect(isPolyfilled).to.be.a('function')
- expect(apply).to.be.a('function')
- expect(isSupported()).to.be.a('boolean')
- expect(isPolyfilled()).to.equal(false)
- })
-
- it('does not dispatch or submit for invalid forms', () => {
- const input = document.createElement('input')
- input.required = true
- form.append(input)
- let called = false
- form.addEventListener('submit', () => {
- called = true
- })
- requestSubmit.call(form)
- expect(called).to.equal(false)
- })
-
- it('dispatches submit event', () => {
- const input = document.createElement('input')
- form.append(input)
- let called = false
- form.addEventListener('submit', event => {
- called = true
- event.stopPropagation()
- })
- requestSubmit.call(form)
- expect(called).to.equal(true)
- })
-
- it('passes submitter in event', () => {
- const input = document.createElement('input')
- input.type = 'button'
- form.append(input)
- let submitter = null
- form.addEventListener('submit', event => {
- submitter = event.submitter
- event.stopPropagation()
- })
- requestSubmit.call(form, input)
- expect(submitter).to.equal(input)
- })
-
- it('includes the input value in FormData', () => {
- const input = document.createElement('input')
- input.type = 'button'
- input.name = 'foo'
- input.value = '1'
- form.append(input)
- let formdata = null
- form.addEventListener('submit', event => {
- formdata = new FormData(form)
- event.stopPropagation()
- })
- requestSubmit.call(form, input)
- expect(formdata.get('foo')).to.equal('1')
- expect(Array.from(form.querySelectorAll('input')).length).to.equal(1)
- })
-})
diff --git a/test/object-hasown.js b/test/object-hasown.js
deleted file mode 100644
index 22b89d2..0000000
--- a/test/object-hasown.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import {apply, isPolyfilled, isSupported, objectHasOwn} from '../lib/object-hasown.js'
-
-describe('objectHasOwn', () => {
- it('has standard isSupported, isPolyfilled, apply API', () => {
- expect(isSupported).to.be.a('function')
- expect(isPolyfilled).to.be.a('function')
- expect(apply).to.be.a('function')
- expect(isSupported()).to.be.a('boolean')
- expect(isPolyfilled()).to.equal(false)
- })
-
- it('returns boolean based on own properties', () => {
- expect(objectHasOwn({a: 1}, 'a')).to.equal(true)
- expect(objectHasOwn({a: 1}, 'b')).to.equal(false)
- })
-})
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