Skip to content

Commit c55fbcb

Browse files
authored
Remove more unnecessary polyfills from webapi for Node 16 (#5814)
* feat(webapi): Remove unnecessary polyfills now that we dropped support for Node 14 * feat(webapi): Removed more unnecessary polyfills for Node 16 * chore: changeset
1 parent cf5dc2a commit c55fbcb

20 files changed

Lines changed: 23 additions & 422 deletions

.changeset/shaggy-bags-attend.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@astrojs/webapi': major
3+
---
4+
5+
Moved target to Node 16. Removed polyfills for AbortController, AbortSignal, atob, btoa, Object.hasOwn, Promise.all, Array.at and String.replaceAll

packages/webapi/LICENSE

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ THE SOFTWARE.
2424

2525
Code from [@astrocommunity/webapi](https://www.npmjs.com/@astrocommunity/webapi) is licensed under the CC0-1.0 License.
2626

27-
Code from [abort-controller](https://www.npmjs.com/package/abort-controller) is licensed under the MIT License (MIT), Copyright Toru Nagashima.
28-
2927
Code from [event-target-shim](https://www.npmjs.com/package/event-target-shim) is licensed under the MIT License (MIT), Copyright Toru Nagashima.
3028

31-
Code from [fetch-blob](https://www.npmjs.com/package/fetch-blob) is licensed under the MIT License (MIT), Copyright Jimmy Wärting.
32-
3329
Code from [formdata-polyfill](https://www.npmjs.com/package/formdata-polyfill) is licensed under the MIT License (MIT), Copyright Jimmy Wärting.

packages/webapi/README.md

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# WebAPI
22

3-
**WebAPI** lets you use Web APIs in Node v12, v14, and v16.
3+
**WebAPI** lets you use Web APIs not present in Node v16 and later.
44

55
```sh
66
npm install @astrojs/webapi
@@ -23,9 +23,6 @@ These APIs are combined from popular open source projects and configured to shar
2323

2424
## Features
2525

26-
- [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController)
27-
- [AbortSignal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
28-
- [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
2926
- [ByteLengthQueuingStrategy](https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy)
3027
- [CanvasRenderingContext2D](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D)
3128
- [CSSStyleSheet](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet)
@@ -78,9 +75,7 @@ These APIs are combined from popular open source projects and configured to shar
7875
- [WritableStreamDefaultController](https://developer.mozilla.org/en-US/docs/Web/API/WritableStreamDefaultController)
7976
- [WritableStreamDefaultWriter](https://developer.mozilla.org/en-US/docs/Web/API/WritableStreamDefaultWriter)
8077
- [Window](https://developer.mozilla.org/en-US/docs/Web/API/Window)
81-
- [atob](https://developer.mozilla.org/en-US/docs/Web/API/atob)
82-
- [btoa](https://developer.mozilla.org/en-US/docs/Web/API/btoa)
83-
- [cancelAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/cancelAnimationFrame)
78+
- [cancelAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/Window/cancelAnimationFrame)
8479
- [cancelIdleCallback](https://developer.mozilla.org/en-US/docs/Web/API/cancelIdleCallback)
8580
- [clearTimeout](https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout)
8681
- [fetch](https://developer.mozilla.org/en-US/docs/Web/API/fetch)
@@ -89,20 +84,14 @@ These APIs are combined from popular open source projects and configured to shar
8984
- [requestIdleCallback](https://developer.mozilla.org/en-US/docs/Web/API/requestIdleCallback)
9085
- [setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/setTimeout)
9186
- [structuredClone](https://developer.mozilla.org/en-US/docs/Web/API/structuredClone)
92-
- [Object.hasOwn](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn)
93-
- [Promise.any](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any)
94-
- [Array.prototype.at](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at)
95-
- [String.prototype.at](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/at)
96-
- [String.prototype.replaceAll](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll)
97-
- [TypedArray.prototype.at](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/at)
9887
- [URLPattern](https://developer.mozilla.org/en-US/docs/Web/API/URLPattern)
9988

10089
## Usage
10190

10291
You can use WebAPIs as individual exports.
10392

10493
```js
105-
import { AbortController, Blob, Event, EventTarget, File, fetch, Response } from '@astrojs/webapi'
94+
import { Event, EventTarget, File, fetch, Response } from '@astrojs/webapi'
10695
```
10796

10897
You can apply WebAPIs to an object, like `globalThis`.
@@ -149,11 +138,10 @@ polyfill(globalThis, {
149138

150139
| Shorthand | Excludes |
151140
|:-------------- |:-------- |
152-
| `Blob+` | `Blob`, `File` |
153141
| `Document+` | `Document`, `HTMLDocument` |
154142
| `Element+` | `Element`, and exclusions from `HTMLElement+` |
155-
| `Event+` | `Event`, `CustomEvent`, `EventTarget`, `AbortSignal`, `MediaQueryList`, `Window`, and exclusions from `Node+` |
156-
| `EventTarget+` | `Event`, `CustomEvent`, `EventTarget`, `AbortSignal`, `MediaQueryList`, `Window`, and exclusions from `Node+` |
143+
| `Event+` | `Event`, `CustomEvent`, `EventTarget`, `MediaQueryList`, `Window`, and exclusions from `Node+` |
144+
| `EventTarget+` | `Event`, `CustomEvent`, `EventTarget`, `MediaQueryList`, `Window`, and exclusions from `Node+` |
157145
| `HTMLElement+` | `CustomElementsRegistry`, `HTMLElement`, `HTMLBodyElement`, `HTMLCanvasElement`, `HTMLDivElement`, `HTMLHeadElement`, `HTMLHtmlElement`, `HTMLImageElement`, `HTMLStyleElement`, `HTMLTemplateElement`, `HTMLUnknownElement`, `Image` |
158146
| `Node+` | `Node`, `DocumentFragment`, `ShadowRoot`, `Document`, `HTMLDocument`, and exclusions from `Element+` |
159147
| `StyleSheet+` | `StyleSheet`, `CSSStyleSheet` |
@@ -166,10 +154,6 @@ polyfill(globalThis, {
166154

167155
Thank you to Jon Neal for his work on the original [webapi](https://github.com/astro-community/webapi) project that this package is forked from. Licensed under the CC0-1.0 License.
168156

169-
Code from [abort-controller](https://www.npmjs.com/package/abort-controller) is licensed under the MIT License (MIT), Copyright Toru Nagashima.
170-
171157
Code from [event-target-shim](https://www.npmjs.com/package/event-target-shim) is licensed under the MIT License (MIT), Copyright Toru Nagashima.
172158

173-
Code from [fetch-blob](https://www.npmjs.com/package/fetch-blob) is licensed under the MIT License (MIT), Copyright Jimmy Wärting.
174-
175159
Code from [formdata-polyfill](https://www.npmjs.com/package/formdata-polyfill) is licensed under the MIT License (MIT), Copyright Jimmy Wärting.

packages/webapi/mod.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// organize-imports-ignore
22
export { pathToPosix } from './lib/utils';
3-
export { AbortController, AbortSignal, alert, atob, Blob, btoa, ByteLengthQueuingStrategy, cancelAnimationFrame, cancelIdleCallback, CanvasRenderingContext2D, CharacterData, clearTimeout, Comment, CountQueuingStrategy, CSSStyleSheet, CustomElementRegistry, CustomEvent, Document, DocumentFragment, DOMException, Element, Event, EventTarget, fetch, File, FormData, Headers, HTMLBodyElement, HTMLCanvasElement, HTMLDivElement, HTMLDocument, HTMLElement, HTMLHeadElement, HTMLHtmlElement, HTMLImageElement, HTMLSpanElement, HTMLStyleElement, HTMLTemplateElement, HTMLUnknownElement, Image, ImageData, IntersectionObserver, MediaQueryList, MutationObserver, Node, NodeFilter, NodeIterator, OffscreenCanvas, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, Request, requestAnimationFrame, requestIdleCallback, ResizeObserver, Response, setTimeout, ShadowRoot, structuredClone, StyleSheet, Text, TransformStream, TreeWalker, URLPattern, Window, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, } from './mod.js';
3+
export { alert, ByteLengthQueuingStrategy, cancelAnimationFrame, cancelIdleCallback, CanvasRenderingContext2D, CharacterData, clearTimeout, Comment, CountQueuingStrategy, CSSStyleSheet, CustomElementRegistry, CustomEvent, Document, DocumentFragment, DOMException, Element, Event, EventTarget, fetch, File, FormData, Headers, HTMLBodyElement, HTMLCanvasElement, HTMLDivElement, HTMLDocument, HTMLElement, HTMLHeadElement, HTMLHtmlElement, HTMLImageElement, HTMLSpanElement, HTMLStyleElement, HTMLTemplateElement, HTMLUnknownElement, Image, ImageData, IntersectionObserver, MediaQueryList, MutationObserver, Node, NodeFilter, NodeIterator, OffscreenCanvas, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, Request, requestAnimationFrame, requestIdleCallback, ResizeObserver, Response, setTimeout, ShadowRoot, structuredClone, StyleSheet, Text, TransformStream, TreeWalker, URLPattern, Window, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, } from './mod.js';
44
export declare const polyfill: {
55
(target: any, options?: PolyfillOptions): any;
66
internals(target: any, name: string): any;

packages/webapi/package.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
"bugs": "https://github.com/withastro/astro/issues",
5151
"homepage": "https://github.com/withastro/astro/tree/main/packages/webapi#readme",
5252
"dependencies": {
53-
"global-agent": "^3.0.0",
5453
"undici": "^5.14.0"
5554
},
5655
"devDependencies": {
@@ -59,19 +58,15 @@
5958
"@rollup/plugin-node-resolve": "^13.3.0",
6059
"@rollup/plugin-typescript": "^8.3.2",
6160
"@types/chai": "^4.3.1",
62-
"@types/global-agent": "^2.1.1",
6361
"@types/mocha": "^9.1.1",
6462
"@types/node": "^14.18.21",
6563
"@ungap/structured-clone": "^0.3.4",
66-
"abort-controller": "^3.0.0",
6764
"chai": "^4.3.6",
6865
"event-target-shim": "^6.0.2",
69-
"fetch-blob": "^3.1.5",
7066
"formdata-polyfill": "^4.0.10",
7167
"magic-string": "^0.25.9",
7268
"mocha": "^9.2.2",
7369
"rollup": "^2.79.1",
74-
"rollup-plugin-terser": "^7.0.2",
7570
"tslib": "^2.4.0",
7671
"typescript": "~4.7.3",
7772
"urlpattern-polyfill": "^1.0.0-rc5"

packages/webapi/run/build.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,6 @@ const plugins = [
5858
inject({
5959
// import { Promise as P } from 'es6-promise'
6060
// P: [ 'es6-promise', 'Promise' ],
61-
62-
AbortController: [
63-
'abort-controller/dist/abort-controller.mjs',
64-
'AbortController',
65-
],
66-
Blob: ['fetch-blob/from.js', 'Blob'],
6761
DOMException: [pathToDOMException, 'DOMException'],
6862
Document: ['./Document', 'Document'],
6963
Element: ['./Element', 'Element'],
@@ -172,7 +166,7 @@ async function build() {
172166
inputOptions: {
173167
input: 'src/polyfill.ts',
174168
plugins: plugins,
175-
external: ['undici', 'global-agent'],
169+
external: ['undici'],
176170
onwarn(warning, warn) {
177171
if (warning.code !== 'UNRESOLVED_IMPORT') warn(warning)
178172
},

packages/webapi/src/exclusions.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ const exclusionsForNode = [
2828
...exclusionsForElement,
2929
] as const
3030
const exclusionsForEventTarget = [
31-
'AbortSignal',
3231
'Event',
3332
'CustomEvent',
3433
'EventTarget',
@@ -38,7 +37,6 @@ const exclusionsForEventTarget = [
3837
...exclusionsForNode,
3938
] as const
4039
const exclusionsForEvent = [
41-
'AbortSignal',
4240
'Event',
4341
'CustomEvent',
4442
'EventTarget',
@@ -49,7 +47,6 @@ const exclusionsForEvent = [
4947
] as const
5048

5149
export const exclusions = {
52-
'Blob+': ['Blob', 'File'],
5350
'Document+': exclusionsForDocument,
5451
'Element+': exclusionsForElement,
5552
'Event+': exclusionsForEvent,

packages/webapi/src/inheritance.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ export const inheritance = {
55
Document: 'Node',
66
DocumentFragment: 'Node',
77
Element: 'Node',
8-
File: 'Blob',
98
HTMLDocument: 'Document',
109
HTMLElement: 'Element',
1110
HTMLBodyElement: 'HTMLElement',

packages/webapi/src/lib/Base64.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/webapi/src/lib/ContextEvent.ts

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)