fix: maybe

This commit is contained in:
2023-11-17 13:22:28 +00:00
parent b625ccd8d6
commit 999b1ae6fc
772 changed files with 3923 additions and 30947 deletions

65
node_modules/@polka/url/build.js generated vendored
View File

@ -1,42 +1,47 @@
const qs = require('querystring');
function parse(str) {
let out={}, arr=str.split('&');
for (let i=0, k, v; i < arr.length; i++) {
[k, v=''] = arr[i].split('=');
out[k] = out[k] !== void 0 ? [].concat(out[k], v) : v;
}
return out;
}
/**
* @typedef ParsedURL
* @type {import('.').ParsedURL}
*/
module.exports = function (req, toDecode) {
let url = req.url;
if (url == null) return;
/**
* @typedef Request
* @property {string} url
* @property {ParsedURL} _parsedUrl
*/
let obj = req._parsedUrl;
if (obj && obj._raw === url) return obj;
/**
* @param {Request} req
* @returns {ParsedURL|void}
*/
function parse(req) {
let raw = req.url;
if (raw == null) return;
obj = {
path: url,
pathname: url,
search: null,
query: null,
href: url,
_raw: url
};
let prev = req._parsedUrl;
if (prev && prev.raw === raw) return prev;
if (url.length > 1) {
if (toDecode && !req._decoded && !!~url.indexOf('%', 1)) {
let nxt = url;
try { nxt = decodeURIComponent(url) } catch (e) {/* bad */}
url = req.url = obj.href = obj.path = obj.pathname = obj._raw = nxt;
req._decoded = true;
}
let pathname=raw, search='', query;
if (raw.length > 1) {
let idx = raw.indexOf('?', 1);
let idx = url.indexOf('?', 1);
if (idx !== -1) {
search = raw.substring(idx);
pathname = raw.substring(0, idx);
if (search.length > 1) {
query = qs.parse(search.substring(1));
obj.search = url.substring(idx);
obj.query = obj.search.substring(1);
obj.pathname = url.substring(0, idx);
if (toDecode && obj.query.length > 0) {
obj.query = parse(obj.query);
}
}
}
return req._parsedUrl = { pathname, search, query, raw };
return (req._parsedUrl = obj);
}
exports.parse = parse;

63
node_modules/@polka/url/build.mjs generated vendored
View File

@ -1,40 +1,47 @@
import * as qs from 'querystring';
function parse(str) {
let out={}, arr=str.split('&');
for (let i=0, k, v; i < arr.length; i++) {
[k, v=''] = arr[i].split('=');
out[k] = out[k] !== void 0 ? [].concat(out[k], v) : v;
}
return out;
}
/**
* @typedef ParsedURL
* @type {import('.').ParsedURL}
*/
export default function (req, toDecode) {
let url = req.url;
if (url == null) return;
/**
* @typedef Request
* @property {string} url
* @property {ParsedURL} _parsedUrl
*/
let obj = req._parsedUrl;
if (obj && obj._raw === url) return obj;
/**
* @param {Request} req
* @returns {ParsedURL|void}
*/
export function parse(req) {
let raw = req.url;
if (raw == null) return;
obj = {
path: url,
pathname: url,
search: null,
query: null,
href: url,
_raw: url
};
let prev = req._parsedUrl;
if (prev && prev.raw === raw) return prev;
if (url.length > 1) {
if (toDecode && !req._decoded && !!~url.indexOf('%', 1)) {
let nxt = url;
try { nxt = decodeURIComponent(url) } catch (e) {/* bad */}
url = req.url = obj.href = obj.path = obj.pathname = obj._raw = nxt;
req._decoded = true;
}
let pathname=raw, search='', query;
if (raw.length > 1) {
let idx = raw.indexOf('?', 1);
let idx = url.indexOf('?', 1);
if (idx !== -1) {
search = raw.substring(idx);
pathname = raw.substring(0, idx);
if (search.length > 1) {
query = qs.parse(search.substring(1));
obj.search = url.substring(idx);
obj.query = obj.search.substring(1);
obj.pathname = url.substring(0, idx);
if (toDecode && obj.query.length > 0) {
obj.query = parse(obj.query);
}
}
}
return req._parsedUrl = { pathname, search, query, raw };
return (req._parsedUrl = obj);
}

10
node_modules/@polka/url/index.d.ts generated vendored
View File

@ -1,10 +0,0 @@
import type { IncomingMessage } from 'http';
export interface ParsedURL {
pathname: string;
search: string;
query: Record<string, string | string[]> | void;
raw: string;
}
export function parse(req: IncomingMessage): ParsedURL;

17
node_modules/@polka/url/package.json generated vendored
View File

@ -1,22 +1,12 @@
{
"version": "1.0.0-next.23",
"version": "1.0.0-next.9",
"name": "@polka/url",
"repository": "lukeed/polka",
"description": "Super fast, memoized `req.url` parser",
"module": "build.mjs",
"types": "index.d.ts",
"main": "build.js",
"license": "MIT",
"exports": {
".": {
"types": "./index.d.ts",
"import": "./build.mjs",
"require": "./build.js"
},
"./package.json": "./package.json"
},
"files": [
"*.d.ts",
"build.*"
],
"author": {
@ -26,5 +16,6 @@
},
"publishConfig": {
"access": "public"
}
}
},
"gitHead": "5c8f314e57c1edb3132f2556ce13fb6c2b4e839b"
}

53
node_modules/@polka/url/readme.md generated vendored
View File

@ -2,11 +2,11 @@
> Super fast, memoized `req.url` parser; _not_ limited to [Polka][polka]!
Parses the `url` from a [`IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage) request. The returned object will always only contain the following keys: `search`, `query`, `pathname`, and `raw`.
Parses the `url` from a [`IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage) request. The returned object will always only contain the following keys: `search`, `query`, `pathname`, `path`, `href`, and `_raw`.
> **Note:** This library does not process `protocol`, `hostname`, `port`, etc.<br>This is because the incoming `req.url` value only begins with the path information.
Parsed requests will be mutated with a `_parsedUrl` key, containing the returned output. This is used for future memoization, avoiding the need to fully parse the same `url` value multiple times.
Parsed requests will be mutated with a `_parsedUrl` key, containing the returned output. This is used for future memoization, so as to avoid parsing the same `url` value multiple times.
## Install
@ -19,37 +19,58 @@ $ npm install --save @polka/url
```js
const parse = require('@polka/url');
let req = {
url: '/foo/bar?fizz=buzz'
};
let output = parse(req);
//=> {
let req = { url: '/foo/bar?fizz=buzz' };
let foo = parse(req);
//=> { search: '?fizz=buzz',
//=> query: 'fizz=buzz',
//=> pathname: '/foo/bar',
//=> raw: '/foo/bar?fizz=buzz',
//=> search: '?fizz=buzz',
//=> query: {
//=> fizz: 'buzz'
//=> },
//=> }
//=> path: '/foo/bar?fizz=buzz',
//=> href: '/foo/bar?fizz=buzz',
//=> _raw: '/foo/bar?fizz=buzz' }
// Attaches result for future memoization
assert.deepEqual(output, req._parsedUrl); //=> true
assert.deepEqual(foo, req._parsedUrl); //=> true
// Example with `toDecode` param
req = { url: '/f%C3%B8%C3%B8%C3%9F%E2%88%82r?phone=%2b8675309' };
parse(req, true);
//=> { search: '?phone=+8675309',
//=> query: { phone: '+8675309' },
//=> pathname: '/føøß∂r',
//=> path: '/føøß∂r?phone=+8675309',
//=> href: '/føøß∂r?phone=+8675309',
//=> _raw: '/føøß∂r?phone=+8675309' }
// Attaches awareness key
assert(req._decoded); //=> true
```
## API
### url(req)
### url(req, toDecode)
Returns: `Object` or `undefined`
> **Important:** The `req` must have a `url` key, otherwise `undefined` will be returned.<br>If no input is provided at all, a `TypeError` will be thrown.
#### req
Type: `IncomingMessage` or `{ url: string }`
Type: `IncomingMessage` or `Object`
The incoming HTTP request (`req`) or a plain `Object` with a `url` key.
> **Note:** In Node.js servers, the [`req.url`](https://nodejs.org/api/http.html#http_message_url) begins with a pathname & does not include a `hash`.
#### toDecode
Type: `Boolean`<br>
Default: `false`
If enabled, the `url` will be fully decoded (via [`decodeURIComponent`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent)) and the output keys will be slightly different:
* `path`, `pathname`, `href`, `_raw` &mdash; will be the decoded strings
* `search` &mdash; if there is a value, will be decoded string, else remain `null`
* `query` &mdash; if there is a value, will be a decoded **object**, else remain `null`
Additionally, the `req` is mutated with `req._decoded = true` so as to prevent repetitive decoding.
## Benchmarks