Skip to content

Commit 1248202

Browse files
Uzlopakslagiewka
authored andcommitted
Extract webidl (nodejs#4259)
* chore: extract webidl from fetch folder * fix import in benchmark * move benchmark * fix benchmark * improve errors * move USVString functions to webidl * improve webidl.util.Stringify * add tests for webidl.converters.boolean
1 parent b2aa0de commit 1248202

23 files changed

Lines changed: 182 additions & 116 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { bench, run, barplot } from 'mitata'
22
import { Headers, FormData } from '../../index.js'
3-
import { webidl } from '../../lib/web/fetch/webidl.js'
3+
import { webidl } from '../../lib/web/webidl/index.js'
44

55
const headers = new Headers()
66
const fd = new FormData()

‎lib/core/util.js‎

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ const { IncomingMessage } = require('node:http')
66
const stream = require('node:stream')
77
const net = require('node:net')
88
const { Blob } = require('node:buffer')
9-
const nodeUtil = require('node:util')
109
const { stringify } = require('node:querystring')
1110
const { EventEmitter: EE } = require('node:events')
1211
const timers = require('../util/timers')
@@ -660,48 +659,6 @@ function addAbortListener (signal, listener) {
660659
return () => signal.removeListener('abort', listener)
661660
}
662661

663-
/**
664-
* @function
665-
* @param {string} value
666-
* @returns {string}
667-
*/
668-
const toUSVString = (() => {
669-
if (typeof String.prototype.toWellFormed === 'function') {
670-
/**
671-
* @param {string} value
672-
* @returns {string}
673-
*/
674-
return (value) => `${value}`.toWellFormed()
675-
} else {
676-
/**
677-
* @param {string} value
678-
* @returns {string}
679-
*/
680-
return nodeUtil.toUSVString
681-
}
682-
})()
683-
684-
/**
685-
* @param {*} value
686-
* @returns {boolean}
687-
*/
688-
// TODO: move this to webidl
689-
const isUSVString = (() => {
690-
if (typeof String.prototype.isWellFormed === 'function') {
691-
/**
692-
* @param {*} value
693-
* @returns {boolean}
694-
*/
695-
return (value) => `${value}`.isWellFormed()
696-
} else {
697-
/**
698-
* @param {*} value
699-
* @returns {boolean}
700-
*/
701-
return (value) => toUSVString(value) === `${value}`
702-
}
703-
})()
704-
705662
/**
706663
* @see https://tools.ietf.org/html/rfc7230#section-3.2.6
707664
* @param {number} c
@@ -943,8 +900,6 @@ Object.setPrototypeOf(normalizedMethodRecords, null)
943900
module.exports = {
944901
kEnumerableProperty,
945902
isDisturbed,
946-
toUSVString,
947-
isUSVString,
948903
isBlobLike,
949904
parseOrigin,
950905
parseURL,

‎lib/web/cache/cache.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
const { kConstruct } = require('../../core/symbols')
44
const { urlEquals, getFieldValues } = require('./util')
55
const { kEnumerableProperty, isDisturbed } = require('../../core/util')
6-
const { webidl } = require('../fetch/webidl')
6+
const { webidl } = require('../webidl')
77
const { cloneResponse, fromInnerResponse, getResponseState } = require('../fetch/response')
88
const { Request, fromInnerRequest, getRequestState } = require('../fetch/request')
99
const { fetching } = require('../fetch/index')

‎lib/web/cache/cachestorage.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict'
22

33
const { Cache } = require('./cache')
4-
const { webidl } = require('../fetch/webidl')
4+
const { webidl } = require('../webidl')
55
const { kEnumerableProperty } = require('../../core/util')
66
const { kConstruct } = require('../../core/symbols')
77

‎lib/web/cookies/index.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const { parseSetCookie } = require('./parse')
44
const { stringify } = require('./util')
5-
const { webidl } = require('../fetch/webidl')
5+
const { webidl } = require('../webidl')
66
const { Headers } = require('../fetch/headers')
77

88
const brandChecks = webidl.brandCheckMultiple([Headers, globalThis.Headers].filter(Boolean))

‎lib/web/eventsource/eventsource.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
const { pipeline } = require('node:stream')
44
const { fetching } = require('../fetch')
55
const { makeRequest } = require('../fetch/request')
6-
const { webidl } = require('../fetch/webidl')
6+
const { webidl } = require('../webidl')
77
const { EventSourceStream } = require('./eventsource-stream')
88
const { parseMIMEType } = require('../fetch/data-url')
99
const { createFastMessageEvent } = require('../websocket/events')

‎lib/web/fetch/body.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const {
1010
utf8DecodeBytes
1111
} = require('./util')
1212
const { FormData, setFormDataState } = require('./formdata')
13-
const { webidl } = require('./webidl')
13+
const { webidl } = require('../webidl')
1414
const { Blob } = require('node:buffer')
1515
const assert = require('node:assert')
1616
const { isErrored, isDisturbed } = require('node:stream')

‎lib/web/fetch/formdata-parser.js‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
'use strict'
22

3-
const { isUSVString, bufferToLowerCasedHeaderName } = require('../../core/util')
3+
const { bufferToLowerCasedHeaderName } = require('../../core/util')
44
const { utf8DecodeBytes } = require('./util')
55
const { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require('./data-url')
66
const { makeEntry } = require('./formdata')
7-
const { webidl } = require('./webidl')
7+
const { webidl } = require('../webidl')
88
const assert = require('node:assert')
99
const { File: NodeFile } = require('node:buffer')
1010

@@ -200,8 +200,8 @@ function multipartFormDataParser (input, mimeType) {
200200
}
201201

202202
// 5.12. Assert: name is a scalar value string and value is either a scalar value string or a File object.
203-
assert(isUSVString(name))
204-
assert((typeof value === 'string' && isUSVString(value)) || webidl.is.File(value))
203+
assert(webidl.is.USVString(name))
204+
assert((typeof value === 'string' && webidl.is.USVString(value)) || webidl.is.File(value))
205205

206206
// 5.13. Create an entry with name and value, and append it to entry list.
207207
entryList.push(makeEntry(name, value, filename))

‎lib/web/fetch/formdata.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const { iteratorMixin } = require('./util')
44
const { kEnumerableProperty } = require('../../core/util')
5-
const { webidl } = require('./webidl')
5+
const { webidl } = require('../webidl')
66
const { File: NativeFile } = require('node:buffer')
77
const nodeUtil = require('node:util')
88

‎lib/web/fetch/headers.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const {
99
isValidHeaderName,
1010
isValidHeaderValue
1111
} = require('./util')
12-
const { webidl } = require('./webidl')
12+
const { webidl } = require('../webidl')
1313
const assert = require('node:assert')
1414
const util = require('node:util')
1515

0 commit comments

Comments
 (0)