mirror of
https://github.com/soconnor0919/beenpad.git
synced 2026-02-05 00:06:40 -05:00
first commit
This commit is contained in:
31
README.md
Normal file
31
README.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# beenpad
|
||||||
|
|
||||||
|
It's like `leftpad`, but it appends the string "been" to the left.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install beenpad
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
import { beenpad } from 'beenpad';
|
||||||
|
|
||||||
|
// Pad to length 7
|
||||||
|
console.log(beenpad('foo', 7));
|
||||||
|
// Output: "beenfoo"
|
||||||
|
|
||||||
|
// Pad to length 8
|
||||||
|
console.log(beenpad('foo', 8));
|
||||||
|
// Output: "beenbfoo"
|
||||||
|
|
||||||
|
// Pad to length 11
|
||||||
|
console.log(beenpad('foo', 11));
|
||||||
|
// Output: "beenbeenfoo"
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
ISC
|
||||||
9
dist/index.d.ts
vendored
Normal file
9
dist/index.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* Pads the current string with "been" (repeated, if needed) so that the resulting string reaches the given length.
|
||||||
|
* The padding is applied from the start (left) of the current string.
|
||||||
|
*
|
||||||
|
* @param str The string to pad.
|
||||||
|
* @param len The target length of the resulting string.
|
||||||
|
* @returns The padded string.
|
||||||
|
*/
|
||||||
|
export declare function beenpad(str: string, len: number): string;
|
||||||
21
dist/index.js
vendored
Normal file
21
dist/index.js
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.beenpad = beenpad;
|
||||||
|
/**
|
||||||
|
* Pads the current string with "been" (repeated, if needed) so that the resulting string reaches the given length.
|
||||||
|
* The padding is applied from the start (left) of the current string.
|
||||||
|
*
|
||||||
|
* @param str The string to pad.
|
||||||
|
* @param len The target length of the resulting string.
|
||||||
|
* @returns The padded string.
|
||||||
|
*/
|
||||||
|
function beenpad(str, len) {
|
||||||
|
if (str.length >= len) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
const padLen = len - str.length;
|
||||||
|
// We want to pad with "been" repeated.
|
||||||
|
// The padStart method usually takes a string and repeats it to fill the length.
|
||||||
|
// So we just need to pass "been" as the pad string.
|
||||||
|
return str.padStart(len, "been");
|
||||||
|
}
|
||||||
1
node_modules/.bin/esbuild
generated
vendored
Symbolic link
1
node_modules/.bin/esbuild
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../esbuild/bin/esbuild
|
||||||
1
node_modules/.bin/nanoid
generated
vendored
Symbolic link
1
node_modules/.bin/nanoid
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../nanoid/bin/nanoid.cjs
|
||||||
1
node_modules/.bin/rollup
generated
vendored
Symbolic link
1
node_modules/.bin/rollup
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../rollup/dist/bin/rollup
|
||||||
1
node_modules/.bin/tsc
generated
vendored
Symbolic link
1
node_modules/.bin/tsc
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../typescript/bin/tsc
|
||||||
1
node_modules/.bin/tsserver
generated
vendored
Symbolic link
1
node_modules/.bin/tsserver
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../typescript/bin/tsserver
|
||||||
1
node_modules/.bin/vite
generated
vendored
Symbolic link
1
node_modules/.bin/vite
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../vite/bin/vite.js
|
||||||
1
node_modules/.bin/vitest
generated
vendored
Symbolic link
1
node_modules/.bin/vitest
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../vitest/vitest.mjs
|
||||||
1
node_modules/.bin/why-is-node-running
generated
vendored
Symbolic link
1
node_modules/.bin/why-is-node-running
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../why-is-node-running/cli.js
|
||||||
792
node_modules/.package-lock.json
generated
vendored
Normal file
792
node_modules/.package-lock.json
generated
vendored
Normal file
@@ -0,0 +1,792 @@
|
|||||||
|
{
|
||||||
|
"name": "beenpad",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"node_modules/@esbuild/darwin-arm64": {
|
||||||
|
"version": "0.25.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
|
||||||
|
"integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/sourcemap-codec": {
|
||||||
|
"version": "1.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
||||||
|
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@polka/url": {
|
||||||
|
"version": "1.0.0-next.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
|
||||||
|
"integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||||
|
"version": "4.53.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz",
|
||||||
|
"integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@standard-schema/spec": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@types/chai": {
|
||||||
|
"version": "5.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz",
|
||||||
|
"integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/deep-eql": "*",
|
||||||
|
"assertion-error": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/deep-eql": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@types/estree": {
|
||||||
|
"version": "1.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
||||||
|
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@types/node": {
|
||||||
|
"version": "24.10.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
|
||||||
|
"integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~7.16.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vitest/expect": {
|
||||||
|
"version": "4.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.15.tgz",
|
||||||
|
"integrity": "sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@standard-schema/spec": "^1.0.0",
|
||||||
|
"@types/chai": "^5.2.2",
|
||||||
|
"@vitest/spy": "4.0.15",
|
||||||
|
"@vitest/utils": "4.0.15",
|
||||||
|
"chai": "^6.2.1",
|
||||||
|
"tinyrainbow": "^3.0.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/vitest"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vitest/mocker": {
|
||||||
|
"version": "4.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.15.tgz",
|
||||||
|
"integrity": "sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@vitest/spy": "4.0.15",
|
||||||
|
"estree-walker": "^3.0.3",
|
||||||
|
"magic-string": "^0.30.21"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/vitest"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"msw": "^2.4.9",
|
||||||
|
"vite": "^6.0.0 || ^7.0.0-0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"msw": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"vite": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vitest/pretty-format": {
|
||||||
|
"version": "4.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.15.tgz",
|
||||||
|
"integrity": "sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"tinyrainbow": "^3.0.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/vitest"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vitest/runner": {
|
||||||
|
"version": "4.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.15.tgz",
|
||||||
|
"integrity": "sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@vitest/utils": "4.0.15",
|
||||||
|
"pathe": "^2.0.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/vitest"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vitest/snapshot": {
|
||||||
|
"version": "4.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.15.tgz",
|
||||||
|
"integrity": "sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@vitest/pretty-format": "4.0.15",
|
||||||
|
"magic-string": "^0.30.21",
|
||||||
|
"pathe": "^2.0.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/vitest"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vitest/spy": {
|
||||||
|
"version": "4.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.15.tgz",
|
||||||
|
"integrity": "sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/vitest"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vitest/ui": {
|
||||||
|
"version": "4.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.15.tgz",
|
||||||
|
"integrity": "sha512-sxSyJMaKp45zI0u+lHrPuZM1ZJQ8FaVD35k+UxVrha1yyvQ+TZuUYllUixwvQXlB7ixoDc7skf3lQPopZIvaQw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@vitest/utils": "4.0.15",
|
||||||
|
"fflate": "^0.8.2",
|
||||||
|
"flatted": "^3.3.3",
|
||||||
|
"pathe": "^2.0.3",
|
||||||
|
"sirv": "^3.0.2",
|
||||||
|
"tinyglobby": "^0.2.15",
|
||||||
|
"tinyrainbow": "^3.0.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/vitest"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vitest": "4.0.15"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vitest/utils": {
|
||||||
|
"version": "4.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.15.tgz",
|
||||||
|
"integrity": "sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@vitest/pretty-format": "4.0.15",
|
||||||
|
"tinyrainbow": "^3.0.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/vitest"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/assertion-error": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/chai": {
|
||||||
|
"version": "6.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz",
|
||||||
|
"integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/es-module-lexer": {
|
||||||
|
"version": "1.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
|
||||||
|
"integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/esbuild": {
|
||||||
|
"version": "0.25.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
|
||||||
|
"integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"esbuild": "bin/esbuild"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@esbuild/aix-ppc64": "0.25.12",
|
||||||
|
"@esbuild/android-arm": "0.25.12",
|
||||||
|
"@esbuild/android-arm64": "0.25.12",
|
||||||
|
"@esbuild/android-x64": "0.25.12",
|
||||||
|
"@esbuild/darwin-arm64": "0.25.12",
|
||||||
|
"@esbuild/darwin-x64": "0.25.12",
|
||||||
|
"@esbuild/freebsd-arm64": "0.25.12",
|
||||||
|
"@esbuild/freebsd-x64": "0.25.12",
|
||||||
|
"@esbuild/linux-arm": "0.25.12",
|
||||||
|
"@esbuild/linux-arm64": "0.25.12",
|
||||||
|
"@esbuild/linux-ia32": "0.25.12",
|
||||||
|
"@esbuild/linux-loong64": "0.25.12",
|
||||||
|
"@esbuild/linux-mips64el": "0.25.12",
|
||||||
|
"@esbuild/linux-ppc64": "0.25.12",
|
||||||
|
"@esbuild/linux-riscv64": "0.25.12",
|
||||||
|
"@esbuild/linux-s390x": "0.25.12",
|
||||||
|
"@esbuild/linux-x64": "0.25.12",
|
||||||
|
"@esbuild/netbsd-arm64": "0.25.12",
|
||||||
|
"@esbuild/netbsd-x64": "0.25.12",
|
||||||
|
"@esbuild/openbsd-arm64": "0.25.12",
|
||||||
|
"@esbuild/openbsd-x64": "0.25.12",
|
||||||
|
"@esbuild/openharmony-arm64": "0.25.12",
|
||||||
|
"@esbuild/sunos-x64": "0.25.12",
|
||||||
|
"@esbuild/win32-arm64": "0.25.12",
|
||||||
|
"@esbuild/win32-ia32": "0.25.12",
|
||||||
|
"@esbuild/win32-x64": "0.25.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/estree-walker": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/expect-type": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fdir": {
|
||||||
|
"version": "6.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
|
||||||
|
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"picomatch": "^3 || ^4"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"picomatch": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fflate": {
|
||||||
|
"version": "0.8.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
|
||||||
|
"integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/flatted": {
|
||||||
|
"version": "3.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
|
||||||
|
"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/magic-string": {
|
||||||
|
"version": "0.30.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
|
||||||
|
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.5.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mrmime": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/nanoid": {
|
||||||
|
"version": "3.3.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
||||||
|
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"nanoid": "bin/nanoid.cjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/obug": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
"https://github.com/sponsors/sxzz",
|
||||||
|
"https://opencollective.com/debug"
|
||||||
|
],
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/pathe": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/picomatch": {
|
||||||
|
"version": "4.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
|
||||||
|
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/jonschlinkert"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/postcss": {
|
||||||
|
"version": "8.5.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
|
||||||
|
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/postcss/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": "^3.3.11",
|
||||||
|
"picocolors": "^1.1.1",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || >=14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/rollup": {
|
||||||
|
"version": "4.53.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz",
|
||||||
|
"integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "1.0.8"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"rollup": "dist/bin/rollup"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0",
|
||||||
|
"npm": ">=8.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@rollup/rollup-android-arm-eabi": "4.53.3",
|
||||||
|
"@rollup/rollup-android-arm64": "4.53.3",
|
||||||
|
"@rollup/rollup-darwin-arm64": "4.53.3",
|
||||||
|
"@rollup/rollup-darwin-x64": "4.53.3",
|
||||||
|
"@rollup/rollup-freebsd-arm64": "4.53.3",
|
||||||
|
"@rollup/rollup-freebsd-x64": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-arm-gnueabihf": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-arm-musleabihf": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-arm64-gnu": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-arm64-musl": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-loong64-gnu": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-ppc64-gnu": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-riscv64-gnu": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-riscv64-musl": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-s390x-gnu": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-x64-gnu": "4.53.3",
|
||||||
|
"@rollup/rollup-linux-x64-musl": "4.53.3",
|
||||||
|
"@rollup/rollup-openharmony-arm64": "4.53.3",
|
||||||
|
"@rollup/rollup-win32-arm64-msvc": "4.53.3",
|
||||||
|
"@rollup/rollup-win32-ia32-msvc": "4.53.3",
|
||||||
|
"@rollup/rollup-win32-x64-gnu": "4.53.3",
|
||||||
|
"@rollup/rollup-win32-x64-msvc": "4.53.3",
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/siginfo": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/sirv": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@polka/url": "^1.0.0-next.24",
|
||||||
|
"mrmime": "^2.0.0",
|
||||||
|
"totalist": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/source-map-js": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/stackback": {
|
||||||
|
"version": "0.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
|
||||||
|
"integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/std-env": {
|
||||||
|
"version": "3.10.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
|
||||||
|
"integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/tinybench": {
|
||||||
|
"version": "2.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
|
||||||
|
"integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/tinyexec": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tinyglobby": {
|
||||||
|
"version": "0.2.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
|
||||||
|
"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fdir": "^6.5.0",
|
||||||
|
"picomatch": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/SuperchupuDev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tinyrainbow": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/totalist": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/typescript": {
|
||||||
|
"version": "5.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
|
||||||
|
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc",
|
||||||
|
"tsserver": "bin/tsserver"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.17"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "7.16.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
|
||||||
|
"integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/vite": {
|
||||||
|
"version": "7.2.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/vite/-/vite-7.2.7.tgz",
|
||||||
|
"integrity": "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"esbuild": "^0.25.0",
|
||||||
|
"fdir": "^6.5.0",
|
||||||
|
"picomatch": "^4.0.3",
|
||||||
|
"postcss": "^8.5.6",
|
||||||
|
"rollup": "^4.43.0",
|
||||||
|
"tinyglobby": "^0.2.15"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"vite": "bin/vite.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^20.19.0 || >=22.12.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/vitejs/vite?sponsor=1"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "~2.3.3"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": "^20.19.0 || >=22.12.0",
|
||||||
|
"jiti": ">=1.21.0",
|
||||||
|
"less": "^4.0.0",
|
||||||
|
"lightningcss": "^1.21.0",
|
||||||
|
"sass": "^1.70.0",
|
||||||
|
"sass-embedded": "^1.70.0",
|
||||||
|
"stylus": ">=0.54.8",
|
||||||
|
"sugarss": "^5.0.0",
|
||||||
|
"terser": "^5.16.0",
|
||||||
|
"tsx": "^4.8.1",
|
||||||
|
"yaml": "^2.4.2"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"jiti": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"less": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"lightningcss": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sass": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sass-embedded": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"stylus": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sugarss": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"terser": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"tsx": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"yaml": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/vitest": {
|
||||||
|
"version": "4.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.15.tgz",
|
||||||
|
"integrity": "sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@vitest/expect": "4.0.15",
|
||||||
|
"@vitest/mocker": "4.0.15",
|
||||||
|
"@vitest/pretty-format": "4.0.15",
|
||||||
|
"@vitest/runner": "4.0.15",
|
||||||
|
"@vitest/snapshot": "4.0.15",
|
||||||
|
"@vitest/spy": "4.0.15",
|
||||||
|
"@vitest/utils": "4.0.15",
|
||||||
|
"es-module-lexer": "^1.7.0",
|
||||||
|
"expect-type": "^1.2.2",
|
||||||
|
"magic-string": "^0.30.21",
|
||||||
|
"obug": "^2.1.1",
|
||||||
|
"pathe": "^2.0.3",
|
||||||
|
"picomatch": "^4.0.3",
|
||||||
|
"std-env": "^3.10.0",
|
||||||
|
"tinybench": "^2.9.0",
|
||||||
|
"tinyexec": "^1.0.2",
|
||||||
|
"tinyglobby": "^0.2.15",
|
||||||
|
"tinyrainbow": "^3.0.3",
|
||||||
|
"vite": "^6.0.0 || ^7.0.0",
|
||||||
|
"why-is-node-running": "^2.3.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"vitest": "vitest.mjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^20.0.0 || ^22.0.0 || >=24.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://opencollective.com/vitest"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@edge-runtime/vm": "*",
|
||||||
|
"@opentelemetry/api": "^1.9.0",
|
||||||
|
"@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
|
||||||
|
"@vitest/browser-playwright": "4.0.15",
|
||||||
|
"@vitest/browser-preview": "4.0.15",
|
||||||
|
"@vitest/browser-webdriverio": "4.0.15",
|
||||||
|
"@vitest/ui": "4.0.15",
|
||||||
|
"happy-dom": "*",
|
||||||
|
"jsdom": "*"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@edge-runtime/vm": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@opentelemetry/api": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@vitest/browser-playwright": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@vitest/browser-preview": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@vitest/browser-webdriverio": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@vitest/ui": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"happy-dom": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"jsdom": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/why-is-node-running": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
|
||||||
|
"integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"siginfo": "^2.0.0",
|
||||||
|
"stackback": "0.0.2"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"why-is-node-running": "cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1
node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json
generated
vendored
Normal file
1
node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":"4.0.15","results":[[":test/index.test.ts",{"duration":1.5002910000000043,"failed":false}]]}
|
||||||
3
node_modules/@esbuild/darwin-arm64/README.md
generated
vendored
Normal file
3
node_modules/@esbuild/darwin-arm64/README.md
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# esbuild
|
||||||
|
|
||||||
|
This is the macOS ARM 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details.
|
||||||
BIN
node_modules/@esbuild/darwin-arm64/bin/esbuild
generated
vendored
Executable file
BIN
node_modules/@esbuild/darwin-arm64/bin/esbuild
generated
vendored
Executable file
Binary file not shown.
20
node_modules/@esbuild/darwin-arm64/package.json
generated
vendored
Normal file
20
node_modules/@esbuild/darwin-arm64/package.json
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "@esbuild/darwin-arm64",
|
||||||
|
"version": "0.25.12",
|
||||||
|
"description": "The macOS ARM 64-bit binary for esbuild, a JavaScript bundler.",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/evanw/esbuild.git"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"preferUnplugged": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
]
|
||||||
|
}
|
||||||
19
node_modules/@jridgewell/sourcemap-codec/LICENSE
generated
vendored
Normal file
19
node_modules/@jridgewell/sourcemap-codec/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
Copyright 2024 Justin Ridgewell <justin@ridgewell.name>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
264
node_modules/@jridgewell/sourcemap-codec/README.md
generated
vendored
Normal file
264
node_modules/@jridgewell/sourcemap-codec/README.md
generated
vendored
Normal file
@@ -0,0 +1,264 @@
|
|||||||
|
# @jridgewell/sourcemap-codec
|
||||||
|
|
||||||
|
Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit).
|
||||||
|
|
||||||
|
|
||||||
|
## Why?
|
||||||
|
|
||||||
|
Sourcemaps are difficult to generate and manipulate, because the `mappings` property – the part that actually links the generated code back to the original source – is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap.
|
||||||
|
|
||||||
|
This package makes the process slightly easier.
|
||||||
|
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install @jridgewell/sourcemap-codec
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { encode, decode } from '@jridgewell/sourcemap-codec';
|
||||||
|
|
||||||
|
var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
|
||||||
|
|
||||||
|
assert.deepEqual( decoded, [
|
||||||
|
// the first line (of the generated code) has no mappings,
|
||||||
|
// as shown by the starting semi-colon (which separates lines)
|
||||||
|
[],
|
||||||
|
|
||||||
|
// the second line contains four (comma-separated) segments
|
||||||
|
[
|
||||||
|
// segments are encoded as you'd expect:
|
||||||
|
// [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ]
|
||||||
|
|
||||||
|
// i.e. the first segment begins at column 2, and maps back to the second column
|
||||||
|
// of the second line (both zero-based) of the 0th source, and uses the 0th
|
||||||
|
// name in the `map.names` array
|
||||||
|
[ 2, 0, 2, 2, 0 ],
|
||||||
|
|
||||||
|
// the remaining segments are 4-length rather than 5-length,
|
||||||
|
// because they don't map a name
|
||||||
|
[ 4, 0, 2, 4 ],
|
||||||
|
[ 6, 0, 2, 5 ],
|
||||||
|
[ 7, 0, 2, 7 ]
|
||||||
|
],
|
||||||
|
|
||||||
|
// the final line contains two segments
|
||||||
|
[
|
||||||
|
[ 2, 1, 10, 19 ],
|
||||||
|
[ 12, 1, 11, 20 ]
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
var encoded = encode( decoded );
|
||||||
|
assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
|
||||||
|
```
|
||||||
|
|
||||||
|
## Benchmarks
|
||||||
|
|
||||||
|
```
|
||||||
|
node v20.10.0
|
||||||
|
|
||||||
|
amp.js.map - 45120 segments
|
||||||
|
|
||||||
|
Decode Memory Usage:
|
||||||
|
local code 5815135 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 5868160 bytes
|
||||||
|
sourcemap-codec 5492584 bytes
|
||||||
|
source-map-0.6.1 13569984 bytes
|
||||||
|
source-map-0.8.0 6390584 bytes
|
||||||
|
chrome dev tools 8011136 bytes
|
||||||
|
Smallest memory usage is sourcemap-codec
|
||||||
|
|
||||||
|
Decode speed:
|
||||||
|
decode: local code x 492 ops/sec ±1.22% (90 runs sampled)
|
||||||
|
decode: @jridgewell/sourcemap-codec 1.4.15 x 499 ops/sec ±1.16% (89 runs sampled)
|
||||||
|
decode: sourcemap-codec x 376 ops/sec ±1.66% (89 runs sampled)
|
||||||
|
decode: source-map-0.6.1 x 34.99 ops/sec ±0.94% (48 runs sampled)
|
||||||
|
decode: source-map-0.8.0 x 351 ops/sec ±0.07% (95 runs sampled)
|
||||||
|
chrome dev tools x 165 ops/sec ±0.91% (86 runs sampled)
|
||||||
|
Fastest is decode: @jridgewell/sourcemap-codec 1.4.15
|
||||||
|
|
||||||
|
Encode Memory Usage:
|
||||||
|
local code 444248 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 623024 bytes
|
||||||
|
sourcemap-codec 8696280 bytes
|
||||||
|
source-map-0.6.1 8745176 bytes
|
||||||
|
source-map-0.8.0 8736624 bytes
|
||||||
|
Smallest memory usage is local code
|
||||||
|
|
||||||
|
Encode speed:
|
||||||
|
encode: local code x 796 ops/sec ±0.11% (97 runs sampled)
|
||||||
|
encode: @jridgewell/sourcemap-codec 1.4.15 x 795 ops/sec ±0.25% (98 runs sampled)
|
||||||
|
encode: sourcemap-codec x 231 ops/sec ±0.83% (86 runs sampled)
|
||||||
|
encode: source-map-0.6.1 x 166 ops/sec ±0.57% (86 runs sampled)
|
||||||
|
encode: source-map-0.8.0 x 203 ops/sec ±0.45% (88 runs sampled)
|
||||||
|
Fastest is encode: local code,encode: @jridgewell/sourcemap-codec 1.4.15
|
||||||
|
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
|
||||||
|
babel.min.js.map - 347793 segments
|
||||||
|
|
||||||
|
Decode Memory Usage:
|
||||||
|
local code 35424960 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 35424696 bytes
|
||||||
|
sourcemap-codec 36033464 bytes
|
||||||
|
source-map-0.6.1 62253704 bytes
|
||||||
|
source-map-0.8.0 43843920 bytes
|
||||||
|
chrome dev tools 45111400 bytes
|
||||||
|
Smallest memory usage is @jridgewell/sourcemap-codec 1.4.15
|
||||||
|
|
||||||
|
Decode speed:
|
||||||
|
decode: local code x 38.18 ops/sec ±5.44% (52 runs sampled)
|
||||||
|
decode: @jridgewell/sourcemap-codec 1.4.15 x 38.36 ops/sec ±5.02% (52 runs sampled)
|
||||||
|
decode: sourcemap-codec x 34.05 ops/sec ±4.45% (47 runs sampled)
|
||||||
|
decode: source-map-0.6.1 x 4.31 ops/sec ±2.76% (15 runs sampled)
|
||||||
|
decode: source-map-0.8.0 x 55.60 ops/sec ±0.13% (73 runs sampled)
|
||||||
|
chrome dev tools x 16.94 ops/sec ±3.78% (46 runs sampled)
|
||||||
|
Fastest is decode: source-map-0.8.0
|
||||||
|
|
||||||
|
Encode Memory Usage:
|
||||||
|
local code 2606016 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 2626440 bytes
|
||||||
|
sourcemap-codec 21152576 bytes
|
||||||
|
source-map-0.6.1 25023928 bytes
|
||||||
|
source-map-0.8.0 25256448 bytes
|
||||||
|
Smallest memory usage is local code
|
||||||
|
|
||||||
|
Encode speed:
|
||||||
|
encode: local code x 127 ops/sec ±0.18% (83 runs sampled)
|
||||||
|
encode: @jridgewell/sourcemap-codec 1.4.15 x 128 ops/sec ±0.26% (83 runs sampled)
|
||||||
|
encode: sourcemap-codec x 29.31 ops/sec ±2.55% (53 runs sampled)
|
||||||
|
encode: source-map-0.6.1 x 18.85 ops/sec ±3.19% (36 runs sampled)
|
||||||
|
encode: source-map-0.8.0 x 19.34 ops/sec ±1.97% (36 runs sampled)
|
||||||
|
Fastest is encode: @jridgewell/sourcemap-codec 1.4.15
|
||||||
|
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
|
||||||
|
preact.js.map - 1992 segments
|
||||||
|
|
||||||
|
Decode Memory Usage:
|
||||||
|
local code 261696 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 244296 bytes
|
||||||
|
sourcemap-codec 302816 bytes
|
||||||
|
source-map-0.6.1 939176 bytes
|
||||||
|
source-map-0.8.0 336 bytes
|
||||||
|
chrome dev tools 587368 bytes
|
||||||
|
Smallest memory usage is source-map-0.8.0
|
||||||
|
|
||||||
|
Decode speed:
|
||||||
|
decode: local code x 17,782 ops/sec ±0.32% (97 runs sampled)
|
||||||
|
decode: @jridgewell/sourcemap-codec 1.4.15 x 17,863 ops/sec ±0.40% (100 runs sampled)
|
||||||
|
decode: sourcemap-codec x 12,453 ops/sec ±0.27% (101 runs sampled)
|
||||||
|
decode: source-map-0.6.1 x 1,288 ops/sec ±1.05% (96 runs sampled)
|
||||||
|
decode: source-map-0.8.0 x 9,289 ops/sec ±0.27% (101 runs sampled)
|
||||||
|
chrome dev tools x 4,769 ops/sec ±0.18% (100 runs sampled)
|
||||||
|
Fastest is decode: @jridgewell/sourcemap-codec 1.4.15
|
||||||
|
|
||||||
|
Encode Memory Usage:
|
||||||
|
local code 262944 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 25544 bytes
|
||||||
|
sourcemap-codec 323048 bytes
|
||||||
|
source-map-0.6.1 507808 bytes
|
||||||
|
source-map-0.8.0 507480 bytes
|
||||||
|
Smallest memory usage is @jridgewell/sourcemap-codec 1.4.15
|
||||||
|
|
||||||
|
Encode speed:
|
||||||
|
encode: local code x 24,207 ops/sec ±0.79% (95 runs sampled)
|
||||||
|
encode: @jridgewell/sourcemap-codec 1.4.15 x 24,288 ops/sec ±0.48% (96 runs sampled)
|
||||||
|
encode: sourcemap-codec x 6,761 ops/sec ±0.21% (100 runs sampled)
|
||||||
|
encode: source-map-0.6.1 x 5,374 ops/sec ±0.17% (99 runs sampled)
|
||||||
|
encode: source-map-0.8.0 x 5,633 ops/sec ±0.32% (99 runs sampled)
|
||||||
|
Fastest is encode: @jridgewell/sourcemap-codec 1.4.15,encode: local code
|
||||||
|
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
|
||||||
|
react.js.map - 5726 segments
|
||||||
|
|
||||||
|
Decode Memory Usage:
|
||||||
|
local code 678816 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 678816 bytes
|
||||||
|
sourcemap-codec 816400 bytes
|
||||||
|
source-map-0.6.1 2288864 bytes
|
||||||
|
source-map-0.8.0 721360 bytes
|
||||||
|
chrome dev tools 1012512 bytes
|
||||||
|
Smallest memory usage is local code
|
||||||
|
|
||||||
|
Decode speed:
|
||||||
|
decode: local code x 6,178 ops/sec ±0.19% (98 runs sampled)
|
||||||
|
decode: @jridgewell/sourcemap-codec 1.4.15 x 6,261 ops/sec ±0.22% (100 runs sampled)
|
||||||
|
decode: sourcemap-codec x 4,472 ops/sec ±0.90% (99 runs sampled)
|
||||||
|
decode: source-map-0.6.1 x 449 ops/sec ±0.31% (95 runs sampled)
|
||||||
|
decode: source-map-0.8.0 x 3,219 ops/sec ±0.13% (100 runs sampled)
|
||||||
|
chrome dev tools x 1,743 ops/sec ±0.20% (99 runs sampled)
|
||||||
|
Fastest is decode: @jridgewell/sourcemap-codec 1.4.15
|
||||||
|
|
||||||
|
Encode Memory Usage:
|
||||||
|
local code 140960 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 159808 bytes
|
||||||
|
sourcemap-codec 969304 bytes
|
||||||
|
source-map-0.6.1 930520 bytes
|
||||||
|
source-map-0.8.0 930248 bytes
|
||||||
|
Smallest memory usage is local code
|
||||||
|
|
||||||
|
Encode speed:
|
||||||
|
encode: local code x 8,013 ops/sec ±0.19% (100 runs sampled)
|
||||||
|
encode: @jridgewell/sourcemap-codec 1.4.15 x 7,989 ops/sec ±0.20% (101 runs sampled)
|
||||||
|
encode: sourcemap-codec x 2,472 ops/sec ±0.21% (99 runs sampled)
|
||||||
|
encode: source-map-0.6.1 x 2,200 ops/sec ±0.17% (99 runs sampled)
|
||||||
|
encode: source-map-0.8.0 x 2,220 ops/sec ±0.37% (99 runs sampled)
|
||||||
|
Fastest is encode: local code
|
||||||
|
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
|
||||||
|
vscode.map - 2141001 segments
|
||||||
|
|
||||||
|
Decode Memory Usage:
|
||||||
|
local code 198955264 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 199175352 bytes
|
||||||
|
sourcemap-codec 199102688 bytes
|
||||||
|
source-map-0.6.1 386323432 bytes
|
||||||
|
source-map-0.8.0 244116432 bytes
|
||||||
|
chrome dev tools 293734280 bytes
|
||||||
|
Smallest memory usage is local code
|
||||||
|
|
||||||
|
Decode speed:
|
||||||
|
decode: local code x 3.90 ops/sec ±22.21% (15 runs sampled)
|
||||||
|
decode: @jridgewell/sourcemap-codec 1.4.15 x 3.95 ops/sec ±23.53% (15 runs sampled)
|
||||||
|
decode: sourcemap-codec x 3.82 ops/sec ±17.94% (14 runs sampled)
|
||||||
|
decode: source-map-0.6.1 x 0.61 ops/sec ±7.81% (6 runs sampled)
|
||||||
|
decode: source-map-0.8.0 x 9.54 ops/sec ±0.28% (28 runs sampled)
|
||||||
|
chrome dev tools x 2.18 ops/sec ±10.58% (10 runs sampled)
|
||||||
|
Fastest is decode: source-map-0.8.0
|
||||||
|
|
||||||
|
Encode Memory Usage:
|
||||||
|
local code 13509880 bytes
|
||||||
|
@jridgewell/sourcemap-codec 1.4.15 13537648 bytes
|
||||||
|
sourcemap-codec 32540104 bytes
|
||||||
|
source-map-0.6.1 127531040 bytes
|
||||||
|
source-map-0.8.0 127535312 bytes
|
||||||
|
Smallest memory usage is local code
|
||||||
|
|
||||||
|
Encode speed:
|
||||||
|
encode: local code x 20.10 ops/sec ±0.19% (38 runs sampled)
|
||||||
|
encode: @jridgewell/sourcemap-codec 1.4.15 x 20.26 ops/sec ±0.32% (38 runs sampled)
|
||||||
|
encode: sourcemap-codec x 5.44 ops/sec ±1.64% (18 runs sampled)
|
||||||
|
encode: source-map-0.6.1 x 2.30 ops/sec ±4.79% (10 runs sampled)
|
||||||
|
encode: source-map-0.8.0 x 2.46 ops/sec ±6.53% (10 runs sampled)
|
||||||
|
Fastest is encode: @jridgewell/sourcemap-codec 1.4.15
|
||||||
|
```
|
||||||
|
|
||||||
|
# License
|
||||||
|
|
||||||
|
MIT
|
||||||
423
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
generated
vendored
Normal file
423
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
generated
vendored
Normal file
@@ -0,0 +1,423 @@
|
|||||||
|
// src/vlq.ts
|
||||||
|
var comma = ",".charCodeAt(0);
|
||||||
|
var semicolon = ";".charCodeAt(0);
|
||||||
|
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||||
|
var intToChar = new Uint8Array(64);
|
||||||
|
var charToInt = new Uint8Array(128);
|
||||||
|
for (let i = 0; i < chars.length; i++) {
|
||||||
|
const c = chars.charCodeAt(i);
|
||||||
|
intToChar[i] = c;
|
||||||
|
charToInt[c] = i;
|
||||||
|
}
|
||||||
|
function decodeInteger(reader, relative) {
|
||||||
|
let value = 0;
|
||||||
|
let shift = 0;
|
||||||
|
let integer = 0;
|
||||||
|
do {
|
||||||
|
const c = reader.next();
|
||||||
|
integer = charToInt[c];
|
||||||
|
value |= (integer & 31) << shift;
|
||||||
|
shift += 5;
|
||||||
|
} while (integer & 32);
|
||||||
|
const shouldNegate = value & 1;
|
||||||
|
value >>>= 1;
|
||||||
|
if (shouldNegate) {
|
||||||
|
value = -2147483648 | -value;
|
||||||
|
}
|
||||||
|
return relative + value;
|
||||||
|
}
|
||||||
|
function encodeInteger(builder, num, relative) {
|
||||||
|
let delta = num - relative;
|
||||||
|
delta = delta < 0 ? -delta << 1 | 1 : delta << 1;
|
||||||
|
do {
|
||||||
|
let clamped = delta & 31;
|
||||||
|
delta >>>= 5;
|
||||||
|
if (delta > 0) clamped |= 32;
|
||||||
|
builder.write(intToChar[clamped]);
|
||||||
|
} while (delta > 0);
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
function hasMoreVlq(reader, max) {
|
||||||
|
if (reader.pos >= max) return false;
|
||||||
|
return reader.peek() !== comma;
|
||||||
|
}
|
||||||
|
|
||||||
|
// src/strings.ts
|
||||||
|
var bufLength = 1024 * 16;
|
||||||
|
var td = typeof TextDecoder !== "undefined" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== "undefined" ? {
|
||||||
|
decode(buf) {
|
||||||
|
const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
|
||||||
|
return out.toString();
|
||||||
|
}
|
||||||
|
} : {
|
||||||
|
decode(buf) {
|
||||||
|
let out = "";
|
||||||
|
for (let i = 0; i < buf.length; i++) {
|
||||||
|
out += String.fromCharCode(buf[i]);
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var StringWriter = class {
|
||||||
|
constructor() {
|
||||||
|
this.pos = 0;
|
||||||
|
this.out = "";
|
||||||
|
this.buffer = new Uint8Array(bufLength);
|
||||||
|
}
|
||||||
|
write(v) {
|
||||||
|
const { buffer } = this;
|
||||||
|
buffer[this.pos++] = v;
|
||||||
|
if (this.pos === bufLength) {
|
||||||
|
this.out += td.decode(buffer);
|
||||||
|
this.pos = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
flush() {
|
||||||
|
const { buffer, out, pos } = this;
|
||||||
|
return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var StringReader = class {
|
||||||
|
constructor(buffer) {
|
||||||
|
this.pos = 0;
|
||||||
|
this.buffer = buffer;
|
||||||
|
}
|
||||||
|
next() {
|
||||||
|
return this.buffer.charCodeAt(this.pos++);
|
||||||
|
}
|
||||||
|
peek() {
|
||||||
|
return this.buffer.charCodeAt(this.pos);
|
||||||
|
}
|
||||||
|
indexOf(char) {
|
||||||
|
const { buffer, pos } = this;
|
||||||
|
const idx = buffer.indexOf(char, pos);
|
||||||
|
return idx === -1 ? buffer.length : idx;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/scopes.ts
|
||||||
|
var EMPTY = [];
|
||||||
|
function decodeOriginalScopes(input) {
|
||||||
|
const { length } = input;
|
||||||
|
const reader = new StringReader(input);
|
||||||
|
const scopes = [];
|
||||||
|
const stack = [];
|
||||||
|
let line = 0;
|
||||||
|
for (; reader.pos < length; reader.pos++) {
|
||||||
|
line = decodeInteger(reader, line);
|
||||||
|
const column = decodeInteger(reader, 0);
|
||||||
|
if (!hasMoreVlq(reader, length)) {
|
||||||
|
const last = stack.pop();
|
||||||
|
last[2] = line;
|
||||||
|
last[3] = column;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const kind = decodeInteger(reader, 0);
|
||||||
|
const fields = decodeInteger(reader, 0);
|
||||||
|
const hasName = fields & 1;
|
||||||
|
const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind];
|
||||||
|
let vars = EMPTY;
|
||||||
|
if (hasMoreVlq(reader, length)) {
|
||||||
|
vars = [];
|
||||||
|
do {
|
||||||
|
const varsIndex = decodeInteger(reader, 0);
|
||||||
|
vars.push(varsIndex);
|
||||||
|
} while (hasMoreVlq(reader, length));
|
||||||
|
}
|
||||||
|
scope.vars = vars;
|
||||||
|
scopes.push(scope);
|
||||||
|
stack.push(scope);
|
||||||
|
}
|
||||||
|
return scopes;
|
||||||
|
}
|
||||||
|
function encodeOriginalScopes(scopes) {
|
||||||
|
const writer = new StringWriter();
|
||||||
|
for (let i = 0; i < scopes.length; ) {
|
||||||
|
i = _encodeOriginalScopes(scopes, i, writer, [0]);
|
||||||
|
}
|
||||||
|
return writer.flush();
|
||||||
|
}
|
||||||
|
function _encodeOriginalScopes(scopes, index, writer, state) {
|
||||||
|
const scope = scopes[index];
|
||||||
|
const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;
|
||||||
|
if (index > 0) writer.write(comma);
|
||||||
|
state[0] = encodeInteger(writer, startLine, state[0]);
|
||||||
|
encodeInteger(writer, startColumn, 0);
|
||||||
|
encodeInteger(writer, kind, 0);
|
||||||
|
const fields = scope.length === 6 ? 1 : 0;
|
||||||
|
encodeInteger(writer, fields, 0);
|
||||||
|
if (scope.length === 6) encodeInteger(writer, scope[5], 0);
|
||||||
|
for (const v of vars) {
|
||||||
|
encodeInteger(writer, v, 0);
|
||||||
|
}
|
||||||
|
for (index++; index < scopes.length; ) {
|
||||||
|
const next = scopes[index];
|
||||||
|
const { 0: l, 1: c } = next;
|
||||||
|
if (l > endLine || l === endLine && c >= endColumn) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
index = _encodeOriginalScopes(scopes, index, writer, state);
|
||||||
|
}
|
||||||
|
writer.write(comma);
|
||||||
|
state[0] = encodeInteger(writer, endLine, state[0]);
|
||||||
|
encodeInteger(writer, endColumn, 0);
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
function decodeGeneratedRanges(input) {
|
||||||
|
const { length } = input;
|
||||||
|
const reader = new StringReader(input);
|
||||||
|
const ranges = [];
|
||||||
|
const stack = [];
|
||||||
|
let genLine = 0;
|
||||||
|
let definitionSourcesIndex = 0;
|
||||||
|
let definitionScopeIndex = 0;
|
||||||
|
let callsiteSourcesIndex = 0;
|
||||||
|
let callsiteLine = 0;
|
||||||
|
let callsiteColumn = 0;
|
||||||
|
let bindingLine = 0;
|
||||||
|
let bindingColumn = 0;
|
||||||
|
do {
|
||||||
|
const semi = reader.indexOf(";");
|
||||||
|
let genColumn = 0;
|
||||||
|
for (; reader.pos < semi; reader.pos++) {
|
||||||
|
genColumn = decodeInteger(reader, genColumn);
|
||||||
|
if (!hasMoreVlq(reader, semi)) {
|
||||||
|
const last = stack.pop();
|
||||||
|
last[2] = genLine;
|
||||||
|
last[3] = genColumn;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const fields = decodeInteger(reader, 0);
|
||||||
|
const hasDefinition = fields & 1;
|
||||||
|
const hasCallsite = fields & 2;
|
||||||
|
const hasScope = fields & 4;
|
||||||
|
let callsite = null;
|
||||||
|
let bindings = EMPTY;
|
||||||
|
let range;
|
||||||
|
if (hasDefinition) {
|
||||||
|
const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);
|
||||||
|
definitionScopeIndex = decodeInteger(
|
||||||
|
reader,
|
||||||
|
definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0
|
||||||
|
);
|
||||||
|
definitionSourcesIndex = defSourcesIndex;
|
||||||
|
range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];
|
||||||
|
} else {
|
||||||
|
range = [genLine, genColumn, 0, 0];
|
||||||
|
}
|
||||||
|
range.isScope = !!hasScope;
|
||||||
|
if (hasCallsite) {
|
||||||
|
const prevCsi = callsiteSourcesIndex;
|
||||||
|
const prevLine = callsiteLine;
|
||||||
|
callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);
|
||||||
|
const sameSource = prevCsi === callsiteSourcesIndex;
|
||||||
|
callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);
|
||||||
|
callsiteColumn = decodeInteger(
|
||||||
|
reader,
|
||||||
|
sameSource && prevLine === callsiteLine ? callsiteColumn : 0
|
||||||
|
);
|
||||||
|
callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];
|
||||||
|
}
|
||||||
|
range.callsite = callsite;
|
||||||
|
if (hasMoreVlq(reader, semi)) {
|
||||||
|
bindings = [];
|
||||||
|
do {
|
||||||
|
bindingLine = genLine;
|
||||||
|
bindingColumn = genColumn;
|
||||||
|
const expressionsCount = decodeInteger(reader, 0);
|
||||||
|
let expressionRanges;
|
||||||
|
if (expressionsCount < -1) {
|
||||||
|
expressionRanges = [[decodeInteger(reader, 0)]];
|
||||||
|
for (let i = -1; i > expressionsCount; i--) {
|
||||||
|
const prevBl = bindingLine;
|
||||||
|
bindingLine = decodeInteger(reader, bindingLine);
|
||||||
|
bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);
|
||||||
|
const expression = decodeInteger(reader, 0);
|
||||||
|
expressionRanges.push([expression, bindingLine, bindingColumn]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
expressionRanges = [[expressionsCount]];
|
||||||
|
}
|
||||||
|
bindings.push(expressionRanges);
|
||||||
|
} while (hasMoreVlq(reader, semi));
|
||||||
|
}
|
||||||
|
range.bindings = bindings;
|
||||||
|
ranges.push(range);
|
||||||
|
stack.push(range);
|
||||||
|
}
|
||||||
|
genLine++;
|
||||||
|
reader.pos = semi + 1;
|
||||||
|
} while (reader.pos < length);
|
||||||
|
return ranges;
|
||||||
|
}
|
||||||
|
function encodeGeneratedRanges(ranges) {
|
||||||
|
if (ranges.length === 0) return "";
|
||||||
|
const writer = new StringWriter();
|
||||||
|
for (let i = 0; i < ranges.length; ) {
|
||||||
|
i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);
|
||||||
|
}
|
||||||
|
return writer.flush();
|
||||||
|
}
|
||||||
|
function _encodeGeneratedRanges(ranges, index, writer, state) {
|
||||||
|
const range = ranges[index];
|
||||||
|
const {
|
||||||
|
0: startLine,
|
||||||
|
1: startColumn,
|
||||||
|
2: endLine,
|
||||||
|
3: endColumn,
|
||||||
|
isScope,
|
||||||
|
callsite,
|
||||||
|
bindings
|
||||||
|
} = range;
|
||||||
|
if (state[0] < startLine) {
|
||||||
|
catchupLine(writer, state[0], startLine);
|
||||||
|
state[0] = startLine;
|
||||||
|
state[1] = 0;
|
||||||
|
} else if (index > 0) {
|
||||||
|
writer.write(comma);
|
||||||
|
}
|
||||||
|
state[1] = encodeInteger(writer, range[1], state[1]);
|
||||||
|
const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0);
|
||||||
|
encodeInteger(writer, fields, 0);
|
||||||
|
if (range.length === 6) {
|
||||||
|
const { 4: sourcesIndex, 5: scopesIndex } = range;
|
||||||
|
if (sourcesIndex !== state[2]) {
|
||||||
|
state[3] = 0;
|
||||||
|
}
|
||||||
|
state[2] = encodeInteger(writer, sourcesIndex, state[2]);
|
||||||
|
state[3] = encodeInteger(writer, scopesIndex, state[3]);
|
||||||
|
}
|
||||||
|
if (callsite) {
|
||||||
|
const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;
|
||||||
|
if (sourcesIndex !== state[4]) {
|
||||||
|
state[5] = 0;
|
||||||
|
state[6] = 0;
|
||||||
|
} else if (callLine !== state[5]) {
|
||||||
|
state[6] = 0;
|
||||||
|
}
|
||||||
|
state[4] = encodeInteger(writer, sourcesIndex, state[4]);
|
||||||
|
state[5] = encodeInteger(writer, callLine, state[5]);
|
||||||
|
state[6] = encodeInteger(writer, callColumn, state[6]);
|
||||||
|
}
|
||||||
|
if (bindings) {
|
||||||
|
for (const binding of bindings) {
|
||||||
|
if (binding.length > 1) encodeInteger(writer, -binding.length, 0);
|
||||||
|
const expression = binding[0][0];
|
||||||
|
encodeInteger(writer, expression, 0);
|
||||||
|
let bindingStartLine = startLine;
|
||||||
|
let bindingStartColumn = startColumn;
|
||||||
|
for (let i = 1; i < binding.length; i++) {
|
||||||
|
const expRange = binding[i];
|
||||||
|
bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine);
|
||||||
|
bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn);
|
||||||
|
encodeInteger(writer, expRange[0], 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (index++; index < ranges.length; ) {
|
||||||
|
const next = ranges[index];
|
||||||
|
const { 0: l, 1: c } = next;
|
||||||
|
if (l > endLine || l === endLine && c >= endColumn) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
index = _encodeGeneratedRanges(ranges, index, writer, state);
|
||||||
|
}
|
||||||
|
if (state[0] < endLine) {
|
||||||
|
catchupLine(writer, state[0], endLine);
|
||||||
|
state[0] = endLine;
|
||||||
|
state[1] = 0;
|
||||||
|
} else {
|
||||||
|
writer.write(comma);
|
||||||
|
}
|
||||||
|
state[1] = encodeInteger(writer, endColumn, state[1]);
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
function catchupLine(writer, lastLine, line) {
|
||||||
|
do {
|
||||||
|
writer.write(semicolon);
|
||||||
|
} while (++lastLine < line);
|
||||||
|
}
|
||||||
|
|
||||||
|
// src/sourcemap-codec.ts
|
||||||
|
function decode(mappings) {
|
||||||
|
const { length } = mappings;
|
||||||
|
const reader = new StringReader(mappings);
|
||||||
|
const decoded = [];
|
||||||
|
let genColumn = 0;
|
||||||
|
let sourcesIndex = 0;
|
||||||
|
let sourceLine = 0;
|
||||||
|
let sourceColumn = 0;
|
||||||
|
let namesIndex = 0;
|
||||||
|
do {
|
||||||
|
const semi = reader.indexOf(";");
|
||||||
|
const line = [];
|
||||||
|
let sorted = true;
|
||||||
|
let lastCol = 0;
|
||||||
|
genColumn = 0;
|
||||||
|
while (reader.pos < semi) {
|
||||||
|
let seg;
|
||||||
|
genColumn = decodeInteger(reader, genColumn);
|
||||||
|
if (genColumn < lastCol) sorted = false;
|
||||||
|
lastCol = genColumn;
|
||||||
|
if (hasMoreVlq(reader, semi)) {
|
||||||
|
sourcesIndex = decodeInteger(reader, sourcesIndex);
|
||||||
|
sourceLine = decodeInteger(reader, sourceLine);
|
||||||
|
sourceColumn = decodeInteger(reader, sourceColumn);
|
||||||
|
if (hasMoreVlq(reader, semi)) {
|
||||||
|
namesIndex = decodeInteger(reader, namesIndex);
|
||||||
|
seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];
|
||||||
|
} else {
|
||||||
|
seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
seg = [genColumn];
|
||||||
|
}
|
||||||
|
line.push(seg);
|
||||||
|
reader.pos++;
|
||||||
|
}
|
||||||
|
if (!sorted) sort(line);
|
||||||
|
decoded.push(line);
|
||||||
|
reader.pos = semi + 1;
|
||||||
|
} while (reader.pos <= length);
|
||||||
|
return decoded;
|
||||||
|
}
|
||||||
|
function sort(line) {
|
||||||
|
line.sort(sortComparator);
|
||||||
|
}
|
||||||
|
function sortComparator(a, b) {
|
||||||
|
return a[0] - b[0];
|
||||||
|
}
|
||||||
|
function encode(decoded) {
|
||||||
|
const writer = new StringWriter();
|
||||||
|
let sourcesIndex = 0;
|
||||||
|
let sourceLine = 0;
|
||||||
|
let sourceColumn = 0;
|
||||||
|
let namesIndex = 0;
|
||||||
|
for (let i = 0; i < decoded.length; i++) {
|
||||||
|
const line = decoded[i];
|
||||||
|
if (i > 0) writer.write(semicolon);
|
||||||
|
if (line.length === 0) continue;
|
||||||
|
let genColumn = 0;
|
||||||
|
for (let j = 0; j < line.length; j++) {
|
||||||
|
const segment = line[j];
|
||||||
|
if (j > 0) writer.write(comma);
|
||||||
|
genColumn = encodeInteger(writer, segment[0], genColumn);
|
||||||
|
if (segment.length === 1) continue;
|
||||||
|
sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);
|
||||||
|
sourceLine = encodeInteger(writer, segment[2], sourceLine);
|
||||||
|
sourceColumn = encodeInteger(writer, segment[3], sourceColumn);
|
||||||
|
if (segment.length === 4) continue;
|
||||||
|
namesIndex = encodeInteger(writer, segment[4], namesIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return writer.flush();
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
decode,
|
||||||
|
decodeGeneratedRanges,
|
||||||
|
decodeOriginalScopes,
|
||||||
|
encode,
|
||||||
|
encodeGeneratedRanges,
|
||||||
|
encodeOriginalScopes
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=sourcemap-codec.mjs.map
|
||||||
6
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map
generated
vendored
Normal file
6
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
464
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js
generated
vendored
Normal file
464
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js
generated
vendored
Normal file
@@ -0,0 +1,464 @@
|
|||||||
|
(function (global, factory) {
|
||||||
|
if (typeof exports === 'object' && typeof module !== 'undefined') {
|
||||||
|
factory(module);
|
||||||
|
module.exports = def(module);
|
||||||
|
} else if (typeof define === 'function' && define.amd) {
|
||||||
|
define(['module'], function(mod) {
|
||||||
|
factory.apply(this, arguments);
|
||||||
|
mod.exports = def(mod);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const mod = { exports: {} };
|
||||||
|
factory(mod);
|
||||||
|
global = typeof globalThis !== 'undefined' ? globalThis : global || self;
|
||||||
|
global.sourcemapCodec = def(mod);
|
||||||
|
}
|
||||||
|
function def(m) { return 'default' in m.exports ? m.exports.default : m.exports; }
|
||||||
|
})(this, (function (module) {
|
||||||
|
"use strict";
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __export = (target, all) => {
|
||||||
|
for (var name in all)
|
||||||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||||||
|
};
|
||||||
|
var __copyProps = (to, from, except, desc) => {
|
||||||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||||||
|
for (let key of __getOwnPropNames(from))
|
||||||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||||
|
}
|
||||||
|
return to;
|
||||||
|
};
|
||||||
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// src/sourcemap-codec.ts
|
||||||
|
var sourcemap_codec_exports = {};
|
||||||
|
__export(sourcemap_codec_exports, {
|
||||||
|
decode: () => decode,
|
||||||
|
decodeGeneratedRanges: () => decodeGeneratedRanges,
|
||||||
|
decodeOriginalScopes: () => decodeOriginalScopes,
|
||||||
|
encode: () => encode,
|
||||||
|
encodeGeneratedRanges: () => encodeGeneratedRanges,
|
||||||
|
encodeOriginalScopes: () => encodeOriginalScopes
|
||||||
|
});
|
||||||
|
module.exports = __toCommonJS(sourcemap_codec_exports);
|
||||||
|
|
||||||
|
// src/vlq.ts
|
||||||
|
var comma = ",".charCodeAt(0);
|
||||||
|
var semicolon = ";".charCodeAt(0);
|
||||||
|
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||||
|
var intToChar = new Uint8Array(64);
|
||||||
|
var charToInt = new Uint8Array(128);
|
||||||
|
for (let i = 0; i < chars.length; i++) {
|
||||||
|
const c = chars.charCodeAt(i);
|
||||||
|
intToChar[i] = c;
|
||||||
|
charToInt[c] = i;
|
||||||
|
}
|
||||||
|
function decodeInteger(reader, relative) {
|
||||||
|
let value = 0;
|
||||||
|
let shift = 0;
|
||||||
|
let integer = 0;
|
||||||
|
do {
|
||||||
|
const c = reader.next();
|
||||||
|
integer = charToInt[c];
|
||||||
|
value |= (integer & 31) << shift;
|
||||||
|
shift += 5;
|
||||||
|
} while (integer & 32);
|
||||||
|
const shouldNegate = value & 1;
|
||||||
|
value >>>= 1;
|
||||||
|
if (shouldNegate) {
|
||||||
|
value = -2147483648 | -value;
|
||||||
|
}
|
||||||
|
return relative + value;
|
||||||
|
}
|
||||||
|
function encodeInteger(builder, num, relative) {
|
||||||
|
let delta = num - relative;
|
||||||
|
delta = delta < 0 ? -delta << 1 | 1 : delta << 1;
|
||||||
|
do {
|
||||||
|
let clamped = delta & 31;
|
||||||
|
delta >>>= 5;
|
||||||
|
if (delta > 0) clamped |= 32;
|
||||||
|
builder.write(intToChar[clamped]);
|
||||||
|
} while (delta > 0);
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
function hasMoreVlq(reader, max) {
|
||||||
|
if (reader.pos >= max) return false;
|
||||||
|
return reader.peek() !== comma;
|
||||||
|
}
|
||||||
|
|
||||||
|
// src/strings.ts
|
||||||
|
var bufLength = 1024 * 16;
|
||||||
|
var td = typeof TextDecoder !== "undefined" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== "undefined" ? {
|
||||||
|
decode(buf) {
|
||||||
|
const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
|
||||||
|
return out.toString();
|
||||||
|
}
|
||||||
|
} : {
|
||||||
|
decode(buf) {
|
||||||
|
let out = "";
|
||||||
|
for (let i = 0; i < buf.length; i++) {
|
||||||
|
out += String.fromCharCode(buf[i]);
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var StringWriter = class {
|
||||||
|
constructor() {
|
||||||
|
this.pos = 0;
|
||||||
|
this.out = "";
|
||||||
|
this.buffer = new Uint8Array(bufLength);
|
||||||
|
}
|
||||||
|
write(v) {
|
||||||
|
const { buffer } = this;
|
||||||
|
buffer[this.pos++] = v;
|
||||||
|
if (this.pos === bufLength) {
|
||||||
|
this.out += td.decode(buffer);
|
||||||
|
this.pos = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
flush() {
|
||||||
|
const { buffer, out, pos } = this;
|
||||||
|
return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var StringReader = class {
|
||||||
|
constructor(buffer) {
|
||||||
|
this.pos = 0;
|
||||||
|
this.buffer = buffer;
|
||||||
|
}
|
||||||
|
next() {
|
||||||
|
return this.buffer.charCodeAt(this.pos++);
|
||||||
|
}
|
||||||
|
peek() {
|
||||||
|
return this.buffer.charCodeAt(this.pos);
|
||||||
|
}
|
||||||
|
indexOf(char) {
|
||||||
|
const { buffer, pos } = this;
|
||||||
|
const idx = buffer.indexOf(char, pos);
|
||||||
|
return idx === -1 ? buffer.length : idx;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// src/scopes.ts
|
||||||
|
var EMPTY = [];
|
||||||
|
function decodeOriginalScopes(input) {
|
||||||
|
const { length } = input;
|
||||||
|
const reader = new StringReader(input);
|
||||||
|
const scopes = [];
|
||||||
|
const stack = [];
|
||||||
|
let line = 0;
|
||||||
|
for (; reader.pos < length; reader.pos++) {
|
||||||
|
line = decodeInteger(reader, line);
|
||||||
|
const column = decodeInteger(reader, 0);
|
||||||
|
if (!hasMoreVlq(reader, length)) {
|
||||||
|
const last = stack.pop();
|
||||||
|
last[2] = line;
|
||||||
|
last[3] = column;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const kind = decodeInteger(reader, 0);
|
||||||
|
const fields = decodeInteger(reader, 0);
|
||||||
|
const hasName = fields & 1;
|
||||||
|
const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind];
|
||||||
|
let vars = EMPTY;
|
||||||
|
if (hasMoreVlq(reader, length)) {
|
||||||
|
vars = [];
|
||||||
|
do {
|
||||||
|
const varsIndex = decodeInteger(reader, 0);
|
||||||
|
vars.push(varsIndex);
|
||||||
|
} while (hasMoreVlq(reader, length));
|
||||||
|
}
|
||||||
|
scope.vars = vars;
|
||||||
|
scopes.push(scope);
|
||||||
|
stack.push(scope);
|
||||||
|
}
|
||||||
|
return scopes;
|
||||||
|
}
|
||||||
|
function encodeOriginalScopes(scopes) {
|
||||||
|
const writer = new StringWriter();
|
||||||
|
for (let i = 0; i < scopes.length; ) {
|
||||||
|
i = _encodeOriginalScopes(scopes, i, writer, [0]);
|
||||||
|
}
|
||||||
|
return writer.flush();
|
||||||
|
}
|
||||||
|
function _encodeOriginalScopes(scopes, index, writer, state) {
|
||||||
|
const scope = scopes[index];
|
||||||
|
const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;
|
||||||
|
if (index > 0) writer.write(comma);
|
||||||
|
state[0] = encodeInteger(writer, startLine, state[0]);
|
||||||
|
encodeInteger(writer, startColumn, 0);
|
||||||
|
encodeInteger(writer, kind, 0);
|
||||||
|
const fields = scope.length === 6 ? 1 : 0;
|
||||||
|
encodeInteger(writer, fields, 0);
|
||||||
|
if (scope.length === 6) encodeInteger(writer, scope[5], 0);
|
||||||
|
for (const v of vars) {
|
||||||
|
encodeInteger(writer, v, 0);
|
||||||
|
}
|
||||||
|
for (index++; index < scopes.length; ) {
|
||||||
|
const next = scopes[index];
|
||||||
|
const { 0: l, 1: c } = next;
|
||||||
|
if (l > endLine || l === endLine && c >= endColumn) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
index = _encodeOriginalScopes(scopes, index, writer, state);
|
||||||
|
}
|
||||||
|
writer.write(comma);
|
||||||
|
state[0] = encodeInteger(writer, endLine, state[0]);
|
||||||
|
encodeInteger(writer, endColumn, 0);
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
function decodeGeneratedRanges(input) {
|
||||||
|
const { length } = input;
|
||||||
|
const reader = new StringReader(input);
|
||||||
|
const ranges = [];
|
||||||
|
const stack = [];
|
||||||
|
let genLine = 0;
|
||||||
|
let definitionSourcesIndex = 0;
|
||||||
|
let definitionScopeIndex = 0;
|
||||||
|
let callsiteSourcesIndex = 0;
|
||||||
|
let callsiteLine = 0;
|
||||||
|
let callsiteColumn = 0;
|
||||||
|
let bindingLine = 0;
|
||||||
|
let bindingColumn = 0;
|
||||||
|
do {
|
||||||
|
const semi = reader.indexOf(";");
|
||||||
|
let genColumn = 0;
|
||||||
|
for (; reader.pos < semi; reader.pos++) {
|
||||||
|
genColumn = decodeInteger(reader, genColumn);
|
||||||
|
if (!hasMoreVlq(reader, semi)) {
|
||||||
|
const last = stack.pop();
|
||||||
|
last[2] = genLine;
|
||||||
|
last[3] = genColumn;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const fields = decodeInteger(reader, 0);
|
||||||
|
const hasDefinition = fields & 1;
|
||||||
|
const hasCallsite = fields & 2;
|
||||||
|
const hasScope = fields & 4;
|
||||||
|
let callsite = null;
|
||||||
|
let bindings = EMPTY;
|
||||||
|
let range;
|
||||||
|
if (hasDefinition) {
|
||||||
|
const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);
|
||||||
|
definitionScopeIndex = decodeInteger(
|
||||||
|
reader,
|
||||||
|
definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0
|
||||||
|
);
|
||||||
|
definitionSourcesIndex = defSourcesIndex;
|
||||||
|
range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];
|
||||||
|
} else {
|
||||||
|
range = [genLine, genColumn, 0, 0];
|
||||||
|
}
|
||||||
|
range.isScope = !!hasScope;
|
||||||
|
if (hasCallsite) {
|
||||||
|
const prevCsi = callsiteSourcesIndex;
|
||||||
|
const prevLine = callsiteLine;
|
||||||
|
callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);
|
||||||
|
const sameSource = prevCsi === callsiteSourcesIndex;
|
||||||
|
callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);
|
||||||
|
callsiteColumn = decodeInteger(
|
||||||
|
reader,
|
||||||
|
sameSource && prevLine === callsiteLine ? callsiteColumn : 0
|
||||||
|
);
|
||||||
|
callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];
|
||||||
|
}
|
||||||
|
range.callsite = callsite;
|
||||||
|
if (hasMoreVlq(reader, semi)) {
|
||||||
|
bindings = [];
|
||||||
|
do {
|
||||||
|
bindingLine = genLine;
|
||||||
|
bindingColumn = genColumn;
|
||||||
|
const expressionsCount = decodeInteger(reader, 0);
|
||||||
|
let expressionRanges;
|
||||||
|
if (expressionsCount < -1) {
|
||||||
|
expressionRanges = [[decodeInteger(reader, 0)]];
|
||||||
|
for (let i = -1; i > expressionsCount; i--) {
|
||||||
|
const prevBl = bindingLine;
|
||||||
|
bindingLine = decodeInteger(reader, bindingLine);
|
||||||
|
bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);
|
||||||
|
const expression = decodeInteger(reader, 0);
|
||||||
|
expressionRanges.push([expression, bindingLine, bindingColumn]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
expressionRanges = [[expressionsCount]];
|
||||||
|
}
|
||||||
|
bindings.push(expressionRanges);
|
||||||
|
} while (hasMoreVlq(reader, semi));
|
||||||
|
}
|
||||||
|
range.bindings = bindings;
|
||||||
|
ranges.push(range);
|
||||||
|
stack.push(range);
|
||||||
|
}
|
||||||
|
genLine++;
|
||||||
|
reader.pos = semi + 1;
|
||||||
|
} while (reader.pos < length);
|
||||||
|
return ranges;
|
||||||
|
}
|
||||||
|
function encodeGeneratedRanges(ranges) {
|
||||||
|
if (ranges.length === 0) return "";
|
||||||
|
const writer = new StringWriter();
|
||||||
|
for (let i = 0; i < ranges.length; ) {
|
||||||
|
i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);
|
||||||
|
}
|
||||||
|
return writer.flush();
|
||||||
|
}
|
||||||
|
function _encodeGeneratedRanges(ranges, index, writer, state) {
|
||||||
|
const range = ranges[index];
|
||||||
|
const {
|
||||||
|
0: startLine,
|
||||||
|
1: startColumn,
|
||||||
|
2: endLine,
|
||||||
|
3: endColumn,
|
||||||
|
isScope,
|
||||||
|
callsite,
|
||||||
|
bindings
|
||||||
|
} = range;
|
||||||
|
if (state[0] < startLine) {
|
||||||
|
catchupLine(writer, state[0], startLine);
|
||||||
|
state[0] = startLine;
|
||||||
|
state[1] = 0;
|
||||||
|
} else if (index > 0) {
|
||||||
|
writer.write(comma);
|
||||||
|
}
|
||||||
|
state[1] = encodeInteger(writer, range[1], state[1]);
|
||||||
|
const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0);
|
||||||
|
encodeInteger(writer, fields, 0);
|
||||||
|
if (range.length === 6) {
|
||||||
|
const { 4: sourcesIndex, 5: scopesIndex } = range;
|
||||||
|
if (sourcesIndex !== state[2]) {
|
||||||
|
state[3] = 0;
|
||||||
|
}
|
||||||
|
state[2] = encodeInteger(writer, sourcesIndex, state[2]);
|
||||||
|
state[3] = encodeInteger(writer, scopesIndex, state[3]);
|
||||||
|
}
|
||||||
|
if (callsite) {
|
||||||
|
const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;
|
||||||
|
if (sourcesIndex !== state[4]) {
|
||||||
|
state[5] = 0;
|
||||||
|
state[6] = 0;
|
||||||
|
} else if (callLine !== state[5]) {
|
||||||
|
state[6] = 0;
|
||||||
|
}
|
||||||
|
state[4] = encodeInteger(writer, sourcesIndex, state[4]);
|
||||||
|
state[5] = encodeInteger(writer, callLine, state[5]);
|
||||||
|
state[6] = encodeInteger(writer, callColumn, state[6]);
|
||||||
|
}
|
||||||
|
if (bindings) {
|
||||||
|
for (const binding of bindings) {
|
||||||
|
if (binding.length > 1) encodeInteger(writer, -binding.length, 0);
|
||||||
|
const expression = binding[0][0];
|
||||||
|
encodeInteger(writer, expression, 0);
|
||||||
|
let bindingStartLine = startLine;
|
||||||
|
let bindingStartColumn = startColumn;
|
||||||
|
for (let i = 1; i < binding.length; i++) {
|
||||||
|
const expRange = binding[i];
|
||||||
|
bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine);
|
||||||
|
bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn);
|
||||||
|
encodeInteger(writer, expRange[0], 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (index++; index < ranges.length; ) {
|
||||||
|
const next = ranges[index];
|
||||||
|
const { 0: l, 1: c } = next;
|
||||||
|
if (l > endLine || l === endLine && c >= endColumn) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
index = _encodeGeneratedRanges(ranges, index, writer, state);
|
||||||
|
}
|
||||||
|
if (state[0] < endLine) {
|
||||||
|
catchupLine(writer, state[0], endLine);
|
||||||
|
state[0] = endLine;
|
||||||
|
state[1] = 0;
|
||||||
|
} else {
|
||||||
|
writer.write(comma);
|
||||||
|
}
|
||||||
|
state[1] = encodeInteger(writer, endColumn, state[1]);
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
function catchupLine(writer, lastLine, line) {
|
||||||
|
do {
|
||||||
|
writer.write(semicolon);
|
||||||
|
} while (++lastLine < line);
|
||||||
|
}
|
||||||
|
|
||||||
|
// src/sourcemap-codec.ts
|
||||||
|
function decode(mappings) {
|
||||||
|
const { length } = mappings;
|
||||||
|
const reader = new StringReader(mappings);
|
||||||
|
const decoded = [];
|
||||||
|
let genColumn = 0;
|
||||||
|
let sourcesIndex = 0;
|
||||||
|
let sourceLine = 0;
|
||||||
|
let sourceColumn = 0;
|
||||||
|
let namesIndex = 0;
|
||||||
|
do {
|
||||||
|
const semi = reader.indexOf(";");
|
||||||
|
const line = [];
|
||||||
|
let sorted = true;
|
||||||
|
let lastCol = 0;
|
||||||
|
genColumn = 0;
|
||||||
|
while (reader.pos < semi) {
|
||||||
|
let seg;
|
||||||
|
genColumn = decodeInteger(reader, genColumn);
|
||||||
|
if (genColumn < lastCol) sorted = false;
|
||||||
|
lastCol = genColumn;
|
||||||
|
if (hasMoreVlq(reader, semi)) {
|
||||||
|
sourcesIndex = decodeInteger(reader, sourcesIndex);
|
||||||
|
sourceLine = decodeInteger(reader, sourceLine);
|
||||||
|
sourceColumn = decodeInteger(reader, sourceColumn);
|
||||||
|
if (hasMoreVlq(reader, semi)) {
|
||||||
|
namesIndex = decodeInteger(reader, namesIndex);
|
||||||
|
seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];
|
||||||
|
} else {
|
||||||
|
seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
seg = [genColumn];
|
||||||
|
}
|
||||||
|
line.push(seg);
|
||||||
|
reader.pos++;
|
||||||
|
}
|
||||||
|
if (!sorted) sort(line);
|
||||||
|
decoded.push(line);
|
||||||
|
reader.pos = semi + 1;
|
||||||
|
} while (reader.pos <= length);
|
||||||
|
return decoded;
|
||||||
|
}
|
||||||
|
function sort(line) {
|
||||||
|
line.sort(sortComparator);
|
||||||
|
}
|
||||||
|
function sortComparator(a, b) {
|
||||||
|
return a[0] - b[0];
|
||||||
|
}
|
||||||
|
function encode(decoded) {
|
||||||
|
const writer = new StringWriter();
|
||||||
|
let sourcesIndex = 0;
|
||||||
|
let sourceLine = 0;
|
||||||
|
let sourceColumn = 0;
|
||||||
|
let namesIndex = 0;
|
||||||
|
for (let i = 0; i < decoded.length; i++) {
|
||||||
|
const line = decoded[i];
|
||||||
|
if (i > 0) writer.write(semicolon);
|
||||||
|
if (line.length === 0) continue;
|
||||||
|
let genColumn = 0;
|
||||||
|
for (let j = 0; j < line.length; j++) {
|
||||||
|
const segment = line[j];
|
||||||
|
if (j > 0) writer.write(comma);
|
||||||
|
genColumn = encodeInteger(writer, segment[0], genColumn);
|
||||||
|
if (segment.length === 1) continue;
|
||||||
|
sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);
|
||||||
|
sourceLine = encodeInteger(writer, segment[2], sourceLine);
|
||||||
|
sourceColumn = encodeInteger(writer, segment[3], sourceColumn);
|
||||||
|
if (segment.length === 4) continue;
|
||||||
|
namesIndex = encodeInteger(writer, segment[4], namesIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return writer.flush();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
//# sourceMappingURL=sourcemap-codec.umd.js.map
|
||||||
6
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map
generated
vendored
Normal file
6
node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
63
node_modules/@jridgewell/sourcemap-codec/package.json
generated
vendored
Normal file
63
node_modules/@jridgewell/sourcemap-codec/package.json
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"name": "@jridgewell/sourcemap-codec",
|
||||||
|
"version": "1.5.5",
|
||||||
|
"description": "Encode/decode sourcemap mappings",
|
||||||
|
"keywords": [
|
||||||
|
"sourcemap",
|
||||||
|
"vlq"
|
||||||
|
],
|
||||||
|
"main": "dist/sourcemap-codec.umd.js",
|
||||||
|
"module": "dist/sourcemap-codec.mjs",
|
||||||
|
"types": "types/sourcemap-codec.d.cts",
|
||||||
|
"files": [
|
||||||
|
"dist",
|
||||||
|
"src",
|
||||||
|
"types"
|
||||||
|
],
|
||||||
|
"exports": {
|
||||||
|
".": [
|
||||||
|
{
|
||||||
|
"import": {
|
||||||
|
"types": "./types/sourcemap-codec.d.mts",
|
||||||
|
"default": "./dist/sourcemap-codec.mjs"
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"types": "./types/sourcemap-codec.d.cts",
|
||||||
|
"default": "./dist/sourcemap-codec.umd.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"./dist/sourcemap-codec.umd.js"
|
||||||
|
],
|
||||||
|
"./package.json": "./package.json"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"benchmark": "run-s build:code benchmark:*",
|
||||||
|
"benchmark:install": "cd benchmark && npm install",
|
||||||
|
"benchmark:only": "node --expose-gc benchmark/index.js",
|
||||||
|
"build": "run-s -n build:code build:types",
|
||||||
|
"build:code": "node ../../esbuild.mjs sourcemap-codec.ts",
|
||||||
|
"build:types": "run-s build:types:force build:types:emit build:types:mts",
|
||||||
|
"build:types:force": "rimraf tsconfig.build.tsbuildinfo",
|
||||||
|
"build:types:emit": "tsc --project tsconfig.build.json",
|
||||||
|
"build:types:mts": "node ../../mts-types.mjs",
|
||||||
|
"clean": "run-s -n clean:code clean:types",
|
||||||
|
"clean:code": "tsc --build --clean tsconfig.build.json",
|
||||||
|
"clean:types": "rimraf dist types",
|
||||||
|
"test": "run-s -n test:types test:only test:format",
|
||||||
|
"test:format": "prettier --check '{src,test}/**/*.ts'",
|
||||||
|
"test:only": "mocha",
|
||||||
|
"test:types": "eslint '{src,test}/**/*.ts'",
|
||||||
|
"lint": "run-s -n lint:types lint:format",
|
||||||
|
"lint:format": "npm run test:format -- --write",
|
||||||
|
"lint:types": "npm run test:types -- --fix",
|
||||||
|
"prepublishOnly": "npm run-s -n build test"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/jridgewell/sourcemaps/tree/main/packages/sourcemap-codec",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/jridgewell/sourcemaps.git",
|
||||||
|
"directory": "packages/sourcemap-codec"
|
||||||
|
},
|
||||||
|
"author": "Justin Ridgewell <justin@ridgewell.name>",
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
345
node_modules/@jridgewell/sourcemap-codec/src/scopes.ts
generated
vendored
Normal file
345
node_modules/@jridgewell/sourcemap-codec/src/scopes.ts
generated
vendored
Normal file
@@ -0,0 +1,345 @@
|
|||||||
|
import { StringReader, StringWriter } from './strings';
|
||||||
|
import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';
|
||||||
|
|
||||||
|
const EMPTY: any[] = [];
|
||||||
|
|
||||||
|
type Line = number;
|
||||||
|
type Column = number;
|
||||||
|
type Kind = number;
|
||||||
|
type Name = number;
|
||||||
|
type Var = number;
|
||||||
|
type SourcesIndex = number;
|
||||||
|
type ScopesIndex = number;
|
||||||
|
|
||||||
|
type Mix<A, B, O> = (A & O) | (B & O);
|
||||||
|
|
||||||
|
export type OriginalScope = Mix<
|
||||||
|
[Line, Column, Line, Column, Kind],
|
||||||
|
[Line, Column, Line, Column, Kind, Name],
|
||||||
|
{ vars: Var[] }
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type GeneratedRange = Mix<
|
||||||
|
[Line, Column, Line, Column],
|
||||||
|
[Line, Column, Line, Column, SourcesIndex, ScopesIndex],
|
||||||
|
{
|
||||||
|
callsite: CallSite | null;
|
||||||
|
bindings: Binding[];
|
||||||
|
isScope: boolean;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
export type CallSite = [SourcesIndex, Line, Column];
|
||||||
|
type Binding = BindingExpressionRange[];
|
||||||
|
export type BindingExpressionRange = [Name] | [Name, Line, Column];
|
||||||
|
|
||||||
|
export function decodeOriginalScopes(input: string): OriginalScope[] {
|
||||||
|
const { length } = input;
|
||||||
|
const reader = new StringReader(input);
|
||||||
|
const scopes: OriginalScope[] = [];
|
||||||
|
const stack: OriginalScope[] = [];
|
||||||
|
let line = 0;
|
||||||
|
|
||||||
|
for (; reader.pos < length; reader.pos++) {
|
||||||
|
line = decodeInteger(reader, line);
|
||||||
|
const column = decodeInteger(reader, 0);
|
||||||
|
|
||||||
|
if (!hasMoreVlq(reader, length)) {
|
||||||
|
const last = stack.pop()!;
|
||||||
|
last[2] = line;
|
||||||
|
last[3] = column;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const kind = decodeInteger(reader, 0);
|
||||||
|
const fields = decodeInteger(reader, 0);
|
||||||
|
const hasName = fields & 0b0001;
|
||||||
|
|
||||||
|
const scope: OriginalScope = (
|
||||||
|
hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]
|
||||||
|
) as OriginalScope;
|
||||||
|
|
||||||
|
let vars: Var[] = EMPTY;
|
||||||
|
if (hasMoreVlq(reader, length)) {
|
||||||
|
vars = [];
|
||||||
|
do {
|
||||||
|
const varsIndex = decodeInteger(reader, 0);
|
||||||
|
vars.push(varsIndex);
|
||||||
|
} while (hasMoreVlq(reader, length));
|
||||||
|
}
|
||||||
|
scope.vars = vars;
|
||||||
|
|
||||||
|
scopes.push(scope);
|
||||||
|
stack.push(scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
return scopes;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function encodeOriginalScopes(scopes: OriginalScope[]): string {
|
||||||
|
const writer = new StringWriter();
|
||||||
|
|
||||||
|
for (let i = 0; i < scopes.length; ) {
|
||||||
|
i = _encodeOriginalScopes(scopes, i, writer, [0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return writer.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
function _encodeOriginalScopes(
|
||||||
|
scopes: OriginalScope[],
|
||||||
|
index: number,
|
||||||
|
writer: StringWriter,
|
||||||
|
state: [
|
||||||
|
number, // GenColumn
|
||||||
|
],
|
||||||
|
): number {
|
||||||
|
const scope = scopes[index];
|
||||||
|
const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;
|
||||||
|
|
||||||
|
if (index > 0) writer.write(comma);
|
||||||
|
|
||||||
|
state[0] = encodeInteger(writer, startLine, state[0]);
|
||||||
|
encodeInteger(writer, startColumn, 0);
|
||||||
|
encodeInteger(writer, kind, 0);
|
||||||
|
|
||||||
|
const fields = scope.length === 6 ? 0b0001 : 0;
|
||||||
|
encodeInteger(writer, fields, 0);
|
||||||
|
if (scope.length === 6) encodeInteger(writer, scope[5], 0);
|
||||||
|
|
||||||
|
for (const v of vars) {
|
||||||
|
encodeInteger(writer, v, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (index++; index < scopes.length; ) {
|
||||||
|
const next = scopes[index];
|
||||||
|
const { 0: l, 1: c } = next;
|
||||||
|
if (l > endLine || (l === endLine && c >= endColumn)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
index = _encodeOriginalScopes(scopes, index, writer, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.write(comma);
|
||||||
|
state[0] = encodeInteger(writer, endLine, state[0]);
|
||||||
|
encodeInteger(writer, endColumn, 0);
|
||||||
|
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function decodeGeneratedRanges(input: string): GeneratedRange[] {
|
||||||
|
const { length } = input;
|
||||||
|
const reader = new StringReader(input);
|
||||||
|
const ranges: GeneratedRange[] = [];
|
||||||
|
const stack: GeneratedRange[] = [];
|
||||||
|
|
||||||
|
let genLine = 0;
|
||||||
|
let definitionSourcesIndex = 0;
|
||||||
|
let definitionScopeIndex = 0;
|
||||||
|
let callsiteSourcesIndex = 0;
|
||||||
|
let callsiteLine = 0;
|
||||||
|
let callsiteColumn = 0;
|
||||||
|
let bindingLine = 0;
|
||||||
|
let bindingColumn = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
const semi = reader.indexOf(';');
|
||||||
|
let genColumn = 0;
|
||||||
|
|
||||||
|
for (; reader.pos < semi; reader.pos++) {
|
||||||
|
genColumn = decodeInteger(reader, genColumn);
|
||||||
|
|
||||||
|
if (!hasMoreVlq(reader, semi)) {
|
||||||
|
const last = stack.pop()!;
|
||||||
|
last[2] = genLine;
|
||||||
|
last[3] = genColumn;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const fields = decodeInteger(reader, 0);
|
||||||
|
const hasDefinition = fields & 0b0001;
|
||||||
|
const hasCallsite = fields & 0b0010;
|
||||||
|
const hasScope = fields & 0b0100;
|
||||||
|
|
||||||
|
let callsite: CallSite | null = null;
|
||||||
|
let bindings: Binding[] = EMPTY;
|
||||||
|
let range: GeneratedRange;
|
||||||
|
if (hasDefinition) {
|
||||||
|
const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);
|
||||||
|
definitionScopeIndex = decodeInteger(
|
||||||
|
reader,
|
||||||
|
definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
definitionSourcesIndex = defSourcesIndex;
|
||||||
|
range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange;
|
||||||
|
} else {
|
||||||
|
range = [genLine, genColumn, 0, 0] as GeneratedRange;
|
||||||
|
}
|
||||||
|
|
||||||
|
range.isScope = !!hasScope;
|
||||||
|
|
||||||
|
if (hasCallsite) {
|
||||||
|
const prevCsi = callsiteSourcesIndex;
|
||||||
|
const prevLine = callsiteLine;
|
||||||
|
callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);
|
||||||
|
const sameSource = prevCsi === callsiteSourcesIndex;
|
||||||
|
callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);
|
||||||
|
callsiteColumn = decodeInteger(
|
||||||
|
reader,
|
||||||
|
sameSource && prevLine === callsiteLine ? callsiteColumn : 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];
|
||||||
|
}
|
||||||
|
range.callsite = callsite;
|
||||||
|
|
||||||
|
if (hasMoreVlq(reader, semi)) {
|
||||||
|
bindings = [];
|
||||||
|
do {
|
||||||
|
bindingLine = genLine;
|
||||||
|
bindingColumn = genColumn;
|
||||||
|
const expressionsCount = decodeInteger(reader, 0);
|
||||||
|
let expressionRanges: BindingExpressionRange[];
|
||||||
|
if (expressionsCount < -1) {
|
||||||
|
expressionRanges = [[decodeInteger(reader, 0)]];
|
||||||
|
for (let i = -1; i > expressionsCount; i--) {
|
||||||
|
const prevBl = bindingLine;
|
||||||
|
bindingLine = decodeInteger(reader, bindingLine);
|
||||||
|
bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);
|
||||||
|
const expression = decodeInteger(reader, 0);
|
||||||
|
expressionRanges.push([expression, bindingLine, bindingColumn]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
expressionRanges = [[expressionsCount]];
|
||||||
|
}
|
||||||
|
bindings.push(expressionRanges);
|
||||||
|
} while (hasMoreVlq(reader, semi));
|
||||||
|
}
|
||||||
|
range.bindings = bindings;
|
||||||
|
|
||||||
|
ranges.push(range);
|
||||||
|
stack.push(range);
|
||||||
|
}
|
||||||
|
|
||||||
|
genLine++;
|
||||||
|
reader.pos = semi + 1;
|
||||||
|
} while (reader.pos < length);
|
||||||
|
|
||||||
|
return ranges;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function encodeGeneratedRanges(ranges: GeneratedRange[]): string {
|
||||||
|
if (ranges.length === 0) return '';
|
||||||
|
|
||||||
|
const writer = new StringWriter();
|
||||||
|
|
||||||
|
for (let i = 0; i < ranges.length; ) {
|
||||||
|
i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return writer.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
function _encodeGeneratedRanges(
|
||||||
|
ranges: GeneratedRange[],
|
||||||
|
index: number,
|
||||||
|
writer: StringWriter,
|
||||||
|
state: [
|
||||||
|
number, // GenLine
|
||||||
|
number, // GenColumn
|
||||||
|
number, // DefSourcesIndex
|
||||||
|
number, // DefScopesIndex
|
||||||
|
number, // CallSourcesIndex
|
||||||
|
number, // CallLine
|
||||||
|
number, // CallColumn
|
||||||
|
],
|
||||||
|
): number {
|
||||||
|
const range = ranges[index];
|
||||||
|
const {
|
||||||
|
0: startLine,
|
||||||
|
1: startColumn,
|
||||||
|
2: endLine,
|
||||||
|
3: endColumn,
|
||||||
|
isScope,
|
||||||
|
callsite,
|
||||||
|
bindings,
|
||||||
|
} = range;
|
||||||
|
|
||||||
|
if (state[0] < startLine) {
|
||||||
|
catchupLine(writer, state[0], startLine);
|
||||||
|
state[0] = startLine;
|
||||||
|
state[1] = 0;
|
||||||
|
} else if (index > 0) {
|
||||||
|
writer.write(comma);
|
||||||
|
}
|
||||||
|
|
||||||
|
state[1] = encodeInteger(writer, range[1], state[1]);
|
||||||
|
|
||||||
|
const fields =
|
||||||
|
(range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);
|
||||||
|
encodeInteger(writer, fields, 0);
|
||||||
|
|
||||||
|
if (range.length === 6) {
|
||||||
|
const { 4: sourcesIndex, 5: scopesIndex } = range;
|
||||||
|
if (sourcesIndex !== state[2]) {
|
||||||
|
state[3] = 0;
|
||||||
|
}
|
||||||
|
state[2] = encodeInteger(writer, sourcesIndex, state[2]);
|
||||||
|
state[3] = encodeInteger(writer, scopesIndex, state[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (callsite) {
|
||||||
|
const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!;
|
||||||
|
if (sourcesIndex !== state[4]) {
|
||||||
|
state[5] = 0;
|
||||||
|
state[6] = 0;
|
||||||
|
} else if (callLine !== state[5]) {
|
||||||
|
state[6] = 0;
|
||||||
|
}
|
||||||
|
state[4] = encodeInteger(writer, sourcesIndex, state[4]);
|
||||||
|
state[5] = encodeInteger(writer, callLine, state[5]);
|
||||||
|
state[6] = encodeInteger(writer, callColumn, state[6]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bindings) {
|
||||||
|
for (const binding of bindings) {
|
||||||
|
if (binding.length > 1) encodeInteger(writer, -binding.length, 0);
|
||||||
|
const expression = binding[0][0];
|
||||||
|
encodeInteger(writer, expression, 0);
|
||||||
|
let bindingStartLine = startLine;
|
||||||
|
let bindingStartColumn = startColumn;
|
||||||
|
for (let i = 1; i < binding.length; i++) {
|
||||||
|
const expRange = binding[i];
|
||||||
|
bindingStartLine = encodeInteger(writer, expRange[1]!, bindingStartLine);
|
||||||
|
bindingStartColumn = encodeInteger(writer, expRange[2]!, bindingStartColumn);
|
||||||
|
encodeInteger(writer, expRange[0]!, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (index++; index < ranges.length; ) {
|
||||||
|
const next = ranges[index];
|
||||||
|
const { 0: l, 1: c } = next;
|
||||||
|
if (l > endLine || (l === endLine && c >= endColumn)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
index = _encodeGeneratedRanges(ranges, index, writer, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state[0] < endLine) {
|
||||||
|
catchupLine(writer, state[0], endLine);
|
||||||
|
state[0] = endLine;
|
||||||
|
state[1] = 0;
|
||||||
|
} else {
|
||||||
|
writer.write(comma);
|
||||||
|
}
|
||||||
|
state[1] = encodeInteger(writer, endColumn, state[1]);
|
||||||
|
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
function catchupLine(writer: StringWriter, lastLine: number, line: number) {
|
||||||
|
do {
|
||||||
|
writer.write(semicolon);
|
||||||
|
} while (++lastLine < line);
|
||||||
|
}
|
||||||
111
node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts
generated
vendored
Normal file
111
node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts
generated
vendored
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';
|
||||||
|
import { StringWriter, StringReader } from './strings';
|
||||||
|
|
||||||
|
export {
|
||||||
|
decodeOriginalScopes,
|
||||||
|
encodeOriginalScopes,
|
||||||
|
decodeGeneratedRanges,
|
||||||
|
encodeGeneratedRanges,
|
||||||
|
} from './scopes';
|
||||||
|
export type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';
|
||||||
|
|
||||||
|
export type SourceMapSegment =
|
||||||
|
| [number]
|
||||||
|
| [number, number, number, number]
|
||||||
|
| [number, number, number, number, number];
|
||||||
|
export type SourceMapLine = SourceMapSegment[];
|
||||||
|
export type SourceMapMappings = SourceMapLine[];
|
||||||
|
|
||||||
|
export function decode(mappings: string): SourceMapMappings {
|
||||||
|
const { length } = mappings;
|
||||||
|
const reader = new StringReader(mappings);
|
||||||
|
const decoded: SourceMapMappings = [];
|
||||||
|
let genColumn = 0;
|
||||||
|
let sourcesIndex = 0;
|
||||||
|
let sourceLine = 0;
|
||||||
|
let sourceColumn = 0;
|
||||||
|
let namesIndex = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
const semi = reader.indexOf(';');
|
||||||
|
const line: SourceMapLine = [];
|
||||||
|
let sorted = true;
|
||||||
|
let lastCol = 0;
|
||||||
|
genColumn = 0;
|
||||||
|
|
||||||
|
while (reader.pos < semi) {
|
||||||
|
let seg: SourceMapSegment;
|
||||||
|
|
||||||
|
genColumn = decodeInteger(reader, genColumn);
|
||||||
|
if (genColumn < lastCol) sorted = false;
|
||||||
|
lastCol = genColumn;
|
||||||
|
|
||||||
|
if (hasMoreVlq(reader, semi)) {
|
||||||
|
sourcesIndex = decodeInteger(reader, sourcesIndex);
|
||||||
|
sourceLine = decodeInteger(reader, sourceLine);
|
||||||
|
sourceColumn = decodeInteger(reader, sourceColumn);
|
||||||
|
|
||||||
|
if (hasMoreVlq(reader, semi)) {
|
||||||
|
namesIndex = decodeInteger(reader, namesIndex);
|
||||||
|
seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];
|
||||||
|
} else {
|
||||||
|
seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
seg = [genColumn];
|
||||||
|
}
|
||||||
|
|
||||||
|
line.push(seg);
|
||||||
|
reader.pos++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sorted) sort(line);
|
||||||
|
decoded.push(line);
|
||||||
|
reader.pos = semi + 1;
|
||||||
|
} while (reader.pos <= length);
|
||||||
|
|
||||||
|
return decoded;
|
||||||
|
}
|
||||||
|
|
||||||
|
function sort(line: SourceMapSegment[]) {
|
||||||
|
line.sort(sortComparator);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {
|
||||||
|
return a[0] - b[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
export function encode(decoded: SourceMapMappings): string;
|
||||||
|
export function encode(decoded: Readonly<SourceMapMappings>): string;
|
||||||
|
export function encode(decoded: Readonly<SourceMapMappings>): string {
|
||||||
|
const writer = new StringWriter();
|
||||||
|
let sourcesIndex = 0;
|
||||||
|
let sourceLine = 0;
|
||||||
|
let sourceColumn = 0;
|
||||||
|
let namesIndex = 0;
|
||||||
|
|
||||||
|
for (let i = 0; i < decoded.length; i++) {
|
||||||
|
const line = decoded[i];
|
||||||
|
if (i > 0) writer.write(semicolon);
|
||||||
|
if (line.length === 0) continue;
|
||||||
|
|
||||||
|
let genColumn = 0;
|
||||||
|
|
||||||
|
for (let j = 0; j < line.length; j++) {
|
||||||
|
const segment = line[j];
|
||||||
|
if (j > 0) writer.write(comma);
|
||||||
|
|
||||||
|
genColumn = encodeInteger(writer, segment[0], genColumn);
|
||||||
|
|
||||||
|
if (segment.length === 1) continue;
|
||||||
|
sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);
|
||||||
|
sourceLine = encodeInteger(writer, segment[2], sourceLine);
|
||||||
|
sourceColumn = encodeInteger(writer, segment[3], sourceColumn);
|
||||||
|
|
||||||
|
if (segment.length === 4) continue;
|
||||||
|
namesIndex = encodeInteger(writer, segment[4], namesIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return writer.flush();
|
||||||
|
}
|
||||||
65
node_modules/@jridgewell/sourcemap-codec/src/strings.ts
generated
vendored
Normal file
65
node_modules/@jridgewell/sourcemap-codec/src/strings.ts
generated
vendored
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
const bufLength = 1024 * 16;
|
||||||
|
|
||||||
|
// Provide a fallback for older environments.
|
||||||
|
const td =
|
||||||
|
typeof TextDecoder !== 'undefined'
|
||||||
|
? /* #__PURE__ */ new TextDecoder()
|
||||||
|
: typeof Buffer !== 'undefined'
|
||||||
|
? {
|
||||||
|
decode(buf: Uint8Array): string {
|
||||||
|
const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
|
||||||
|
return out.toString();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
decode(buf: Uint8Array): string {
|
||||||
|
let out = '';
|
||||||
|
for (let i = 0; i < buf.length; i++) {
|
||||||
|
out += String.fromCharCode(buf[i]);
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export class StringWriter {
|
||||||
|
pos = 0;
|
||||||
|
private out = '';
|
||||||
|
private buffer = new Uint8Array(bufLength);
|
||||||
|
|
||||||
|
write(v: number): void {
|
||||||
|
const { buffer } = this;
|
||||||
|
buffer[this.pos++] = v;
|
||||||
|
if (this.pos === bufLength) {
|
||||||
|
this.out += td.decode(buffer);
|
||||||
|
this.pos = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
flush(): string {
|
||||||
|
const { buffer, out, pos } = this;
|
||||||
|
return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class StringReader {
|
||||||
|
pos = 0;
|
||||||
|
declare private buffer: string;
|
||||||
|
|
||||||
|
constructor(buffer: string) {
|
||||||
|
this.buffer = buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
next(): number {
|
||||||
|
return this.buffer.charCodeAt(this.pos++);
|
||||||
|
}
|
||||||
|
|
||||||
|
peek(): number {
|
||||||
|
return this.buffer.charCodeAt(this.pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
indexOf(char: string): number {
|
||||||
|
const { buffer, pos } = this;
|
||||||
|
const idx = buffer.indexOf(char, pos);
|
||||||
|
return idx === -1 ? buffer.length : idx;
|
||||||
|
}
|
||||||
|
}
|
||||||
55
node_modules/@jridgewell/sourcemap-codec/src/vlq.ts
generated
vendored
Normal file
55
node_modules/@jridgewell/sourcemap-codec/src/vlq.ts
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import type { StringReader, StringWriter } from './strings';
|
||||||
|
|
||||||
|
export const comma = ','.charCodeAt(0);
|
||||||
|
export const semicolon = ';'.charCodeAt(0);
|
||||||
|
|
||||||
|
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||||
|
const intToChar = new Uint8Array(64); // 64 possible chars.
|
||||||
|
const charToInt = new Uint8Array(128); // z is 122 in ASCII
|
||||||
|
|
||||||
|
for (let i = 0; i < chars.length; i++) {
|
||||||
|
const c = chars.charCodeAt(i);
|
||||||
|
intToChar[i] = c;
|
||||||
|
charToInt[c] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function decodeInteger(reader: StringReader, relative: number): number {
|
||||||
|
let value = 0;
|
||||||
|
let shift = 0;
|
||||||
|
let integer = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
const c = reader.next();
|
||||||
|
integer = charToInt[c];
|
||||||
|
value |= (integer & 31) << shift;
|
||||||
|
shift += 5;
|
||||||
|
} while (integer & 32);
|
||||||
|
|
||||||
|
const shouldNegate = value & 1;
|
||||||
|
value >>>= 1;
|
||||||
|
|
||||||
|
if (shouldNegate) {
|
||||||
|
value = -0x80000000 | -value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return relative + value;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function encodeInteger(builder: StringWriter, num: number, relative: number): number {
|
||||||
|
let delta = num - relative;
|
||||||
|
|
||||||
|
delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;
|
||||||
|
do {
|
||||||
|
let clamped = delta & 0b011111;
|
||||||
|
delta >>>= 5;
|
||||||
|
if (delta > 0) clamped |= 0b100000;
|
||||||
|
builder.write(intToChar[clamped]);
|
||||||
|
} while (delta > 0);
|
||||||
|
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function hasMoreVlq(reader: StringReader, max: number) {
|
||||||
|
if (reader.pos >= max) return false;
|
||||||
|
return reader.peek() !== comma;
|
||||||
|
}
|
||||||
50
node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts
generated
vendored
Normal file
50
node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
type Line = number;
|
||||||
|
type Column = number;
|
||||||
|
type Kind = number;
|
||||||
|
type Name = number;
|
||||||
|
type Var = number;
|
||||||
|
type SourcesIndex = number;
|
||||||
|
type ScopesIndex = number;
|
||||||
|
type Mix<A, B, O> = (A & O) | (B & O);
|
||||||
|
export type OriginalScope = Mix<[
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Kind
|
||||||
|
], [
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Kind,
|
||||||
|
Name
|
||||||
|
], {
|
||||||
|
vars: Var[];
|
||||||
|
}>;
|
||||||
|
export type GeneratedRange = Mix<[
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Line,
|
||||||
|
Column
|
||||||
|
], [
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
SourcesIndex,
|
||||||
|
ScopesIndex
|
||||||
|
], {
|
||||||
|
callsite: CallSite | null;
|
||||||
|
bindings: Binding[];
|
||||||
|
isScope: boolean;
|
||||||
|
}>;
|
||||||
|
export type CallSite = [SourcesIndex, Line, Column];
|
||||||
|
type Binding = BindingExpressionRange[];
|
||||||
|
export type BindingExpressionRange = [Name] | [Name, Line, Column];
|
||||||
|
export declare function decodeOriginalScopes(input: string): OriginalScope[];
|
||||||
|
export declare function encodeOriginalScopes(scopes: OriginalScope[]): string;
|
||||||
|
export declare function decodeGeneratedRanges(input: string): GeneratedRange[];
|
||||||
|
export declare function encodeGeneratedRanges(ranges: GeneratedRange[]): string;
|
||||||
|
export {};
|
||||||
|
//# sourceMappingURL=scopes.d.ts.map
|
||||||
1
node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts.map
generated
vendored
Normal file
1
node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAKA,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,MAAM,GAAG,MAAM,CAAC;AACrB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,GAAG,GAAG,MAAM,CAAC;AAClB,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,WAAW,GAAG,MAAM,CAAC;AAE1B,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,IAAI;CAAC,EAClC;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,IAAI;CAAC,EACxC;IAAE,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE,CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,GAAG,CAC9B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;CAAC,EAC5B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,YAAY;IAAE,WAAW;CAAC,EACvD;IACE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,KAAK,OAAO,GAAG,sBAAsB,EAAE,CAAC;AACxC,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAyCnE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAQpE;AA2CD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAoGrE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAUtE"}
|
||||||
50
node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts
generated
vendored
Normal file
50
node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
type Line = number;
|
||||||
|
type Column = number;
|
||||||
|
type Kind = number;
|
||||||
|
type Name = number;
|
||||||
|
type Var = number;
|
||||||
|
type SourcesIndex = number;
|
||||||
|
type ScopesIndex = number;
|
||||||
|
type Mix<A, B, O> = (A & O) | (B & O);
|
||||||
|
export type OriginalScope = Mix<[
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Kind
|
||||||
|
], [
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Kind,
|
||||||
|
Name
|
||||||
|
], {
|
||||||
|
vars: Var[];
|
||||||
|
}>;
|
||||||
|
export type GeneratedRange = Mix<[
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Line,
|
||||||
|
Column
|
||||||
|
], [
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
Line,
|
||||||
|
Column,
|
||||||
|
SourcesIndex,
|
||||||
|
ScopesIndex
|
||||||
|
], {
|
||||||
|
callsite: CallSite | null;
|
||||||
|
bindings: Binding[];
|
||||||
|
isScope: boolean;
|
||||||
|
}>;
|
||||||
|
export type CallSite = [SourcesIndex, Line, Column];
|
||||||
|
type Binding = BindingExpressionRange[];
|
||||||
|
export type BindingExpressionRange = [Name] | [Name, Line, Column];
|
||||||
|
export declare function decodeOriginalScopes(input: string): OriginalScope[];
|
||||||
|
export declare function encodeOriginalScopes(scopes: OriginalScope[]): string;
|
||||||
|
export declare function decodeGeneratedRanges(input: string): GeneratedRange[];
|
||||||
|
export declare function encodeGeneratedRanges(ranges: GeneratedRange[]): string;
|
||||||
|
export {};
|
||||||
|
//# sourceMappingURL=scopes.d.ts.map
|
||||||
1
node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts.map
generated
vendored
Normal file
1
node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAKA,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,MAAM,GAAG,MAAM,CAAC;AACrB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,GAAG,GAAG,MAAM,CAAC;AAClB,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,WAAW,GAAG,MAAM,CAAC;AAE1B,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,IAAI;CAAC,EAClC;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,IAAI;CAAC,EACxC;IAAE,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE,CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,GAAG,CAC9B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;CAAC,EAC5B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,YAAY;IAAE,WAAW;CAAC,EACvD;IACE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,KAAK,OAAO,GAAG,sBAAsB,EAAE,CAAC;AACxC,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAyCnE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAQpE;AA2CD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAoGrE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAUtE"}
|
||||||
9
node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts
generated
vendored
Normal file
9
node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
export { decodeOriginalScopes, encodeOriginalScopes, decodeGeneratedRanges, encodeGeneratedRanges, } from './scopes.cts';
|
||||||
|
export type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes.cts';
|
||||||
|
export type SourceMapSegment = [number] | [number, number, number, number] | [number, number, number, number, number];
|
||||||
|
export type SourceMapLine = SourceMapSegment[];
|
||||||
|
export type SourceMapMappings = SourceMapLine[];
|
||||||
|
export declare function decode(mappings: string): SourceMapMappings;
|
||||||
|
export declare function encode(decoded: SourceMapMappings): string;
|
||||||
|
export declare function encode(decoded: Readonly<SourceMapMappings>): string;
|
||||||
|
//# sourceMappingURL=sourcemap-codec.d.ts.map
|
||||||
1
node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts.map
generated
vendored
Normal file
1
node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"sourcemap-codec.d.ts","sourceRoot":"","sources":["../src/sourcemap-codec.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEhG,MAAM,MAAM,gBAAgB,GACxB,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAChC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;AAC/C,MAAM,MAAM,iBAAiB,GAAG,aAAa,EAAE,CAAC;AAEhD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAiD1D;AAUD,wBAAgB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC;AAC3D,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC"}
|
||||||
9
node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts
generated
vendored
Normal file
9
node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
export { decodeOriginalScopes, encodeOriginalScopes, decodeGeneratedRanges, encodeGeneratedRanges, } from './scopes.mts';
|
||||||
|
export type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes.mts';
|
||||||
|
export type SourceMapSegment = [number] | [number, number, number, number] | [number, number, number, number, number];
|
||||||
|
export type SourceMapLine = SourceMapSegment[];
|
||||||
|
export type SourceMapMappings = SourceMapLine[];
|
||||||
|
export declare function decode(mappings: string): SourceMapMappings;
|
||||||
|
export declare function encode(decoded: SourceMapMappings): string;
|
||||||
|
export declare function encode(decoded: Readonly<SourceMapMappings>): string;
|
||||||
|
//# sourceMappingURL=sourcemap-codec.d.ts.map
|
||||||
1
node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts.map
generated
vendored
Normal file
1
node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"sourcemap-codec.d.ts","sourceRoot":"","sources":["../src/sourcemap-codec.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEhG,MAAM,MAAM,gBAAgB,GACxB,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAChC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;AAC/C,MAAM,MAAM,iBAAiB,GAAG,aAAa,EAAE,CAAC;AAEhD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAiD1D;AAUD,wBAAgB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC;AAC3D,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC"}
|
||||||
16
node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts
generated
vendored
Normal file
16
node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
export declare class StringWriter {
|
||||||
|
pos: number;
|
||||||
|
private out;
|
||||||
|
private buffer;
|
||||||
|
write(v: number): void;
|
||||||
|
flush(): string;
|
||||||
|
}
|
||||||
|
export declare class StringReader {
|
||||||
|
pos: number;
|
||||||
|
private buffer;
|
||||||
|
constructor(buffer: string);
|
||||||
|
next(): number;
|
||||||
|
peek(): number;
|
||||||
|
indexOf(char: string): number;
|
||||||
|
}
|
||||||
|
//# sourceMappingURL=strings.d.ts.map
|
||||||
1
node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts.map
generated
vendored
Normal file
1
node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":"AAuBA,qBAAa,YAAY;IACvB,GAAG,SAAK;IACR,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,MAAM,CAA6B;IAE3C,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAStB,KAAK,IAAI,MAAM;CAIhB;AAED,qBAAa,YAAY;IACvB,GAAG,SAAK;IACR,QAAgB,MAAM,CAAS;gBAEnB,MAAM,EAAE,MAAM;IAI1B,IAAI,IAAI,MAAM;IAId,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAK9B"}
|
||||||
16
node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts
generated
vendored
Normal file
16
node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
export declare class StringWriter {
|
||||||
|
pos: number;
|
||||||
|
private out;
|
||||||
|
private buffer;
|
||||||
|
write(v: number): void;
|
||||||
|
flush(): string;
|
||||||
|
}
|
||||||
|
export declare class StringReader {
|
||||||
|
pos: number;
|
||||||
|
private buffer;
|
||||||
|
constructor(buffer: string);
|
||||||
|
next(): number;
|
||||||
|
peek(): number;
|
||||||
|
indexOf(char: string): number;
|
||||||
|
}
|
||||||
|
//# sourceMappingURL=strings.d.ts.map
|
||||||
1
node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts.map
generated
vendored
Normal file
1
node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":"AAuBA,qBAAa,YAAY;IACvB,GAAG,SAAK;IACR,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,MAAM,CAA6B;IAE3C,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAStB,KAAK,IAAI,MAAM;CAIhB;AAED,qBAAa,YAAY;IACvB,GAAG,SAAK;IACR,QAAgB,MAAM,CAAS;gBAEnB,MAAM,EAAE,MAAM;IAI1B,IAAI,IAAI,MAAM;IAId,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAK9B"}
|
||||||
7
node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts
generated
vendored
Normal file
7
node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import type { StringReader, StringWriter } from './strings.cts';
|
||||||
|
export declare const comma: number;
|
||||||
|
export declare const semicolon: number;
|
||||||
|
export declare function decodeInteger(reader: StringReader, relative: number): number;
|
||||||
|
export declare function encodeInteger(builder: StringWriter, num: number, relative: number): number;
|
||||||
|
export declare function hasMoreVlq(reader: StringReader, max: number): boolean;
|
||||||
|
//# sourceMappingURL=vlq.d.ts.map
|
||||||
1
node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts.map
generated
vendored
Normal file
1
node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"vlq.d.ts","sourceRoot":"","sources":["../src/vlq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5D,eAAO,MAAM,KAAK,QAAoB,CAAC;AACvC,eAAO,MAAM,SAAS,QAAoB,CAAC;AAY3C,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoB5E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY1F;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,WAG3D"}
|
||||||
7
node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts
generated
vendored
Normal file
7
node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import type { StringReader, StringWriter } from './strings.mts';
|
||||||
|
export declare const comma: number;
|
||||||
|
export declare const semicolon: number;
|
||||||
|
export declare function decodeInteger(reader: StringReader, relative: number): number;
|
||||||
|
export declare function encodeInteger(builder: StringWriter, num: number, relative: number): number;
|
||||||
|
export declare function hasMoreVlq(reader: StringReader, max: number): boolean;
|
||||||
|
//# sourceMappingURL=vlq.d.ts.map
|
||||||
1
node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts.map
generated
vendored
Normal file
1
node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"vlq.d.ts","sourceRoot":"","sources":["../src/vlq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5D,eAAO,MAAM,KAAK,QAAoB,CAAC;AACvC,eAAO,MAAM,SAAS,QAAoB,CAAC;AAY3C,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoB5E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY1F;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,WAG3D"}
|
||||||
49
node_modules/@polka/url/build.js
generated
vendored
Normal file
49
node_modules/@polka/url/build.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
const qs = require('querystring');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef ParsedURL
|
||||||
|
* @type {import('.').ParsedURL}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef Request
|
||||||
|
* @property {string} url
|
||||||
|
* @property {ParsedURL} _parsedUrl
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Request} req
|
||||||
|
* @returns {ParsedURL|void}
|
||||||
|
*/
|
||||||
|
function parse(req) {
|
||||||
|
let raw = req.url;
|
||||||
|
if (raw == null) return;
|
||||||
|
|
||||||
|
let prev = req._parsedUrl;
|
||||||
|
if (prev && prev.raw === raw) return prev;
|
||||||
|
|
||||||
|
let pathname=raw, search='', query, hash;
|
||||||
|
|
||||||
|
if (raw.length > 1) {
|
||||||
|
let idx = raw.indexOf('#', 1);
|
||||||
|
|
||||||
|
if (idx !== -1) {
|
||||||
|
hash = raw.substring(idx);
|
||||||
|
pathname = raw.substring(0, idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
idx = pathname.indexOf('?', 1);
|
||||||
|
|
||||||
|
if (idx !== -1) {
|
||||||
|
search = pathname.substring(idx);
|
||||||
|
pathname = pathname.substring(0, idx);
|
||||||
|
if (search.length > 1) {
|
||||||
|
query = qs.parse(search.substring(1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return req._parsedUrl = { pathname, search, query, hash, raw };
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.parse = parse;
|
||||||
47
node_modules/@polka/url/build.mjs
generated
vendored
Normal file
47
node_modules/@polka/url/build.mjs
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import * as qs from 'node:querystring';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef ParsedURL
|
||||||
|
* @type {import('.').ParsedURL}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef Request
|
||||||
|
* @property {string} url
|
||||||
|
* @property {ParsedURL} _parsedUrl
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Request} req
|
||||||
|
* @returns {ParsedURL|void}
|
||||||
|
*/
|
||||||
|
export function parse(req) {
|
||||||
|
let raw = req.url;
|
||||||
|
if (raw == null) return;
|
||||||
|
|
||||||
|
let prev = req._parsedUrl;
|
||||||
|
if (prev && prev.raw === raw) return prev;
|
||||||
|
|
||||||
|
let pathname=raw, search='', query, hash;
|
||||||
|
|
||||||
|
if (raw.length > 1) {
|
||||||
|
let idx = raw.indexOf('#', 1);
|
||||||
|
|
||||||
|
if (idx !== -1) {
|
||||||
|
hash = raw.substring(idx);
|
||||||
|
pathname = raw.substring(0, idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
idx = pathname.indexOf('?', 1);
|
||||||
|
|
||||||
|
if (idx !== -1) {
|
||||||
|
search = pathname.substring(idx);
|
||||||
|
pathname = pathname.substring(0, idx);
|
||||||
|
if (search.length > 1) {
|
||||||
|
query = qs.parse(search.substring(1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return req._parsedUrl = { pathname, search, query, hash, raw };
|
||||||
|
}
|
||||||
11
node_modules/@polka/url/index.d.ts
generated
vendored
Normal file
11
node_modules/@polka/url/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import type { IncomingMessage } from 'http';
|
||||||
|
|
||||||
|
export interface ParsedURL {
|
||||||
|
pathname: string;
|
||||||
|
search: string;
|
||||||
|
query: Record<string, string | string[]> | undefined;
|
||||||
|
hash: string | undefined;
|
||||||
|
raw: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function parse(req: IncomingMessage): ParsedURL;
|
||||||
30
node_modules/@polka/url/package.json
generated
vendored
Normal file
30
node_modules/@polka/url/package.json
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0.0-next.29",
|
||||||
|
"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": [
|
||||||
|
"build.*",
|
||||||
|
"index.d.*"
|
||||||
|
],
|
||||||
|
"author": {
|
||||||
|
"name": "Luke Edwards",
|
||||||
|
"email": "luke@lukeed.com",
|
||||||
|
"url": "https://lukeed.com"
|
||||||
|
},
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
}
|
||||||
|
}
|
||||||
68
node_modules/@polka/url/readme.md
generated
vendored
Normal file
68
node_modules/@polka/url/readme.md
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# @polka/url [](https://npmjs.org/package/@polka/url) [](https://licenses.dev/npm/%40polka%2Furl)
|
||||||
|
|
||||||
|
> 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`.
|
||||||
|
|
||||||
|
> **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.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```
|
||||||
|
$ npm install --save @polka/url
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```js
|
||||||
|
const parse = require('@polka/url');
|
||||||
|
|
||||||
|
let req = {
|
||||||
|
url: '/foo/bar?fizz=buzz'
|
||||||
|
};
|
||||||
|
let output = parse(req);
|
||||||
|
//=> {
|
||||||
|
//=> pathname: '/foo/bar',
|
||||||
|
//=> raw: '/foo/bar?fizz=buzz',
|
||||||
|
//=> search: '?fizz=buzz',
|
||||||
|
//=> query: {
|
||||||
|
//=> fizz: 'buzz'
|
||||||
|
//=> },
|
||||||
|
//=> }
|
||||||
|
|
||||||
|
// Attaches result for future memoization
|
||||||
|
assert.deepEqual(output, req._parsedUrl); //=> true
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### url(req)
|
||||||
|
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 }`
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
|
|
||||||
|
## Benchmarks
|
||||||
|
|
||||||
|
Check out the [`bench`](/bench) directory for in-depth benchmark results and comparisons.
|
||||||
|
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
Any issues or questions can be sent to the [Polka][polka] repository.<br>However, please specify that your inquiry is about `@polka/url` specifically.
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT © [Luke Edwards](https://lukeed.com)
|
||||||
|
|
||||||
|
[polka]: https://github.com/lukeed/polka
|
||||||
3
node_modules/@rollup/rollup-darwin-arm64/README.md
generated
vendored
Normal file
3
node_modules/@rollup/rollup-darwin-arm64/README.md
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# `@rollup/rollup-darwin-arm64`
|
||||||
|
|
||||||
|
This is the **aarch64-apple-darwin** binary for `rollup`
|
||||||
22
node_modules/@rollup/rollup-darwin-arm64/package.json
generated
vendored
Normal file
22
node_modules/@rollup/rollup-darwin-arm64/package.json
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "@rollup/rollup-darwin-arm64",
|
||||||
|
"version": "4.53.3",
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"rollup.darwin-arm64.node"
|
||||||
|
],
|
||||||
|
"description": "Native bindings for Rollup",
|
||||||
|
"author": "Lukas Taegert-Atkinson",
|
||||||
|
"homepage": "https://rollupjs.org/",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/rollup/rollup.git"
|
||||||
|
},
|
||||||
|
"main": "./rollup.darwin-arm64.node"
|
||||||
|
}
|
||||||
BIN
node_modules/@rollup/rollup-darwin-arm64/rollup.darwin-arm64.node
generated
vendored
Normal file
BIN
node_modules/@rollup/rollup-darwin-arm64/rollup.darwin-arm64.node
generated
vendored
Normal file
Binary file not shown.
21
node_modules/@standard-schema/spec/LICENSE
generated
vendored
Normal file
21
node_modules/@standard-schema/spec/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 Colin McDonnell
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
279
node_modules/@standard-schema/spec/README.md
generated
vendored
Normal file
279
node_modules/@standard-schema/spec/README.md
generated
vendored
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
<h1 align="center">
|
||||||
|
<img alt="Standard Schema fire logo" loading="lazy" width="50" height="50" decoding="async" data-nimg="1" style="color:transparent" src="https://standardschema.dev/favicon.svg">
|
||||||
|
</br>
|
||||||
|
Standard Schema</h1>
|
||||||
|
<p align="center">
|
||||||
|
A common interface for TypeScript validation libraries
|
||||||
|
<br/>
|
||||||
|
<a href="https://standardschema.dev">standardschema.dev</a>
|
||||||
|
</p>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<!-- start -->
|
||||||
|
|
||||||
|
Standard Schema is a common interface designed to be implemented by JavaScript and TypeScript schema libraries.
|
||||||
|
|
||||||
|
The goal is to make it easier for ecosystem tools to accept user-defined type validators, without needing to write custom logic or adapters for each supported library. And since Standard Schema is a specification, they can do so with no additional runtime dependencies. Integrate once, validate anywhere.
|
||||||
|
|
||||||
|
## Who designed it?
|
||||||
|
|
||||||
|
The spec was designed by the creators of Zod, Valibot, and ArkType. Recent versions of these libraries already implement the spec (see the [full list of compatible libraries](#what-schema-libraries-implement-the-spec) below).
|
||||||
|
|
||||||
|
## The interface
|
||||||
|
|
||||||
|
The specification consists of a single TypeScript interface `StandardSchemaV1` to be implemented by any schema library wishing to be spec-compliant.
|
||||||
|
|
||||||
|
This interface can be found below in its entirety. Libraries wishing to implement the spec can copy/paste the code block below into their codebase. It's also available at `@standard-schema/spec` on [npm](https://www.npmjs.com/package/@standard-schema/spec) and [JSR](https://jsr.io/@standard-schema/spec). There will be zero changes without a major version bump.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
/** The Standard Schema interface. */
|
||||||
|
export interface StandardSchemaV1<Input = unknown, Output = Input> {
|
||||||
|
/** The Standard Schema properties. */
|
||||||
|
readonly '~standard': StandardSchemaV1.Props<Input, Output>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export declare namespace StandardSchemaV1 {
|
||||||
|
/** The Standard Schema properties interface. */
|
||||||
|
export interface Props<Input = unknown, Output = Input> {
|
||||||
|
/** The version number of the standard. */
|
||||||
|
readonly version: 1;
|
||||||
|
/** The vendor name of the schema library. */
|
||||||
|
readonly vendor: string;
|
||||||
|
/** Validates unknown input values. */
|
||||||
|
readonly validate: (
|
||||||
|
value: unknown
|
||||||
|
) => Result<Output> | Promise<Result<Output>>;
|
||||||
|
/** Inferred types associated with the schema. */
|
||||||
|
readonly types?: Types<Input, Output> | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The result interface of the validate function. */
|
||||||
|
export type Result<Output> = SuccessResult<Output> | FailureResult;
|
||||||
|
|
||||||
|
/** The result interface if validation succeeds. */
|
||||||
|
export interface SuccessResult<Output> {
|
||||||
|
/** The typed output value. */
|
||||||
|
readonly value: Output;
|
||||||
|
/** The non-existent issues. */
|
||||||
|
readonly issues?: undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The result interface if validation fails. */
|
||||||
|
export interface FailureResult {
|
||||||
|
/** The issues of failed validation. */
|
||||||
|
readonly issues: ReadonlyArray<Issue>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The issue interface of the failure output. */
|
||||||
|
export interface Issue {
|
||||||
|
/** The error message of the issue. */
|
||||||
|
readonly message: string;
|
||||||
|
/** The path of the issue, if any. */
|
||||||
|
readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The path segment interface of the issue. */
|
||||||
|
export interface PathSegment {
|
||||||
|
/** The key representing a path segment. */
|
||||||
|
readonly key: PropertyKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The Standard Schema types interface. */
|
||||||
|
export interface Types<Input = unknown, Output = Input> {
|
||||||
|
/** The input type of the schema. */
|
||||||
|
readonly input: Input;
|
||||||
|
/** The output type of the schema. */
|
||||||
|
readonly output: Output;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Infers the input type of a Standard Schema. */
|
||||||
|
export type InferInput<Schema extends StandardSchemaV1> = NonNullable<
|
||||||
|
Schema['~standard']['types']
|
||||||
|
>['input'];
|
||||||
|
|
||||||
|
/** Infers the output type of a Standard Schema. */
|
||||||
|
export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<
|
||||||
|
Schema['~standard']['types']
|
||||||
|
>['output'];
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Design goals
|
||||||
|
|
||||||
|
The specification meets a few primary design objectives:
|
||||||
|
|
||||||
|
- **Support runtime validation.** Given a Standard Schema compatible validator, you should be able to validate data with it (duh). Any validation errors should be presented in a standardized format.
|
||||||
|
- **Support static type inference.** For TypeScript libraries that do type inference, the specification provides a standard way for them to "advertise" their inferred type, so it can be extracted and used by external tools.
|
||||||
|
- **Minimal.** It should be easy for libraries to implement this spec in a few lines of code that call their existing functions/methods.
|
||||||
|
- **Avoid API conflicts.** The entire spec is tucked inside a single object property called `~standard`, which avoids potential naming conflicts with the API surface of existing libraries.
|
||||||
|
- **Do no harm to DX.** The `~standard` property is tilde-prefixed to [de-prioritize it in autocompletion](https://x.com/colinhacks/status/1816860780459073933). By contrast, an underscore-prefixed property would show up before properties/methods with alphanumeric names.
|
||||||
|
|
||||||
|
## What schema libraries implement the spec?
|
||||||
|
|
||||||
|
These are the libraries that have already implemented the Standard Schema interface. (If you maintain a library that implements the spec, [create a PR](https://github.com/standard-schema/standard-schema/compare) to add yourself!)
|
||||||
|
|
||||||
|
| Implementer | Version(s) | Docs |
|
||||||
|
| ----------- | ---------- | -------------------------------------------------------------------------- |
|
||||||
|
| Zod | 3.24.0+ | [zod.dev](https://zod.dev/) |
|
||||||
|
| Valibot | v1.0+ | [valibot.dev](https://valibot.dev/) |
|
||||||
|
| ArkType | v2.0+ | [arktype.io](https://arktype.io/) |
|
||||||
|
| Arri Schema | v0.71.0+ | [github.com/modiimedia/arri](https://github.com/modiimedia/arri) |
|
||||||
|
| TypeMap | v0.8.0+ | [github.com/sinclairzx81/typemap](https://github.com/sinclairzx81/typemap) |
|
||||||
|
|
||||||
|
## What tools / frameworks accept spec-compliant schemas?
|
||||||
|
|
||||||
|
The following tools accept user-defined schemas conforming to the Standard Schema spec. (If you maintain a tool that supports Standard Schemas, [create a PR](https://github.com/standard-schema/standard-schema/compare) to add yourself!)
|
||||||
|
|
||||||
|
| Integrator | Description | Link |
|
||||||
|
| ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
||||||
|
| [tRPC](https://trpc.io) | 🧙♀️ Move fast and break nothing. End-to-end typesafe APIs made easy | [PR](https://github.com/trpc/trpc/pull/6079) |
|
||||||
|
| [TanStack Form](https://github.com/TanStack/form) | 🤖 Headless, performant, and type-safe form state management for TS/JS, React, Vue, Angular, Solid, and Lit | [PR](https://github.com/TanStack/form/issues/1015) |
|
||||||
|
| [TanStack Router](https://github.com/tanstack/router) | A fully type-safe React router with built-in data fetching, stale-while revalidate caching and first-class search-param APIs | [PR](https://github.com/TanStack/router/pull/2602) |
|
||||||
|
| [Hono Middleware 🚧](https://hono.dev) | Fast, lightweight server, built on Web Standards | [PR](https://github.com/honojs/middleware/pull/887) |
|
||||||
|
| [Qwik 🚧](https://github.com/QwikDev/qwik) | Instant-loading web apps, without effort | [PR](https://github.com/QwikDev/qwik/pull/7281) |
|
||||||
|
| [UploadThing](https://github.com/pingdotgg/uploadthing) | File uploads for modern web devs | [Docs](https://docs.uploadthing.com/file-routes#input) |
|
||||||
|
| [T3 Env](https://github.com/t3-oss/t3-env) | Framework agnostic validation for type-safe environment variables | [PR](https://github.com/t3-oss/t3-env/pull/299) |
|
||||||
|
| [OpenAuth](https://github.com/openauthjs/openauth) | Universal, standards-based auth provider | [Docs](https://openauth.js.org/docs/#server) |
|
||||||
|
| [renoun](https://www.renoun.dev/) | The Documentation Toolkit for React | [Docs](https://www.renoun.dev/utilities/file-system#schema-validation) |
|
||||||
|
| [Formwerk](https://github.com/formwerkjs/formwerk) | A Vue.js Framework for building high-quality, accessible, delightful forms. | [PR](https://github.com/formwerkjs/formwerk/pull/68) |
|
||||||
|
| [GQLoom](https://github.com/modevol-com/gqloom) | Weave GraphQL schema and resolvers using Standard Schema | [PR](https://github.com/modevol-com/gqloom/pull/7) |
|
||||||
|
| [Nuxt UI (v3)](https://github.com/nuxt/ui) | A UI Library for modern web apps, powered by Vue & Tailwind CSS | [PR](https://github.com/nuxt/ui/pull/2303) |
|
||||||
|
| [oRPC](https://github.com/unnoq/orpc) | Typesafe APIs made simple 🪄 | [PR](https://github.com/unnoq/orpc/pull/50) |
|
||||||
|
| [Regle](https://github.com/victorgarciaesgi/regle) | Type-safe model-based form validation library for Vue.js | [PR](https://github.com/victorgarciaesgi/regle/pull/46) |
|
||||||
|
|
||||||
|
## How can my schema library implement the spec?
|
||||||
|
|
||||||
|
Schemas libraries that want to support Standard Schema must implement the `StandardSchemaV1` interface. Start by copying the specification file above into your library. It consists of types only.
|
||||||
|
|
||||||
|
Then implement the spec by adding the `~standard` property to your validator objects/instances. We recommend using `extends` / `implements` to ensure static agreement with the interface. It doesn't matter whether your schema library returns plain objects, functions, or class instances. The only thing that matters is that the `~standard` property is defined somehow.
|
||||||
|
|
||||||
|
Here's a simple worked example of a string validator that implements the spec.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import type {StandardSchemaV1} from '@standard-schema/spec';
|
||||||
|
|
||||||
|
// Step 1: Define the schema interface
|
||||||
|
interface StringSchema extends StandardSchemaV1<string> {
|
||||||
|
type: 'string';
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 2: Implement the schema interface
|
||||||
|
function string(message: string = 'Invalid type'): StringSchema {
|
||||||
|
return {
|
||||||
|
type: 'string',
|
||||||
|
message,
|
||||||
|
'~standard': {
|
||||||
|
version: 1,
|
||||||
|
vendor: 'valizod',
|
||||||
|
validate(value) {
|
||||||
|
return typeof value === 'string' ? {value} : {issues: [{message}]};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
We recommend defining the `~standard.validate()` function in terms of your library's existing validation functions/methods. Ideally implementing the spec only requires a handful of lines of code.
|
||||||
|
|
||||||
|
Avoid returning `Promise` from `~standard.validate()` unless absolutely necessary. Some third-party libraries may not support async validation.
|
||||||
|
|
||||||
|
## How do I accept Standard Schemas in my library?
|
||||||
|
|
||||||
|
Third-party libraries and frameworks can leverage the Standard Schema spec to accept user-defined schemas in a type-safe way.
|
||||||
|
|
||||||
|
To get started, copy and paste the specification file into your project. Alternatively (if you are okay with the extra dependency), you can install the `@standard-schema/spec` package from [npm](https://www.npmjs.com/package/@standard-schema/spec) or [JSR](https://jsr.io/@standard-schema/spec) as a dependency. _It is not recommended to install as a dev dependency, see the [associated FAQ](#can-i-add-it-as-a-dev-dependency) for details_.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install @standard-schema/spec # npm
|
||||||
|
yarn add @standard-schema/spec # yarn
|
||||||
|
pnpm add @standard-schema/spec # pnpm
|
||||||
|
bun add @standard-schema/spec # bun
|
||||||
|
deno add jsr:@standard-schema/spec # deno
|
||||||
|
```
|
||||||
|
|
||||||
|
Here's is an simple example of a generic function that accepts an arbitrary spec-compliant validator and uses it to parse some data.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import type {StandardSchemaV1} from '@standard-schema/spec';
|
||||||
|
|
||||||
|
export async function standardValidate<T extends StandardSchemaV1>(
|
||||||
|
schema: T,
|
||||||
|
input: StandardSchemaV1.InferInput<T>
|
||||||
|
): Promise<StandardSchemaV1.InferOutput<T>> {
|
||||||
|
let result = schema['~standard'].validate(input);
|
||||||
|
if (result instanceof Promise) result = await result;
|
||||||
|
|
||||||
|
// if the `issues` field exists, the validation failed
|
||||||
|
if (result.issues) {
|
||||||
|
throw new Error(JSON.stringify(result.issues, null, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.value;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This concise function can accept inputs from any spec-compliant schema library.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import * as z from 'zod';
|
||||||
|
import * as v from 'valibot';
|
||||||
|
import {type} from 'arktype';
|
||||||
|
|
||||||
|
const zodResult = await standardValidate(z.string(), 'hello');
|
||||||
|
const valibotResult = await standardValidate(v.string(), 'hello');
|
||||||
|
const arktypeResult = await standardValidate(type('string'), 'hello');
|
||||||
|
```
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
|
||||||
|
These are the most frequently asked questions about Standard Schema. If your question is not listed, feel free to create an issue.
|
||||||
|
|
||||||
|
### Do I need to add `@standard-schema/spec` as a dependency?
|
||||||
|
|
||||||
|
No. The `@standard-schema/spec` package is completely optional. You can just copy and paste the types into your project. We guarantee no breaking changes without a major version bump.
|
||||||
|
|
||||||
|
If you don't mind additional dependencies, you can add `@standard-schema/spec` as a dependency and consume it with `import type`. The `@standard-schema/spec` package contains no runtime code and only exports types.
|
||||||
|
|
||||||
|
### Can I add it as a dev dependency?
|
||||||
|
|
||||||
|
Despite being types-only, you should _not_ install `@standard-schema/spec` as a dev dependency. By accepting Standard Schemas as part of your public API, the Standard Schema interface becomes a part of your library's public API. As such, it _must_ be available whenever/wherever your library gets installed, even in production installs. For this to happen, it must be installed as a regular dependency.
|
||||||
|
|
||||||
|
### Why did you prefix the `~standard` property with `~`?
|
||||||
|
|
||||||
|
The goal of prefixing the key with `~` is to both avoid conflicts with existing API surfaces and to de-prioritize these keys in auto-complete. The `~` character is one of the few ASCII characters that occurs after `A-Za-z0-9` lexicographically, so VS Code puts these suggestions at the bottom of the list.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Why not use a symbol key?
|
||||||
|
|
||||||
|
In TypeScript, using a plain `Symbol` inline as a key always collapses to a simple `symbol` type. This would cause conflicts with other schema properties that use symbols.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
const object = {
|
||||||
|
[Symbol.for('~output')]: 'some data',
|
||||||
|
};
|
||||||
|
// { [k: symbol]: string }
|
||||||
|
```
|
||||||
|
|
||||||
|
Unique symbols can also be declared in a "nominal" way that won't collapse. In this case the symbol key is sorted alphabetically in autocomplete according to the symbol's variable name.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Thus, these symbol keys don't get sorted to the bottom of the autocomplete list, unlike tilde-prefixed string keys.
|
||||||
|
|
||||||
|
### How to only allow synchronous validation?
|
||||||
|
|
||||||
|
The `~validate` function might return a synchronous value _or_ a `Promise`. If you only accept synchronous validation, you can simply throw an error if the returned value is an instance of `Promise`. Libraries are encouraged to preferentially use synchronous validation whenever possible.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import type {StandardSchemaV1} from '@standard-schema/spec';
|
||||||
|
|
||||||
|
function validateInput(schema: StandardSchemaV1, data: unknown) {
|
||||||
|
const result = schema['~standard'].validate(data);
|
||||||
|
if (result instanceof Promise) {
|
||||||
|
throw new TypeError('Schema validation must be synchronous');
|
||||||
|
}
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
```
|
||||||
18
node_modules/@standard-schema/spec/dist/index.cjs
generated
vendored
Normal file
18
node_modules/@standard-schema/spec/dist/index.cjs
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
"use strict";
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __copyProps = (to, from, except, desc) => {
|
||||||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||||||
|
for (let key of __getOwnPropNames(from))
|
||||||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||||
|
}
|
||||||
|
return to;
|
||||||
|
};
|
||||||
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// src/index.ts
|
||||||
|
var src_exports = {};
|
||||||
|
module.exports = __toCommonJS(src_exports);
|
||||||
58
node_modules/@standard-schema/spec/dist/index.d.cts
generated
vendored
Normal file
58
node_modules/@standard-schema/spec/dist/index.d.cts
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/** The Standard Schema interface. */
|
||||||
|
interface StandardSchemaV1<Input = unknown, Output = Input> {
|
||||||
|
/** The Standard Schema properties. */
|
||||||
|
readonly "~standard": StandardSchemaV1.Props<Input, Output>;
|
||||||
|
}
|
||||||
|
declare namespace StandardSchemaV1 {
|
||||||
|
/** The Standard Schema properties interface. */
|
||||||
|
export interface Props<Input = unknown, Output = Input> {
|
||||||
|
/** The version number of the standard. */
|
||||||
|
readonly version: 1;
|
||||||
|
/** The vendor name of the schema library. */
|
||||||
|
readonly vendor: string;
|
||||||
|
/** Validates unknown input values. */
|
||||||
|
readonly validate: (value: unknown) => Result<Output> | Promise<Result<Output>>;
|
||||||
|
/** Inferred types associated with the schema. */
|
||||||
|
readonly types?: Types<Input, Output> | undefined;
|
||||||
|
}
|
||||||
|
/** The result interface of the validate function. */
|
||||||
|
export type Result<Output> = SuccessResult<Output> | FailureResult;
|
||||||
|
/** The result interface if validation succeeds. */
|
||||||
|
export interface SuccessResult<Output> {
|
||||||
|
/** The typed output value. */
|
||||||
|
readonly value: Output;
|
||||||
|
/** The non-existent issues. */
|
||||||
|
readonly issues?: undefined;
|
||||||
|
}
|
||||||
|
/** The result interface if validation fails. */
|
||||||
|
export interface FailureResult {
|
||||||
|
/** The issues of failed validation. */
|
||||||
|
readonly issues: ReadonlyArray<Issue>;
|
||||||
|
}
|
||||||
|
/** The issue interface of the failure output. */
|
||||||
|
export interface Issue {
|
||||||
|
/** The error message of the issue. */
|
||||||
|
readonly message: string;
|
||||||
|
/** The path of the issue, if any. */
|
||||||
|
readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
|
||||||
|
}
|
||||||
|
/** The path segment interface of the issue. */
|
||||||
|
export interface PathSegment {
|
||||||
|
/** The key representing a path segment. */
|
||||||
|
readonly key: PropertyKey;
|
||||||
|
}
|
||||||
|
/** The Standard Schema types interface. */
|
||||||
|
export interface Types<Input = unknown, Output = Input> {
|
||||||
|
/** The input type of the schema. */
|
||||||
|
readonly input: Input;
|
||||||
|
/** The output type of the schema. */
|
||||||
|
readonly output: Output;
|
||||||
|
}
|
||||||
|
/** Infers the input type of a Standard Schema. */
|
||||||
|
export type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["input"];
|
||||||
|
/** Infers the output type of a Standard Schema. */
|
||||||
|
export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["output"];
|
||||||
|
export { };
|
||||||
|
}
|
||||||
|
|
||||||
|
export { StandardSchemaV1 };
|
||||||
58
node_modules/@standard-schema/spec/dist/index.d.ts
generated
vendored
Normal file
58
node_modules/@standard-schema/spec/dist/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/** The Standard Schema interface. */
|
||||||
|
interface StandardSchemaV1<Input = unknown, Output = Input> {
|
||||||
|
/** The Standard Schema properties. */
|
||||||
|
readonly "~standard": StandardSchemaV1.Props<Input, Output>;
|
||||||
|
}
|
||||||
|
declare namespace StandardSchemaV1 {
|
||||||
|
/** The Standard Schema properties interface. */
|
||||||
|
export interface Props<Input = unknown, Output = Input> {
|
||||||
|
/** The version number of the standard. */
|
||||||
|
readonly version: 1;
|
||||||
|
/** The vendor name of the schema library. */
|
||||||
|
readonly vendor: string;
|
||||||
|
/** Validates unknown input values. */
|
||||||
|
readonly validate: (value: unknown) => Result<Output> | Promise<Result<Output>>;
|
||||||
|
/** Inferred types associated with the schema. */
|
||||||
|
readonly types?: Types<Input, Output> | undefined;
|
||||||
|
}
|
||||||
|
/** The result interface of the validate function. */
|
||||||
|
export type Result<Output> = SuccessResult<Output> | FailureResult;
|
||||||
|
/** The result interface if validation succeeds. */
|
||||||
|
export interface SuccessResult<Output> {
|
||||||
|
/** The typed output value. */
|
||||||
|
readonly value: Output;
|
||||||
|
/** The non-existent issues. */
|
||||||
|
readonly issues?: undefined;
|
||||||
|
}
|
||||||
|
/** The result interface if validation fails. */
|
||||||
|
export interface FailureResult {
|
||||||
|
/** The issues of failed validation. */
|
||||||
|
readonly issues: ReadonlyArray<Issue>;
|
||||||
|
}
|
||||||
|
/** The issue interface of the failure output. */
|
||||||
|
export interface Issue {
|
||||||
|
/** The error message of the issue. */
|
||||||
|
readonly message: string;
|
||||||
|
/** The path of the issue, if any. */
|
||||||
|
readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
|
||||||
|
}
|
||||||
|
/** The path segment interface of the issue. */
|
||||||
|
export interface PathSegment {
|
||||||
|
/** The key representing a path segment. */
|
||||||
|
readonly key: PropertyKey;
|
||||||
|
}
|
||||||
|
/** The Standard Schema types interface. */
|
||||||
|
export interface Types<Input = unknown, Output = Input> {
|
||||||
|
/** The input type of the schema. */
|
||||||
|
readonly input: Input;
|
||||||
|
/** The output type of the schema. */
|
||||||
|
readonly output: Output;
|
||||||
|
}
|
||||||
|
/** Infers the input type of a Standard Schema. */
|
||||||
|
export type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["input"];
|
||||||
|
/** Infers the output type of a Standard Schema. */
|
||||||
|
export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["output"];
|
||||||
|
export { };
|
||||||
|
}
|
||||||
|
|
||||||
|
export { StandardSchemaV1 };
|
||||||
0
node_modules/@standard-schema/spec/dist/index.js
generated
vendored
Normal file
0
node_modules/@standard-schema/spec/dist/index.js
generated
vendored
Normal file
51
node_modules/@standard-schema/spec/package.json
generated
vendored
Normal file
51
node_modules/@standard-schema/spec/package.json
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"name": "@standard-schema/spec",
|
||||||
|
"description": "A standard interface for TypeScript schema validation libraries",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"author": "Colin McDonnell",
|
||||||
|
"homepage": "https://standardschema.dev",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/standard-schema/standard-schema"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"typescript",
|
||||||
|
"schema",
|
||||||
|
"validation",
|
||||||
|
"standard",
|
||||||
|
"interface"
|
||||||
|
],
|
||||||
|
"type": "module",
|
||||||
|
"main": "./dist/index.js",
|
||||||
|
"types": "./dist/index.d.ts",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"import": {
|
||||||
|
"types": "./dist/index.d.ts",
|
||||||
|
"default": "./dist/index.js"
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"types": "./dist/index.d.cts",
|
||||||
|
"default": "./dist/index.cjs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sideEffects": false,
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"tsup": "^8.3.0",
|
||||||
|
"typescript": "^5.6.2"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"lint": "pnpm biome lint ./src",
|
||||||
|
"format": "pnpm biome format --write ./src",
|
||||||
|
"check": "pnpm biome check ./src",
|
||||||
|
"build": "tsup"
|
||||||
|
}
|
||||||
|
}
|
||||||
21
node_modules/@types/chai/LICENSE
generated
vendored
Normal file
21
node_modules/@types/chai/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE
|
||||||
15
node_modules/@types/chai/README.md
generated
vendored
Normal file
15
node_modules/@types/chai/README.md
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Installation
|
||||||
|
> `npm install --save @types/chai`
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
This package contains type definitions for chai (http://chaijs.com/).
|
||||||
|
|
||||||
|
# Details
|
||||||
|
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/chai.
|
||||||
|
|
||||||
|
### Additional Details
|
||||||
|
* Last updated: Mon, 20 Oct 2025 23:32:35 GMT
|
||||||
|
* Dependencies: [@types/deep-eql](https://npmjs.com/package/@types/deep-eql), [assertion-error](https://npmjs.com/package/assertion-error)
|
||||||
|
|
||||||
|
# Credits
|
||||||
|
These definitions were written by [Bart van der Schoor](https://github.com/Bartvds), [Andrew Brown](https://github.com/AGBrown), [Olivier Chevet](https://github.com/olivr70), [Matt Wistrand](https://github.com/mwistrand), [Shaun Luttin](https://github.com/shaunluttin), [Satana Charuwichitratana](https://github.com/micksatana), [Erik Schierboom](https://github.com/ErikSchierboom), [Bogdan Paranytsia](https://github.com/bparan), [CXuesong](https://github.com/CXuesong), and [Joey Kilpatrick](https://github.com/joeykilpatrick).
|
||||||
2145
node_modules/@types/chai/index.d.ts
generated
vendored
Normal file
2145
node_modules/@types/chai/index.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
75
node_modules/@types/chai/package.json
generated
vendored
Normal file
75
node_modules/@types/chai/package.json
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"name": "@types/chai",
|
||||||
|
"version": "5.2.3",
|
||||||
|
"description": "TypeScript definitions for chai",
|
||||||
|
"homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/chai",
|
||||||
|
"license": "MIT",
|
||||||
|
"contributors": [
|
||||||
|
{
|
||||||
|
"name": "Bart van der Schoor",
|
||||||
|
"githubUsername": "Bartvds",
|
||||||
|
"url": "https://github.com/Bartvds"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Andrew Brown",
|
||||||
|
"githubUsername": "AGBrown",
|
||||||
|
"url": "https://github.com/AGBrown"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Olivier Chevet",
|
||||||
|
"githubUsername": "olivr70",
|
||||||
|
"url": "https://github.com/olivr70"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Matt Wistrand",
|
||||||
|
"githubUsername": "mwistrand",
|
||||||
|
"url": "https://github.com/mwistrand"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Shaun Luttin",
|
||||||
|
"githubUsername": "shaunluttin",
|
||||||
|
"url": "https://github.com/shaunluttin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Satana Charuwichitratana",
|
||||||
|
"githubUsername": "micksatana",
|
||||||
|
"url": "https://github.com/micksatana"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Erik Schierboom",
|
||||||
|
"githubUsername": "ErikSchierboom",
|
||||||
|
"url": "https://github.com/ErikSchierboom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Bogdan Paranytsia",
|
||||||
|
"githubUsername": "bparan",
|
||||||
|
"url": "https://github.com/bparan"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CXuesong",
|
||||||
|
"githubUsername": "CXuesong",
|
||||||
|
"url": "https://github.com/CXuesong"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Joey Kilpatrick",
|
||||||
|
"githubUsername": "joeykilpatrick",
|
||||||
|
"url": "https://github.com/joeykilpatrick"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "module",
|
||||||
|
"main": "",
|
||||||
|
"types": "index.d.ts",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
|
||||||
|
"directory": "types/chai"
|
||||||
|
},
|
||||||
|
"scripts": {},
|
||||||
|
"dependencies": {
|
||||||
|
"@types/deep-eql": "*",
|
||||||
|
"assertion-error": "^2.0.1"
|
||||||
|
},
|
||||||
|
"peerDependencies": {},
|
||||||
|
"typesPublisherContentHash": "d9d83f1594f42010e624e46e4c8cfeee284bdd04cb05eb0730aec14140f2a833",
|
||||||
|
"typeScriptVersion": "5.2"
|
||||||
|
}
|
||||||
7
node_modules/@types/chai/register-should.d.ts
generated
vendored
Normal file
7
node_modules/@types/chai/register-should.d.ts
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
declare global {
|
||||||
|
interface Object {
|
||||||
|
should: Chai.Assertion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export {};
|
||||||
21
node_modules/@types/deep-eql/LICENSE
generated
vendored
Normal file
21
node_modules/@types/deep-eql/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE
|
||||||
57
node_modules/@types/deep-eql/README.md
generated
vendored
Normal file
57
node_modules/@types/deep-eql/README.md
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Installation
|
||||||
|
> `npm install --save @types/deep-eql`
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
This package contains type definitions for deep-eql (https://github.com/chaijs/deep-eql).
|
||||||
|
|
||||||
|
# Details
|
||||||
|
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/deep-eql.
|
||||||
|
## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/deep-eql/index.d.ts)
|
||||||
|
````ts
|
||||||
|
declare namespace deepEqual {
|
||||||
|
/**
|
||||||
|
* Memoization class used to speed up comparison.
|
||||||
|
*/
|
||||||
|
class MemoizeMap extends WeakMap<object, MemoizeMap | boolean> {}
|
||||||
|
|
||||||
|
interface DeepEqualOptions<T1 = unknown, T2 = unknown> {
|
||||||
|
/**
|
||||||
|
* Override default algorithm, determining custom equality.
|
||||||
|
*/
|
||||||
|
comparator?: (leftHandOperand: T1, rightHandOperand: T2) => boolean | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a custom memoization object which will cache the results of
|
||||||
|
* complex objects for a speed boost.
|
||||||
|
*
|
||||||
|
* By passing `false` you can disable memoization, but this will cause circular
|
||||||
|
* references to blow the stack.
|
||||||
|
*/
|
||||||
|
memoize?: MemoizeMap | false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assert deeply nested sameValue equality between two objects of any type.
|
||||||
|
*
|
||||||
|
* @param leftHandOperand
|
||||||
|
* @param rightHandOperand
|
||||||
|
* @param [options] Additional options
|
||||||
|
* @return equal match
|
||||||
|
*/
|
||||||
|
declare function deepEqual<T1, T2>(
|
||||||
|
leftHandOperand: T1,
|
||||||
|
rightHandOperand: T2,
|
||||||
|
options?: deepEqual.DeepEqualOptions<T1, T2>,
|
||||||
|
): boolean;
|
||||||
|
|
||||||
|
export = deepEqual;
|
||||||
|
|
||||||
|
````
|
||||||
|
|
||||||
|
### Additional Details
|
||||||
|
* Last updated: Mon, 06 Nov 2023 22:41:05 GMT
|
||||||
|
* Dependencies: none
|
||||||
|
|
||||||
|
# Credits
|
||||||
|
These definitions were written by [Rodrigo Pietnechuk](https://github.com/ghnoob).
|
||||||
38
node_modules/@types/deep-eql/index.d.ts
generated
vendored
Normal file
38
node_modules/@types/deep-eql/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
declare namespace deepEqual {
|
||||||
|
/**
|
||||||
|
* Memoization class used to speed up comparison.
|
||||||
|
*/
|
||||||
|
class MemoizeMap extends WeakMap<object, MemoizeMap | boolean> {}
|
||||||
|
|
||||||
|
interface DeepEqualOptions<T1 = unknown, T2 = unknown> {
|
||||||
|
/**
|
||||||
|
* Override default algorithm, determining custom equality.
|
||||||
|
*/
|
||||||
|
comparator?: (leftHandOperand: T1, rightHandOperand: T2) => boolean | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a custom memoization object which will cache the results of
|
||||||
|
* complex objects for a speed boost.
|
||||||
|
*
|
||||||
|
* By passing `false` you can disable memoization, but this will cause circular
|
||||||
|
* references to blow the stack.
|
||||||
|
*/
|
||||||
|
memoize?: MemoizeMap | false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assert deeply nested sameValue equality between two objects of any type.
|
||||||
|
*
|
||||||
|
* @param leftHandOperand
|
||||||
|
* @param rightHandOperand
|
||||||
|
* @param [options] Additional options
|
||||||
|
* @return equal match
|
||||||
|
*/
|
||||||
|
declare function deepEqual<T1, T2>(
|
||||||
|
leftHandOperand: T1,
|
||||||
|
rightHandOperand: T2,
|
||||||
|
options?: deepEqual.DeepEqualOptions<T1, T2>,
|
||||||
|
): boolean;
|
||||||
|
|
||||||
|
export = deepEqual;
|
||||||
25
node_modules/@types/deep-eql/package.json
generated
vendored
Normal file
25
node_modules/@types/deep-eql/package.json
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "@types/deep-eql",
|
||||||
|
"version": "4.0.2",
|
||||||
|
"description": "TypeScript definitions for deep-eql",
|
||||||
|
"homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/deep-eql",
|
||||||
|
"license": "MIT",
|
||||||
|
"contributors": [
|
||||||
|
{
|
||||||
|
"name": "Rodrigo Pietnechuk",
|
||||||
|
"githubUsername": "ghnoob",
|
||||||
|
"url": "https://github.com/ghnoob"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"main": "",
|
||||||
|
"types": "index.d.ts",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
|
||||||
|
"directory": "types/deep-eql"
|
||||||
|
},
|
||||||
|
"scripts": {},
|
||||||
|
"dependencies": {},
|
||||||
|
"typesPublisherContentHash": "3b8981ce557947fc00ca08cbd93b4206bfc0943360956867381a0a3f6b1eabf5",
|
||||||
|
"typeScriptVersion": "4.5"
|
||||||
|
}
|
||||||
21
node_modules/@types/estree/LICENSE
generated
vendored
Normal file
21
node_modules/@types/estree/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE
|
||||||
15
node_modules/@types/estree/README.md
generated
vendored
Normal file
15
node_modules/@types/estree/README.md
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Installation
|
||||||
|
> `npm install --save @types/estree`
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
This package contains type definitions for estree (https://github.com/estree/estree).
|
||||||
|
|
||||||
|
# Details
|
||||||
|
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree.
|
||||||
|
|
||||||
|
### Additional Details
|
||||||
|
* Last updated: Fri, 06 Jun 2025 00:04:33 GMT
|
||||||
|
* Dependencies: none
|
||||||
|
|
||||||
|
# Credits
|
||||||
|
These definitions were written by [RReverser](https://github.com/RReverser).
|
||||||
167
node_modules/@types/estree/flow.d.ts
generated
vendored
Normal file
167
node_modules/@types/estree/flow.d.ts
generated
vendored
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
declare namespace ESTree {
|
||||||
|
interface FlowTypeAnnotation extends Node {}
|
||||||
|
|
||||||
|
interface FlowBaseTypeAnnotation extends FlowTypeAnnotation {}
|
||||||
|
|
||||||
|
interface FlowLiteralTypeAnnotation extends FlowTypeAnnotation, Literal {}
|
||||||
|
|
||||||
|
interface FlowDeclaration extends Declaration {}
|
||||||
|
|
||||||
|
interface AnyTypeAnnotation extends FlowBaseTypeAnnotation {}
|
||||||
|
|
||||||
|
interface ArrayTypeAnnotation extends FlowTypeAnnotation {
|
||||||
|
elementType: FlowTypeAnnotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface BooleanLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {}
|
||||||
|
|
||||||
|
interface BooleanTypeAnnotation extends FlowBaseTypeAnnotation {}
|
||||||
|
|
||||||
|
interface ClassImplements extends Node {
|
||||||
|
id: Identifier;
|
||||||
|
typeParameters?: TypeParameterInstantiation | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ClassProperty {
|
||||||
|
key: Expression;
|
||||||
|
value?: Expression | null;
|
||||||
|
typeAnnotation?: TypeAnnotation | null;
|
||||||
|
computed: boolean;
|
||||||
|
static: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DeclareClass extends FlowDeclaration {
|
||||||
|
id: Identifier;
|
||||||
|
typeParameters?: TypeParameterDeclaration | null;
|
||||||
|
body: ObjectTypeAnnotation;
|
||||||
|
extends: InterfaceExtends[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DeclareFunction extends FlowDeclaration {
|
||||||
|
id: Identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DeclareModule extends FlowDeclaration {
|
||||||
|
id: Literal | Identifier;
|
||||||
|
body: BlockStatement;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DeclareVariable extends FlowDeclaration {
|
||||||
|
id: Identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface FunctionTypeAnnotation extends FlowTypeAnnotation {
|
||||||
|
params: FunctionTypeParam[];
|
||||||
|
returnType: FlowTypeAnnotation;
|
||||||
|
rest?: FunctionTypeParam | null;
|
||||||
|
typeParameters?: TypeParameterDeclaration | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface FunctionTypeParam {
|
||||||
|
name: Identifier;
|
||||||
|
typeAnnotation: FlowTypeAnnotation;
|
||||||
|
optional: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GenericTypeAnnotation extends FlowTypeAnnotation {
|
||||||
|
id: Identifier | QualifiedTypeIdentifier;
|
||||||
|
typeParameters?: TypeParameterInstantiation | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface InterfaceExtends extends Node {
|
||||||
|
id: Identifier | QualifiedTypeIdentifier;
|
||||||
|
typeParameters?: TypeParameterInstantiation | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface InterfaceDeclaration extends FlowDeclaration {
|
||||||
|
id: Identifier;
|
||||||
|
typeParameters?: TypeParameterDeclaration | null;
|
||||||
|
extends: InterfaceExtends[];
|
||||||
|
body: ObjectTypeAnnotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IntersectionTypeAnnotation extends FlowTypeAnnotation {
|
||||||
|
types: FlowTypeAnnotation[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface MixedTypeAnnotation extends FlowBaseTypeAnnotation {}
|
||||||
|
|
||||||
|
interface NullableTypeAnnotation extends FlowTypeAnnotation {
|
||||||
|
typeAnnotation: TypeAnnotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface NumberLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {}
|
||||||
|
|
||||||
|
interface NumberTypeAnnotation extends FlowBaseTypeAnnotation {}
|
||||||
|
|
||||||
|
interface StringLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {}
|
||||||
|
|
||||||
|
interface StringTypeAnnotation extends FlowBaseTypeAnnotation {}
|
||||||
|
|
||||||
|
interface TupleTypeAnnotation extends FlowTypeAnnotation {
|
||||||
|
types: FlowTypeAnnotation[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TypeofTypeAnnotation extends FlowTypeAnnotation {
|
||||||
|
argument: FlowTypeAnnotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TypeAlias extends FlowDeclaration {
|
||||||
|
id: Identifier;
|
||||||
|
typeParameters?: TypeParameterDeclaration | null;
|
||||||
|
right: FlowTypeAnnotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TypeAnnotation extends Node {
|
||||||
|
typeAnnotation: FlowTypeAnnotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TypeCastExpression extends Expression {
|
||||||
|
expression: Expression;
|
||||||
|
typeAnnotation: TypeAnnotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TypeParameterDeclaration extends Node {
|
||||||
|
params: Identifier[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TypeParameterInstantiation extends Node {
|
||||||
|
params: FlowTypeAnnotation[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ObjectTypeAnnotation extends FlowTypeAnnotation {
|
||||||
|
properties: ObjectTypeProperty[];
|
||||||
|
indexers: ObjectTypeIndexer[];
|
||||||
|
callProperties: ObjectTypeCallProperty[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ObjectTypeCallProperty extends Node {
|
||||||
|
value: FunctionTypeAnnotation;
|
||||||
|
static: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ObjectTypeIndexer extends Node {
|
||||||
|
id: Identifier;
|
||||||
|
key: FlowTypeAnnotation;
|
||||||
|
value: FlowTypeAnnotation;
|
||||||
|
static: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ObjectTypeProperty extends Node {
|
||||||
|
key: Expression;
|
||||||
|
value: FlowTypeAnnotation;
|
||||||
|
optional: boolean;
|
||||||
|
static: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface QualifiedTypeIdentifier extends Node {
|
||||||
|
qualification: Identifier | QualifiedTypeIdentifier;
|
||||||
|
id: Identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface UnionTypeAnnotation extends FlowTypeAnnotation {
|
||||||
|
types: FlowTypeAnnotation[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface VoidTypeAnnotation extends FlowBaseTypeAnnotation {}
|
||||||
|
}
|
||||||
694
node_modules/@types/estree/index.d.ts
generated
vendored
Normal file
694
node_modules/@types/estree/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,694 @@
|
|||||||
|
// This definition file follows a somewhat unusual format. ESTree allows
|
||||||
|
// runtime type checks based on the `type` parameter. In order to explain this
|
||||||
|
// to typescript we want to use discriminated union types:
|
||||||
|
// https://github.com/Microsoft/TypeScript/pull/9163
|
||||||
|
//
|
||||||
|
// For ESTree this is a bit tricky because the high level interfaces like
|
||||||
|
// Node or Function are pulling double duty. We want to pass common fields down
|
||||||
|
// to the interfaces that extend them (like Identifier or
|
||||||
|
// ArrowFunctionExpression), but you can't extend a type union or enforce
|
||||||
|
// common fields on them. So we've split the high level interfaces into two
|
||||||
|
// types, a base type which passes down inherited fields, and a type union of
|
||||||
|
// all types which extend the base type. Only the type union is exported, and
|
||||||
|
// the union is how other types refer to the collection of inheriting types.
|
||||||
|
//
|
||||||
|
// This makes the definitions file here somewhat more difficult to maintain,
|
||||||
|
// but it has the notable advantage of making ESTree much easier to use as
|
||||||
|
// an end user.
|
||||||
|
|
||||||
|
export interface BaseNodeWithoutComments {
|
||||||
|
// Every leaf interface that extends BaseNode must specify a type property.
|
||||||
|
// The type property should be a string literal. For example, Identifier
|
||||||
|
// has: `type: "Identifier"`
|
||||||
|
type: string;
|
||||||
|
loc?: SourceLocation | null | undefined;
|
||||||
|
range?: [number, number] | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BaseNode extends BaseNodeWithoutComments {
|
||||||
|
leadingComments?: Comment[] | undefined;
|
||||||
|
trailingComments?: Comment[] | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface NodeMap {
|
||||||
|
AssignmentProperty: AssignmentProperty;
|
||||||
|
CatchClause: CatchClause;
|
||||||
|
Class: Class;
|
||||||
|
ClassBody: ClassBody;
|
||||||
|
Expression: Expression;
|
||||||
|
Function: Function;
|
||||||
|
Identifier: Identifier;
|
||||||
|
Literal: Literal;
|
||||||
|
MethodDefinition: MethodDefinition;
|
||||||
|
ModuleDeclaration: ModuleDeclaration;
|
||||||
|
ModuleSpecifier: ModuleSpecifier;
|
||||||
|
Pattern: Pattern;
|
||||||
|
PrivateIdentifier: PrivateIdentifier;
|
||||||
|
Program: Program;
|
||||||
|
Property: Property;
|
||||||
|
PropertyDefinition: PropertyDefinition;
|
||||||
|
SpreadElement: SpreadElement;
|
||||||
|
Statement: Statement;
|
||||||
|
Super: Super;
|
||||||
|
SwitchCase: SwitchCase;
|
||||||
|
TemplateElement: TemplateElement;
|
||||||
|
VariableDeclarator: VariableDeclarator;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Node = NodeMap[keyof NodeMap];
|
||||||
|
|
||||||
|
export interface Comment extends BaseNodeWithoutComments {
|
||||||
|
type: "Line" | "Block";
|
||||||
|
value: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SourceLocation {
|
||||||
|
source?: string | null | undefined;
|
||||||
|
start: Position;
|
||||||
|
end: Position;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Position {
|
||||||
|
/** >= 1 */
|
||||||
|
line: number;
|
||||||
|
/** >= 0 */
|
||||||
|
column: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Program extends BaseNode {
|
||||||
|
type: "Program";
|
||||||
|
sourceType: "script" | "module";
|
||||||
|
body: Array<Directive | Statement | ModuleDeclaration>;
|
||||||
|
comments?: Comment[] | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Directive extends BaseNode {
|
||||||
|
type: "ExpressionStatement";
|
||||||
|
expression: Literal;
|
||||||
|
directive: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BaseFunction extends BaseNode {
|
||||||
|
params: Pattern[];
|
||||||
|
generator?: boolean | undefined;
|
||||||
|
async?: boolean | undefined;
|
||||||
|
// The body is either BlockStatement or Expression because arrow functions
|
||||||
|
// can have a body that's either. FunctionDeclarations and
|
||||||
|
// FunctionExpressions have only BlockStatement bodies.
|
||||||
|
body: BlockStatement | Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Function = FunctionDeclaration | FunctionExpression | ArrowFunctionExpression;
|
||||||
|
|
||||||
|
export type Statement =
|
||||||
|
| ExpressionStatement
|
||||||
|
| BlockStatement
|
||||||
|
| StaticBlock
|
||||||
|
| EmptyStatement
|
||||||
|
| DebuggerStatement
|
||||||
|
| WithStatement
|
||||||
|
| ReturnStatement
|
||||||
|
| LabeledStatement
|
||||||
|
| BreakStatement
|
||||||
|
| ContinueStatement
|
||||||
|
| IfStatement
|
||||||
|
| SwitchStatement
|
||||||
|
| ThrowStatement
|
||||||
|
| TryStatement
|
||||||
|
| WhileStatement
|
||||||
|
| DoWhileStatement
|
||||||
|
| ForStatement
|
||||||
|
| ForInStatement
|
||||||
|
| ForOfStatement
|
||||||
|
| Declaration;
|
||||||
|
|
||||||
|
export interface BaseStatement extends BaseNode {}
|
||||||
|
|
||||||
|
export interface EmptyStatement extends BaseStatement {
|
||||||
|
type: "EmptyStatement";
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BlockStatement extends BaseStatement {
|
||||||
|
type: "BlockStatement";
|
||||||
|
body: Statement[];
|
||||||
|
innerComments?: Comment[] | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface StaticBlock extends Omit<BlockStatement, "type"> {
|
||||||
|
type: "StaticBlock";
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ExpressionStatement extends BaseStatement {
|
||||||
|
type: "ExpressionStatement";
|
||||||
|
expression: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IfStatement extends BaseStatement {
|
||||||
|
type: "IfStatement";
|
||||||
|
test: Expression;
|
||||||
|
consequent: Statement;
|
||||||
|
alternate?: Statement | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LabeledStatement extends BaseStatement {
|
||||||
|
type: "LabeledStatement";
|
||||||
|
label: Identifier;
|
||||||
|
body: Statement;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BreakStatement extends BaseStatement {
|
||||||
|
type: "BreakStatement";
|
||||||
|
label?: Identifier | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ContinueStatement extends BaseStatement {
|
||||||
|
type: "ContinueStatement";
|
||||||
|
label?: Identifier | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface WithStatement extends BaseStatement {
|
||||||
|
type: "WithStatement";
|
||||||
|
object: Expression;
|
||||||
|
body: Statement;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SwitchStatement extends BaseStatement {
|
||||||
|
type: "SwitchStatement";
|
||||||
|
discriminant: Expression;
|
||||||
|
cases: SwitchCase[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ReturnStatement extends BaseStatement {
|
||||||
|
type: "ReturnStatement";
|
||||||
|
argument?: Expression | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ThrowStatement extends BaseStatement {
|
||||||
|
type: "ThrowStatement";
|
||||||
|
argument: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TryStatement extends BaseStatement {
|
||||||
|
type: "TryStatement";
|
||||||
|
block: BlockStatement;
|
||||||
|
handler?: CatchClause | null | undefined;
|
||||||
|
finalizer?: BlockStatement | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface WhileStatement extends BaseStatement {
|
||||||
|
type: "WhileStatement";
|
||||||
|
test: Expression;
|
||||||
|
body: Statement;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DoWhileStatement extends BaseStatement {
|
||||||
|
type: "DoWhileStatement";
|
||||||
|
body: Statement;
|
||||||
|
test: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ForStatement extends BaseStatement {
|
||||||
|
type: "ForStatement";
|
||||||
|
init?: VariableDeclaration | Expression | null | undefined;
|
||||||
|
test?: Expression | null | undefined;
|
||||||
|
update?: Expression | null | undefined;
|
||||||
|
body: Statement;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BaseForXStatement extends BaseStatement {
|
||||||
|
left: VariableDeclaration | Pattern;
|
||||||
|
right: Expression;
|
||||||
|
body: Statement;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ForInStatement extends BaseForXStatement {
|
||||||
|
type: "ForInStatement";
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DebuggerStatement extends BaseStatement {
|
||||||
|
type: "DebuggerStatement";
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Declaration = FunctionDeclaration | VariableDeclaration | ClassDeclaration;
|
||||||
|
|
||||||
|
export interface BaseDeclaration extends BaseStatement {}
|
||||||
|
|
||||||
|
export interface MaybeNamedFunctionDeclaration extends BaseFunction, BaseDeclaration {
|
||||||
|
type: "FunctionDeclaration";
|
||||||
|
/** It is null when a function declaration is a part of the `export default function` statement */
|
||||||
|
id: Identifier | null;
|
||||||
|
body: BlockStatement;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FunctionDeclaration extends MaybeNamedFunctionDeclaration {
|
||||||
|
id: Identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface VariableDeclaration extends BaseDeclaration {
|
||||||
|
type: "VariableDeclaration";
|
||||||
|
declarations: VariableDeclarator[];
|
||||||
|
kind: "var" | "let" | "const" | "using" | "await using";
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface VariableDeclarator extends BaseNode {
|
||||||
|
type: "VariableDeclarator";
|
||||||
|
id: Pattern;
|
||||||
|
init?: Expression | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ExpressionMap {
|
||||||
|
ArrayExpression: ArrayExpression;
|
||||||
|
ArrowFunctionExpression: ArrowFunctionExpression;
|
||||||
|
AssignmentExpression: AssignmentExpression;
|
||||||
|
AwaitExpression: AwaitExpression;
|
||||||
|
BinaryExpression: BinaryExpression;
|
||||||
|
CallExpression: CallExpression;
|
||||||
|
ChainExpression: ChainExpression;
|
||||||
|
ClassExpression: ClassExpression;
|
||||||
|
ConditionalExpression: ConditionalExpression;
|
||||||
|
FunctionExpression: FunctionExpression;
|
||||||
|
Identifier: Identifier;
|
||||||
|
ImportExpression: ImportExpression;
|
||||||
|
Literal: Literal;
|
||||||
|
LogicalExpression: LogicalExpression;
|
||||||
|
MemberExpression: MemberExpression;
|
||||||
|
MetaProperty: MetaProperty;
|
||||||
|
NewExpression: NewExpression;
|
||||||
|
ObjectExpression: ObjectExpression;
|
||||||
|
SequenceExpression: SequenceExpression;
|
||||||
|
TaggedTemplateExpression: TaggedTemplateExpression;
|
||||||
|
TemplateLiteral: TemplateLiteral;
|
||||||
|
ThisExpression: ThisExpression;
|
||||||
|
UnaryExpression: UnaryExpression;
|
||||||
|
UpdateExpression: UpdateExpression;
|
||||||
|
YieldExpression: YieldExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Expression = ExpressionMap[keyof ExpressionMap];
|
||||||
|
|
||||||
|
export interface BaseExpression extends BaseNode {}
|
||||||
|
|
||||||
|
export type ChainElement = SimpleCallExpression | MemberExpression;
|
||||||
|
|
||||||
|
export interface ChainExpression extends BaseExpression {
|
||||||
|
type: "ChainExpression";
|
||||||
|
expression: ChainElement;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ThisExpression extends BaseExpression {
|
||||||
|
type: "ThisExpression";
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ArrayExpression extends BaseExpression {
|
||||||
|
type: "ArrayExpression";
|
||||||
|
elements: Array<Expression | SpreadElement | null>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ObjectExpression extends BaseExpression {
|
||||||
|
type: "ObjectExpression";
|
||||||
|
properties: Array<Property | SpreadElement>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface PrivateIdentifier extends BaseNode {
|
||||||
|
type: "PrivateIdentifier";
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Property extends BaseNode {
|
||||||
|
type: "Property";
|
||||||
|
key: Expression | PrivateIdentifier;
|
||||||
|
value: Expression | Pattern; // Could be an AssignmentProperty
|
||||||
|
kind: "init" | "get" | "set";
|
||||||
|
method: boolean;
|
||||||
|
shorthand: boolean;
|
||||||
|
computed: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface PropertyDefinition extends BaseNode {
|
||||||
|
type: "PropertyDefinition";
|
||||||
|
key: Expression | PrivateIdentifier;
|
||||||
|
value?: Expression | null | undefined;
|
||||||
|
computed: boolean;
|
||||||
|
static: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FunctionExpression extends BaseFunction, BaseExpression {
|
||||||
|
id?: Identifier | null | undefined;
|
||||||
|
type: "FunctionExpression";
|
||||||
|
body: BlockStatement;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SequenceExpression extends BaseExpression {
|
||||||
|
type: "SequenceExpression";
|
||||||
|
expressions: Expression[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UnaryExpression extends BaseExpression {
|
||||||
|
type: "UnaryExpression";
|
||||||
|
operator: UnaryOperator;
|
||||||
|
prefix: true;
|
||||||
|
argument: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BinaryExpression extends BaseExpression {
|
||||||
|
type: "BinaryExpression";
|
||||||
|
operator: BinaryOperator;
|
||||||
|
left: Expression | PrivateIdentifier;
|
||||||
|
right: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AssignmentExpression extends BaseExpression {
|
||||||
|
type: "AssignmentExpression";
|
||||||
|
operator: AssignmentOperator;
|
||||||
|
left: Pattern | MemberExpression;
|
||||||
|
right: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UpdateExpression extends BaseExpression {
|
||||||
|
type: "UpdateExpression";
|
||||||
|
operator: UpdateOperator;
|
||||||
|
argument: Expression;
|
||||||
|
prefix: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LogicalExpression extends BaseExpression {
|
||||||
|
type: "LogicalExpression";
|
||||||
|
operator: LogicalOperator;
|
||||||
|
left: Expression;
|
||||||
|
right: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ConditionalExpression extends BaseExpression {
|
||||||
|
type: "ConditionalExpression";
|
||||||
|
test: Expression;
|
||||||
|
alternate: Expression;
|
||||||
|
consequent: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BaseCallExpression extends BaseExpression {
|
||||||
|
callee: Expression | Super;
|
||||||
|
arguments: Array<Expression | SpreadElement>;
|
||||||
|
}
|
||||||
|
export type CallExpression = SimpleCallExpression | NewExpression;
|
||||||
|
|
||||||
|
export interface SimpleCallExpression extends BaseCallExpression {
|
||||||
|
type: "CallExpression";
|
||||||
|
optional: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface NewExpression extends BaseCallExpression {
|
||||||
|
type: "NewExpression";
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MemberExpression extends BaseExpression, BasePattern {
|
||||||
|
type: "MemberExpression";
|
||||||
|
object: Expression | Super;
|
||||||
|
property: Expression | PrivateIdentifier;
|
||||||
|
computed: boolean;
|
||||||
|
optional: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Pattern = Identifier | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | MemberExpression;
|
||||||
|
|
||||||
|
export interface BasePattern extends BaseNode {}
|
||||||
|
|
||||||
|
export interface SwitchCase extends BaseNode {
|
||||||
|
type: "SwitchCase";
|
||||||
|
test?: Expression | null | undefined;
|
||||||
|
consequent: Statement[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CatchClause extends BaseNode {
|
||||||
|
type: "CatchClause";
|
||||||
|
param: Pattern | null;
|
||||||
|
body: BlockStatement;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Identifier extends BaseNode, BaseExpression, BasePattern {
|
||||||
|
type: "Identifier";
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Literal = SimpleLiteral | RegExpLiteral | BigIntLiteral;
|
||||||
|
|
||||||
|
export interface SimpleLiteral extends BaseNode, BaseExpression {
|
||||||
|
type: "Literal";
|
||||||
|
value: string | boolean | number | null;
|
||||||
|
raw?: string | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface RegExpLiteral extends BaseNode, BaseExpression {
|
||||||
|
type: "Literal";
|
||||||
|
value?: RegExp | null | undefined;
|
||||||
|
regex: {
|
||||||
|
pattern: string;
|
||||||
|
flags: string;
|
||||||
|
};
|
||||||
|
raw?: string | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BigIntLiteral extends BaseNode, BaseExpression {
|
||||||
|
type: "Literal";
|
||||||
|
value?: bigint | null | undefined;
|
||||||
|
bigint: string;
|
||||||
|
raw?: string | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UnaryOperator = "-" | "+" | "!" | "~" | "typeof" | "void" | "delete";
|
||||||
|
|
||||||
|
export type BinaryOperator =
|
||||||
|
| "=="
|
||||||
|
| "!="
|
||||||
|
| "==="
|
||||||
|
| "!=="
|
||||||
|
| "<"
|
||||||
|
| "<="
|
||||||
|
| ">"
|
||||||
|
| ">="
|
||||||
|
| "<<"
|
||||||
|
| ">>"
|
||||||
|
| ">>>"
|
||||||
|
| "+"
|
||||||
|
| "-"
|
||||||
|
| "*"
|
||||||
|
| "/"
|
||||||
|
| "%"
|
||||||
|
| "**"
|
||||||
|
| "|"
|
||||||
|
| "^"
|
||||||
|
| "&"
|
||||||
|
| "in"
|
||||||
|
| "instanceof";
|
||||||
|
|
||||||
|
export type LogicalOperator = "||" | "&&" | "??";
|
||||||
|
|
||||||
|
export type AssignmentOperator =
|
||||||
|
| "="
|
||||||
|
| "+="
|
||||||
|
| "-="
|
||||||
|
| "*="
|
||||||
|
| "/="
|
||||||
|
| "%="
|
||||||
|
| "**="
|
||||||
|
| "<<="
|
||||||
|
| ">>="
|
||||||
|
| ">>>="
|
||||||
|
| "|="
|
||||||
|
| "^="
|
||||||
|
| "&="
|
||||||
|
| "||="
|
||||||
|
| "&&="
|
||||||
|
| "??=";
|
||||||
|
|
||||||
|
export type UpdateOperator = "++" | "--";
|
||||||
|
|
||||||
|
export interface ForOfStatement extends BaseForXStatement {
|
||||||
|
type: "ForOfStatement";
|
||||||
|
await: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Super extends BaseNode {
|
||||||
|
type: "Super";
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SpreadElement extends BaseNode {
|
||||||
|
type: "SpreadElement";
|
||||||
|
argument: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ArrowFunctionExpression extends BaseExpression, BaseFunction {
|
||||||
|
type: "ArrowFunctionExpression";
|
||||||
|
expression: boolean;
|
||||||
|
body: BlockStatement | Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface YieldExpression extends BaseExpression {
|
||||||
|
type: "YieldExpression";
|
||||||
|
argument?: Expression | null | undefined;
|
||||||
|
delegate: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TemplateLiteral extends BaseExpression {
|
||||||
|
type: "TemplateLiteral";
|
||||||
|
quasis: TemplateElement[];
|
||||||
|
expressions: Expression[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TaggedTemplateExpression extends BaseExpression {
|
||||||
|
type: "TaggedTemplateExpression";
|
||||||
|
tag: Expression;
|
||||||
|
quasi: TemplateLiteral;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TemplateElement extends BaseNode {
|
||||||
|
type: "TemplateElement";
|
||||||
|
tail: boolean;
|
||||||
|
value: {
|
||||||
|
/** It is null when the template literal is tagged and the text has an invalid escape (e.g. - tag`\unicode and \u{55}`) */
|
||||||
|
cooked?: string | null | undefined;
|
||||||
|
raw: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AssignmentProperty extends Property {
|
||||||
|
value: Pattern;
|
||||||
|
kind: "init";
|
||||||
|
method: boolean; // false
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ObjectPattern extends BasePattern {
|
||||||
|
type: "ObjectPattern";
|
||||||
|
properties: Array<AssignmentProperty | RestElement>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ArrayPattern extends BasePattern {
|
||||||
|
type: "ArrayPattern";
|
||||||
|
elements: Array<Pattern | null>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface RestElement extends BasePattern {
|
||||||
|
type: "RestElement";
|
||||||
|
argument: Pattern;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AssignmentPattern extends BasePattern {
|
||||||
|
type: "AssignmentPattern";
|
||||||
|
left: Pattern;
|
||||||
|
right: Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Class = ClassDeclaration | ClassExpression;
|
||||||
|
export interface BaseClass extends BaseNode {
|
||||||
|
superClass?: Expression | null | undefined;
|
||||||
|
body: ClassBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ClassBody extends BaseNode {
|
||||||
|
type: "ClassBody";
|
||||||
|
body: Array<MethodDefinition | PropertyDefinition | StaticBlock>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MethodDefinition extends BaseNode {
|
||||||
|
type: "MethodDefinition";
|
||||||
|
key: Expression | PrivateIdentifier;
|
||||||
|
value: FunctionExpression;
|
||||||
|
kind: "constructor" | "method" | "get" | "set";
|
||||||
|
computed: boolean;
|
||||||
|
static: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MaybeNamedClassDeclaration extends BaseClass, BaseDeclaration {
|
||||||
|
type: "ClassDeclaration";
|
||||||
|
/** It is null when a class declaration is a part of the `export default class` statement */
|
||||||
|
id: Identifier | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ClassDeclaration extends MaybeNamedClassDeclaration {
|
||||||
|
id: Identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ClassExpression extends BaseClass, BaseExpression {
|
||||||
|
type: "ClassExpression";
|
||||||
|
id?: Identifier | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MetaProperty extends BaseExpression {
|
||||||
|
type: "MetaProperty";
|
||||||
|
meta: Identifier;
|
||||||
|
property: Identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ModuleDeclaration =
|
||||||
|
| ImportDeclaration
|
||||||
|
| ExportNamedDeclaration
|
||||||
|
| ExportDefaultDeclaration
|
||||||
|
| ExportAllDeclaration;
|
||||||
|
export interface BaseModuleDeclaration extends BaseNode {}
|
||||||
|
|
||||||
|
export type ModuleSpecifier = ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier;
|
||||||
|
export interface BaseModuleSpecifier extends BaseNode {
|
||||||
|
local: Identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImportDeclaration extends BaseModuleDeclaration {
|
||||||
|
type: "ImportDeclaration";
|
||||||
|
specifiers: Array<ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier>;
|
||||||
|
attributes: ImportAttribute[];
|
||||||
|
source: Literal;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImportSpecifier extends BaseModuleSpecifier {
|
||||||
|
type: "ImportSpecifier";
|
||||||
|
imported: Identifier | Literal;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImportAttribute extends BaseNode {
|
||||||
|
type: "ImportAttribute";
|
||||||
|
key: Identifier | Literal;
|
||||||
|
value: Literal;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImportExpression extends BaseExpression {
|
||||||
|
type: "ImportExpression";
|
||||||
|
source: Expression;
|
||||||
|
options?: Expression | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImportDefaultSpecifier extends BaseModuleSpecifier {
|
||||||
|
type: "ImportDefaultSpecifier";
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ImportNamespaceSpecifier extends BaseModuleSpecifier {
|
||||||
|
type: "ImportNamespaceSpecifier";
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ExportNamedDeclaration extends BaseModuleDeclaration {
|
||||||
|
type: "ExportNamedDeclaration";
|
||||||
|
declaration?: Declaration | null | undefined;
|
||||||
|
specifiers: ExportSpecifier[];
|
||||||
|
attributes: ImportAttribute[];
|
||||||
|
source?: Literal | null | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ExportSpecifier extends Omit<BaseModuleSpecifier, "local"> {
|
||||||
|
type: "ExportSpecifier";
|
||||||
|
local: Identifier | Literal;
|
||||||
|
exported: Identifier | Literal;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ExportDefaultDeclaration extends BaseModuleDeclaration {
|
||||||
|
type: "ExportDefaultDeclaration";
|
||||||
|
declaration: MaybeNamedFunctionDeclaration | MaybeNamedClassDeclaration | Expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ExportAllDeclaration extends BaseModuleDeclaration {
|
||||||
|
type: "ExportAllDeclaration";
|
||||||
|
exported: Identifier | Literal | null;
|
||||||
|
attributes: ImportAttribute[];
|
||||||
|
source: Literal;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AwaitExpression extends BaseExpression {
|
||||||
|
type: "AwaitExpression";
|
||||||
|
argument: Expression;
|
||||||
|
}
|
||||||
27
node_modules/@types/estree/package.json
generated
vendored
Normal file
27
node_modules/@types/estree/package.json
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"name": "@types/estree",
|
||||||
|
"version": "1.0.8",
|
||||||
|
"description": "TypeScript definitions for estree",
|
||||||
|
"homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree",
|
||||||
|
"license": "MIT",
|
||||||
|
"contributors": [
|
||||||
|
{
|
||||||
|
"name": "RReverser",
|
||||||
|
"githubUsername": "RReverser",
|
||||||
|
"url": "https://github.com/RReverser"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"main": "",
|
||||||
|
"types": "index.d.ts",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
|
||||||
|
"directory": "types/estree"
|
||||||
|
},
|
||||||
|
"scripts": {},
|
||||||
|
"dependencies": {},
|
||||||
|
"peerDependencies": {},
|
||||||
|
"typesPublisherContentHash": "7a167b6e4a4d9f6e9a2cb9fd3fc45c885f89cbdeb44b3e5961bb057a45c082fd",
|
||||||
|
"typeScriptVersion": "5.1",
|
||||||
|
"nonNpm": true
|
||||||
|
}
|
||||||
21
node_modules/@types/node/LICENSE
generated
vendored
Normal file
21
node_modules/@types/node/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE
|
||||||
15
node_modules/@types/node/README.md
generated
vendored
Normal file
15
node_modules/@types/node/README.md
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Installation
|
||||||
|
> `npm install --save @types/node`
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
This package contains type definitions for node (https://nodejs.org/).
|
||||||
|
|
||||||
|
# Details
|
||||||
|
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
|
||||||
|
|
||||||
|
### Additional Details
|
||||||
|
* Last updated: Tue, 11 Nov 2025 23:33:13 GMT
|
||||||
|
* Dependencies: [undici-types](https://npmjs.com/package/undici-types)
|
||||||
|
|
||||||
|
# Credits
|
||||||
|
These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [Alberto Schiabel](https://github.com/jkomyno), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [David Junger](https://github.com/touffy), [Mohsen Azimi](https://github.com/mohsen1), [Nikita Galkin](https://github.com/galkin), [Sebastian Silbermann](https://github.com/eps1lon), [Wilco Bakker](https://github.com/WilcoBakker), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Victor Perin](https://github.com/victorperin), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), [wafuwafu13](https://github.com/wafuwafu13), [Matteo Collina](https://github.com/mcollina), [Dmitry Semigradsky](https://github.com/Semigradsky), [René](https://github.com/Renegade334), and [Yagiz Nizipli](https://github.com/anonrig).
|
||||||
1115
node_modules/@types/node/assert.d.ts
generated
vendored
Normal file
1115
node_modules/@types/node/assert.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
111
node_modules/@types/node/assert/strict.d.ts
generated
vendored
Normal file
111
node_modules/@types/node/assert/strict.d.ts
generated
vendored
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
/**
|
||||||
|
* In strict assertion mode, non-strict methods behave like their corresponding
|
||||||
|
* strict methods. For example, `assert.deepEqual()` will behave like
|
||||||
|
* `assert.deepStrictEqual()`.
|
||||||
|
*
|
||||||
|
* In strict assertion mode, error messages for objects display a diff. In legacy
|
||||||
|
* assertion mode, error messages for objects display the objects, often truncated.
|
||||||
|
*
|
||||||
|
* To use strict assertion mode:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { strict as assert } from 'node:assert';
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import assert from 'node:assert/strict';
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Example error diff:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { strict as assert } from 'node:assert';
|
||||||
|
*
|
||||||
|
* assert.deepEqual([[[1, 2, 3]], 4, 5], [[[1, 2, '3']], 4, 5]);
|
||||||
|
* // AssertionError: Expected inputs to be strictly deep-equal:
|
||||||
|
* // + actual - expected ... Lines skipped
|
||||||
|
* //
|
||||||
|
* // [
|
||||||
|
* // [
|
||||||
|
* // ...
|
||||||
|
* // 2,
|
||||||
|
* // + 3
|
||||||
|
* // - '3'
|
||||||
|
* // ],
|
||||||
|
* // ...
|
||||||
|
* // 5
|
||||||
|
* // ]
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* To deactivate the colors, use the `NO_COLOR` or `NODE_DISABLE_COLORS`
|
||||||
|
* environment variables. This will also deactivate the colors in the REPL. For
|
||||||
|
* more on color support in terminal environments, read the tty
|
||||||
|
* [`getColorDepth()`](https://nodejs.org/docs/latest-v24.x/api/tty.html#writestreamgetcolordepthenv) documentation.
|
||||||
|
* @since v15.0.0
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/assert/strict.js)
|
||||||
|
*/
|
||||||
|
declare module "assert/strict" {
|
||||||
|
import {
|
||||||
|
Assert,
|
||||||
|
AssertionError,
|
||||||
|
AssertionErrorOptions,
|
||||||
|
AssertOptions,
|
||||||
|
AssertPredicate,
|
||||||
|
AssertStrict,
|
||||||
|
CallTracker,
|
||||||
|
CallTrackerCall,
|
||||||
|
CallTrackerReportInformation,
|
||||||
|
deepStrictEqual,
|
||||||
|
doesNotMatch,
|
||||||
|
doesNotReject,
|
||||||
|
doesNotThrow,
|
||||||
|
fail,
|
||||||
|
ifError,
|
||||||
|
match,
|
||||||
|
notDeepStrictEqual,
|
||||||
|
notStrictEqual,
|
||||||
|
ok,
|
||||||
|
partialDeepStrictEqual,
|
||||||
|
rejects,
|
||||||
|
strictEqual,
|
||||||
|
throws,
|
||||||
|
} from "node:assert";
|
||||||
|
function strict(value: unknown, message?: string | Error): asserts value;
|
||||||
|
namespace strict {
|
||||||
|
export {
|
||||||
|
Assert,
|
||||||
|
AssertionError,
|
||||||
|
AssertionErrorOptions,
|
||||||
|
AssertOptions,
|
||||||
|
AssertPredicate,
|
||||||
|
AssertStrict,
|
||||||
|
CallTracker,
|
||||||
|
CallTrackerCall,
|
||||||
|
CallTrackerReportInformation,
|
||||||
|
deepStrictEqual,
|
||||||
|
deepStrictEqual as deepEqual,
|
||||||
|
doesNotMatch,
|
||||||
|
doesNotReject,
|
||||||
|
doesNotThrow,
|
||||||
|
fail,
|
||||||
|
ifError,
|
||||||
|
match,
|
||||||
|
notDeepStrictEqual,
|
||||||
|
notDeepStrictEqual as notDeepEqual,
|
||||||
|
notStrictEqual,
|
||||||
|
notStrictEqual as notEqual,
|
||||||
|
ok,
|
||||||
|
partialDeepStrictEqual,
|
||||||
|
rejects,
|
||||||
|
strict,
|
||||||
|
strictEqual,
|
||||||
|
strictEqual as equal,
|
||||||
|
throws,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
export = strict;
|
||||||
|
}
|
||||||
|
declare module "node:assert/strict" {
|
||||||
|
import strict = require("assert/strict");
|
||||||
|
export = strict;
|
||||||
|
}
|
||||||
623
node_modules/@types/node/async_hooks.d.ts
generated
vendored
Normal file
623
node_modules/@types/node/async_hooks.d.ts
generated
vendored
Normal file
@@ -0,0 +1,623 @@
|
|||||||
|
/**
|
||||||
|
* We strongly discourage the use of the `async_hooks` API.
|
||||||
|
* Other APIs that can cover most of its use cases include:
|
||||||
|
*
|
||||||
|
* * [`AsyncLocalStorage`](https://nodejs.org/docs/latest-v24.x/api/async_context.html#class-asynclocalstorage) tracks async context
|
||||||
|
* * [`process.getActiveResourcesInfo()`](https://nodejs.org/docs/latest-v24.x/api/process.html#processgetactiveresourcesinfo) tracks active resources
|
||||||
|
*
|
||||||
|
* The `node:async_hooks` module provides an API to track asynchronous resources.
|
||||||
|
* It can be accessed using:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import async_hooks from 'node:async_hooks';
|
||||||
|
* ```
|
||||||
|
* @experimental
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/async_hooks.js)
|
||||||
|
*/
|
||||||
|
declare module "async_hooks" {
|
||||||
|
/**
|
||||||
|
* ```js
|
||||||
|
* import { executionAsyncId } from 'node:async_hooks';
|
||||||
|
* import fs from 'node:fs';
|
||||||
|
*
|
||||||
|
* console.log(executionAsyncId()); // 1 - bootstrap
|
||||||
|
* const path = '.';
|
||||||
|
* fs.open(path, 'r', (err, fd) => {
|
||||||
|
* console.log(executionAsyncId()); // 6 - open()
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The ID returned from `executionAsyncId()` is related to execution timing, not
|
||||||
|
* causality (which is covered by `triggerAsyncId()`):
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const server = net.createServer((conn) => {
|
||||||
|
* // Returns the ID of the server, not of the new connection, because the
|
||||||
|
* // callback runs in the execution scope of the server's MakeCallback().
|
||||||
|
* async_hooks.executionAsyncId();
|
||||||
|
*
|
||||||
|
* }).listen(port, () => {
|
||||||
|
* // Returns the ID of a TickObject (process.nextTick()) because all
|
||||||
|
* // callbacks passed to .listen() are wrapped in a nextTick().
|
||||||
|
* async_hooks.executionAsyncId();
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Promise contexts may not get precise `executionAsyncIds` by default.
|
||||||
|
* See the section on [promise execution tracking](https://nodejs.org/docs/latest-v24.x/api/async_hooks.html#promise-execution-tracking).
|
||||||
|
* @since v8.1.0
|
||||||
|
* @return The `asyncId` of the current execution context. Useful to track when something calls.
|
||||||
|
*/
|
||||||
|
function executionAsyncId(): number;
|
||||||
|
/**
|
||||||
|
* Resource objects returned by `executionAsyncResource()` are most often internal
|
||||||
|
* Node.js handle objects with undocumented APIs. Using any functions or properties
|
||||||
|
* on the object is likely to crash your application and should be avoided.
|
||||||
|
*
|
||||||
|
* Using `executionAsyncResource()` in the top-level execution context will
|
||||||
|
* return an empty object as there is no handle or request object to use,
|
||||||
|
* but having an object representing the top-level can be helpful.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { open } from 'node:fs';
|
||||||
|
* import { executionAsyncId, executionAsyncResource } from 'node:async_hooks';
|
||||||
|
*
|
||||||
|
* console.log(executionAsyncId(), executionAsyncResource()); // 1 {}
|
||||||
|
* open(new URL(import.meta.url), 'r', (err, fd) => {
|
||||||
|
* console.log(executionAsyncId(), executionAsyncResource()); // 7 FSReqWrap
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* This can be used to implement continuation local storage without the
|
||||||
|
* use of a tracking `Map` to store the metadata:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { createServer } from 'node:http';
|
||||||
|
* import {
|
||||||
|
* executionAsyncId,
|
||||||
|
* executionAsyncResource,
|
||||||
|
* createHook,
|
||||||
|
* } from 'node:async_hooks';
|
||||||
|
* const sym = Symbol('state'); // Private symbol to avoid pollution
|
||||||
|
*
|
||||||
|
* createHook({
|
||||||
|
* init(asyncId, type, triggerAsyncId, resource) {
|
||||||
|
* const cr = executionAsyncResource();
|
||||||
|
* if (cr) {
|
||||||
|
* resource[sym] = cr[sym];
|
||||||
|
* }
|
||||||
|
* },
|
||||||
|
* }).enable();
|
||||||
|
*
|
||||||
|
* const server = createServer((req, res) => {
|
||||||
|
* executionAsyncResource()[sym] = { state: req.url };
|
||||||
|
* setTimeout(function() {
|
||||||
|
* res.end(JSON.stringify(executionAsyncResource()[sym]));
|
||||||
|
* }, 100);
|
||||||
|
* }).listen(3000);
|
||||||
|
* ```
|
||||||
|
* @since v13.9.0, v12.17.0
|
||||||
|
* @return The resource representing the current execution. Useful to store data within the resource.
|
||||||
|
*/
|
||||||
|
function executionAsyncResource(): object;
|
||||||
|
/**
|
||||||
|
* ```js
|
||||||
|
* const server = net.createServer((conn) => {
|
||||||
|
* // The resource that caused (or triggered) this callback to be called
|
||||||
|
* // was that of the new connection. Thus the return value of triggerAsyncId()
|
||||||
|
* // is the asyncId of "conn".
|
||||||
|
* async_hooks.triggerAsyncId();
|
||||||
|
*
|
||||||
|
* }).listen(port, () => {
|
||||||
|
* // Even though all callbacks passed to .listen() are wrapped in a nextTick()
|
||||||
|
* // the callback itself exists because the call to the server's .listen()
|
||||||
|
* // was made. So the return value would be the ID of the server.
|
||||||
|
* async_hooks.triggerAsyncId();
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Promise contexts may not get valid `triggerAsyncId`s by default. See
|
||||||
|
* the section on [promise execution tracking](https://nodejs.org/docs/latest-v24.x/api/async_hooks.html#promise-execution-tracking).
|
||||||
|
* @return The ID of the resource responsible for calling the callback that is currently being executed.
|
||||||
|
*/
|
||||||
|
function triggerAsyncId(): number;
|
||||||
|
interface HookCallbacks {
|
||||||
|
/**
|
||||||
|
* Called when a class is constructed that has the possibility to emit an asynchronous event.
|
||||||
|
* @param asyncId A unique ID for the async resource
|
||||||
|
* @param type The type of the async resource
|
||||||
|
* @param triggerAsyncId The unique ID of the async resource in whose execution context this async resource was created
|
||||||
|
* @param resource Reference to the resource representing the async operation, needs to be released during destroy
|
||||||
|
*/
|
||||||
|
init?(asyncId: number, type: string, triggerAsyncId: number, resource: object): void;
|
||||||
|
/**
|
||||||
|
* When an asynchronous operation is initiated or completes a callback is called to notify the user.
|
||||||
|
* The before callback is called just before said callback is executed.
|
||||||
|
* @param asyncId the unique identifier assigned to the resource about to execute the callback.
|
||||||
|
*/
|
||||||
|
before?(asyncId: number): void;
|
||||||
|
/**
|
||||||
|
* Called immediately after the callback specified in `before` is completed.
|
||||||
|
*
|
||||||
|
* If an uncaught exception occurs during execution of the callback, then `after` will run after the `'uncaughtException'` event is emitted or a `domain`'s handler runs.
|
||||||
|
* @param asyncId the unique identifier assigned to the resource which has executed the callback.
|
||||||
|
*/
|
||||||
|
after?(asyncId: number): void;
|
||||||
|
/**
|
||||||
|
* Called when a promise has resolve() called. This may not be in the same execution id
|
||||||
|
* as the promise itself.
|
||||||
|
* @param asyncId the unique id for the promise that was resolve()d.
|
||||||
|
*/
|
||||||
|
promiseResolve?(asyncId: number): void;
|
||||||
|
/**
|
||||||
|
* Called after the resource corresponding to asyncId is destroyed
|
||||||
|
* @param asyncId a unique ID for the async resource
|
||||||
|
*/
|
||||||
|
destroy?(asyncId: number): void;
|
||||||
|
}
|
||||||
|
interface AsyncHook {
|
||||||
|
/**
|
||||||
|
* Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop.
|
||||||
|
*/
|
||||||
|
enable(): this;
|
||||||
|
/**
|
||||||
|
* Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled.
|
||||||
|
*/
|
||||||
|
disable(): this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Registers functions to be called for different lifetime events of each async
|
||||||
|
* operation.
|
||||||
|
*
|
||||||
|
* The callbacks `init()`/`before()`/`after()`/`destroy()` are called for the
|
||||||
|
* respective asynchronous event during a resource's lifetime.
|
||||||
|
*
|
||||||
|
* All callbacks are optional. For example, if only resource cleanup needs to
|
||||||
|
* be tracked, then only the `destroy` callback needs to be passed. The
|
||||||
|
* specifics of all functions that can be passed to `callbacks` is in the `Hook Callbacks` section.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { createHook } from 'node:async_hooks';
|
||||||
|
*
|
||||||
|
* const asyncHook = createHook({
|
||||||
|
* init(asyncId, type, triggerAsyncId, resource) { },
|
||||||
|
* destroy(asyncId) { },
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The callbacks will be inherited via the prototype chain:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* class MyAsyncCallbacks {
|
||||||
|
* init(asyncId, type, triggerAsyncId, resource) { }
|
||||||
|
* destroy(asyncId) {}
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* class MyAddedCallbacks extends MyAsyncCallbacks {
|
||||||
|
* before(asyncId) { }
|
||||||
|
* after(asyncId) { }
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* const asyncHook = async_hooks.createHook(new MyAddedCallbacks());
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Because promises are asynchronous resources whose lifecycle is tracked
|
||||||
|
* via the async hooks mechanism, the `init()`, `before()`, `after()`, and`destroy()` callbacks _must not_ be async functions that return promises.
|
||||||
|
* @since v8.1.0
|
||||||
|
* @param callbacks The `Hook Callbacks` to register
|
||||||
|
* @return Instance used for disabling and enabling hooks
|
||||||
|
*/
|
||||||
|
function createHook(callbacks: HookCallbacks): AsyncHook;
|
||||||
|
interface AsyncResourceOptions {
|
||||||
|
/**
|
||||||
|
* The ID of the execution context that created this async event.
|
||||||
|
* @default executionAsyncId()
|
||||||
|
*/
|
||||||
|
triggerAsyncId?: number | undefined;
|
||||||
|
/**
|
||||||
|
* Disables automatic `emitDestroy` when the object is garbage collected.
|
||||||
|
* This usually does not need to be set (even if `emitDestroy` is called
|
||||||
|
* manually), unless the resource's `asyncId` is retrieved and the
|
||||||
|
* sensitive API's `emitDestroy` is called with it.
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
requireManualDestroy?: boolean | undefined;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* The class `AsyncResource` is designed to be extended by the embedder's async
|
||||||
|
* resources. Using this, users can easily trigger the lifetime events of their
|
||||||
|
* own resources.
|
||||||
|
*
|
||||||
|
* The `init` hook will trigger when an `AsyncResource` is instantiated.
|
||||||
|
*
|
||||||
|
* The following is an overview of the `AsyncResource` API.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { AsyncResource, executionAsyncId } from 'node:async_hooks';
|
||||||
|
*
|
||||||
|
* // AsyncResource() is meant to be extended. Instantiating a
|
||||||
|
* // new AsyncResource() also triggers init. If triggerAsyncId is omitted then
|
||||||
|
* // async_hook.executionAsyncId() is used.
|
||||||
|
* const asyncResource = new AsyncResource(
|
||||||
|
* type, { triggerAsyncId: executionAsyncId(), requireManualDestroy: false },
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* // Run a function in the execution context of the resource. This will
|
||||||
|
* // * establish the context of the resource
|
||||||
|
* // * trigger the AsyncHooks before callbacks
|
||||||
|
* // * call the provided function `fn` with the supplied arguments
|
||||||
|
* // * trigger the AsyncHooks after callbacks
|
||||||
|
* // * restore the original execution context
|
||||||
|
* asyncResource.runInAsyncScope(fn, thisArg, ...args);
|
||||||
|
*
|
||||||
|
* // Call AsyncHooks destroy callbacks.
|
||||||
|
* asyncResource.emitDestroy();
|
||||||
|
*
|
||||||
|
* // Return the unique ID assigned to the AsyncResource instance.
|
||||||
|
* asyncResource.asyncId();
|
||||||
|
*
|
||||||
|
* // Return the trigger ID for the AsyncResource instance.
|
||||||
|
* asyncResource.triggerAsyncId();
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
class AsyncResource {
|
||||||
|
/**
|
||||||
|
* AsyncResource() is meant to be extended. Instantiating a
|
||||||
|
* new AsyncResource() also triggers init. If triggerAsyncId is omitted then
|
||||||
|
* async_hook.executionAsyncId() is used.
|
||||||
|
* @param type The type of async event.
|
||||||
|
* @param triggerAsyncId The ID of the execution context that created
|
||||||
|
* this async event (default: `executionAsyncId()`), or an
|
||||||
|
* AsyncResourceOptions object (since v9.3.0)
|
||||||
|
*/
|
||||||
|
constructor(type: string, triggerAsyncId?: number | AsyncResourceOptions);
|
||||||
|
/**
|
||||||
|
* Binds the given function to the current execution context.
|
||||||
|
* @since v14.8.0, v12.19.0
|
||||||
|
* @param fn The function to bind to the current execution context.
|
||||||
|
* @param type An optional name to associate with the underlying `AsyncResource`.
|
||||||
|
*/
|
||||||
|
static bind<Func extends (this: ThisArg, ...args: any[]) => any, ThisArg>(
|
||||||
|
fn: Func,
|
||||||
|
type?: string,
|
||||||
|
thisArg?: ThisArg,
|
||||||
|
): Func;
|
||||||
|
/**
|
||||||
|
* Binds the given function to execute to this `AsyncResource`'s scope.
|
||||||
|
* @since v14.8.0, v12.19.0
|
||||||
|
* @param fn The function to bind to the current `AsyncResource`.
|
||||||
|
*/
|
||||||
|
bind<Func extends (...args: any[]) => any>(fn: Func): Func;
|
||||||
|
/**
|
||||||
|
* Call the provided function with the provided arguments in the execution context
|
||||||
|
* of the async resource. This will establish the context, trigger the AsyncHooks
|
||||||
|
* before callbacks, call the function, trigger the AsyncHooks after callbacks, and
|
||||||
|
* then restore the original execution context.
|
||||||
|
* @since v9.6.0
|
||||||
|
* @param fn The function to call in the execution context of this async resource.
|
||||||
|
* @param thisArg The receiver to be used for the function call.
|
||||||
|
* @param args Optional arguments to pass to the function.
|
||||||
|
*/
|
||||||
|
runInAsyncScope<This, Result>(
|
||||||
|
fn: (this: This, ...args: any[]) => Result,
|
||||||
|
thisArg?: This,
|
||||||
|
...args: any[]
|
||||||
|
): Result;
|
||||||
|
/**
|
||||||
|
* Call all `destroy` hooks. This should only ever be called once. An error will
|
||||||
|
* be thrown if it is called more than once. This **must** be manually called. If
|
||||||
|
* the resource is left to be collected by the GC then the `destroy` hooks will
|
||||||
|
* never be called.
|
||||||
|
* @return A reference to `asyncResource`.
|
||||||
|
*/
|
||||||
|
emitDestroy(): this;
|
||||||
|
/**
|
||||||
|
* @return The unique `asyncId` assigned to the resource.
|
||||||
|
*/
|
||||||
|
asyncId(): number;
|
||||||
|
/**
|
||||||
|
* @return The same `triggerAsyncId` that is passed to the `AsyncResource` constructor.
|
||||||
|
*/
|
||||||
|
triggerAsyncId(): number;
|
||||||
|
}
|
||||||
|
interface AsyncLocalStorageOptions {
|
||||||
|
/**
|
||||||
|
* The default value to be used when no store is provided.
|
||||||
|
*/
|
||||||
|
defaultValue?: any;
|
||||||
|
/**
|
||||||
|
* A name for the `AsyncLocalStorage` value.
|
||||||
|
*/
|
||||||
|
name?: string | undefined;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This class creates stores that stay coherent through asynchronous operations.
|
||||||
|
*
|
||||||
|
* While you can create your own implementation on top of the `node:async_hooks` module, `AsyncLocalStorage` should be preferred as it is a performant and memory
|
||||||
|
* safe implementation that involves significant optimizations that are non-obvious
|
||||||
|
* to implement.
|
||||||
|
*
|
||||||
|
* The following example uses `AsyncLocalStorage` to build a simple logger
|
||||||
|
* that assigns IDs to incoming HTTP requests and includes them in messages
|
||||||
|
* logged within each request.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import http from 'node:http';
|
||||||
|
* import { AsyncLocalStorage } from 'node:async_hooks';
|
||||||
|
*
|
||||||
|
* const asyncLocalStorage = new AsyncLocalStorage();
|
||||||
|
*
|
||||||
|
* function logWithId(msg) {
|
||||||
|
* const id = asyncLocalStorage.getStore();
|
||||||
|
* console.log(`${id !== undefined ? id : '-'}:`, msg);
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* let idSeq = 0;
|
||||||
|
* http.createServer((req, res) => {
|
||||||
|
* asyncLocalStorage.run(idSeq++, () => {
|
||||||
|
* logWithId('start');
|
||||||
|
* // Imagine any chain of async operations here
|
||||||
|
* setImmediate(() => {
|
||||||
|
* logWithId('finish');
|
||||||
|
* res.end();
|
||||||
|
* });
|
||||||
|
* });
|
||||||
|
* }).listen(8080);
|
||||||
|
*
|
||||||
|
* http.get('http://localhost:8080');
|
||||||
|
* http.get('http://localhost:8080');
|
||||||
|
* // Prints:
|
||||||
|
* // 0: start
|
||||||
|
* // 0: finish
|
||||||
|
* // 1: start
|
||||||
|
* // 1: finish
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Each instance of `AsyncLocalStorage` maintains an independent storage context.
|
||||||
|
* Multiple instances can safely exist simultaneously without risk of interfering
|
||||||
|
* with each other's data.
|
||||||
|
* @since v13.10.0, v12.17.0
|
||||||
|
*/
|
||||||
|
class AsyncLocalStorage<T> {
|
||||||
|
/**
|
||||||
|
* Creates a new instance of `AsyncLocalStorage`. Store is only provided within a
|
||||||
|
* `run()` call or after an `enterWith()` call.
|
||||||
|
*/
|
||||||
|
constructor(options?: AsyncLocalStorageOptions);
|
||||||
|
/**
|
||||||
|
* Binds the given function to the current execution context.
|
||||||
|
* @since v19.8.0
|
||||||
|
* @param fn The function to bind to the current execution context.
|
||||||
|
* @return A new function that calls `fn` within the captured execution context.
|
||||||
|
*/
|
||||||
|
static bind<Func extends (...args: any[]) => any>(fn: Func): Func;
|
||||||
|
/**
|
||||||
|
* Captures the current execution context and returns a function that accepts a
|
||||||
|
* function as an argument. Whenever the returned function is called, it
|
||||||
|
* calls the function passed to it within the captured context.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const asyncLocalStorage = new AsyncLocalStorage();
|
||||||
|
* const runInAsyncScope = asyncLocalStorage.run(123, () => AsyncLocalStorage.snapshot());
|
||||||
|
* const result = asyncLocalStorage.run(321, () => runInAsyncScope(() => asyncLocalStorage.getStore()));
|
||||||
|
* console.log(result); // returns 123
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* AsyncLocalStorage.snapshot() can replace the use of AsyncResource for simple
|
||||||
|
* async context tracking purposes, for example:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* class Foo {
|
||||||
|
* #runInAsyncScope = AsyncLocalStorage.snapshot();
|
||||||
|
*
|
||||||
|
* get() { return this.#runInAsyncScope(() => asyncLocalStorage.getStore()); }
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* const foo = asyncLocalStorage.run(123, () => new Foo());
|
||||||
|
* console.log(asyncLocalStorage.run(321, () => foo.get())); // returns 123
|
||||||
|
* ```
|
||||||
|
* @since v19.8.0
|
||||||
|
* @return A new function with the signature `(fn: (...args) : R, ...args) : R`.
|
||||||
|
*/
|
||||||
|
static snapshot(): <R, TArgs extends any[]>(fn: (...args: TArgs) => R, ...args: TArgs) => R;
|
||||||
|
/**
|
||||||
|
* Disables the instance of `AsyncLocalStorage`. All subsequent calls
|
||||||
|
* to `asyncLocalStorage.getStore()` will return `undefined` until `asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()` is called again.
|
||||||
|
*
|
||||||
|
* When calling `asyncLocalStorage.disable()`, all current contexts linked to the
|
||||||
|
* instance will be exited.
|
||||||
|
*
|
||||||
|
* Calling `asyncLocalStorage.disable()` is required before the `asyncLocalStorage` can be garbage collected. This does not apply to stores
|
||||||
|
* provided by the `asyncLocalStorage`, as those objects are garbage collected
|
||||||
|
* along with the corresponding async resources.
|
||||||
|
*
|
||||||
|
* Use this method when the `asyncLocalStorage` is not in use anymore
|
||||||
|
* in the current process.
|
||||||
|
* @since v13.10.0, v12.17.0
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
disable(): void;
|
||||||
|
/**
|
||||||
|
* Returns the current store.
|
||||||
|
* If called outside of an asynchronous context initialized by
|
||||||
|
* calling `asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()`, it
|
||||||
|
* returns `undefined`.
|
||||||
|
* @since v13.10.0, v12.17.0
|
||||||
|
*/
|
||||||
|
getStore(): T | undefined;
|
||||||
|
/**
|
||||||
|
* The name of the `AsyncLocalStorage` instance if provided.
|
||||||
|
* @since v24.0.0
|
||||||
|
*/
|
||||||
|
readonly name: string;
|
||||||
|
/**
|
||||||
|
* Runs a function synchronously within a context and returns its
|
||||||
|
* return value. The store is not accessible outside of the callback function.
|
||||||
|
* The store is accessible to any asynchronous operations created within the
|
||||||
|
* callback.
|
||||||
|
*
|
||||||
|
* The optional `args` are passed to the callback function.
|
||||||
|
*
|
||||||
|
* If the callback function throws an error, the error is thrown by `run()` too.
|
||||||
|
* The stacktrace is not impacted by this call and the context is exited.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const store = { id: 2 };
|
||||||
|
* try {
|
||||||
|
* asyncLocalStorage.run(store, () => {
|
||||||
|
* asyncLocalStorage.getStore(); // Returns the store object
|
||||||
|
* setTimeout(() => {
|
||||||
|
* asyncLocalStorage.getStore(); // Returns the store object
|
||||||
|
* }, 200);
|
||||||
|
* throw new Error();
|
||||||
|
* });
|
||||||
|
* } catch (e) {
|
||||||
|
* asyncLocalStorage.getStore(); // Returns undefined
|
||||||
|
* // The error will be caught here
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v13.10.0, v12.17.0
|
||||||
|
*/
|
||||||
|
run<R>(store: T, callback: () => R): R;
|
||||||
|
run<R, TArgs extends any[]>(store: T, callback: (...args: TArgs) => R, ...args: TArgs): R;
|
||||||
|
/**
|
||||||
|
* Runs a function synchronously outside of a context and returns its
|
||||||
|
* return value. The store is not accessible within the callback function or
|
||||||
|
* the asynchronous operations created within the callback. Any `getStore()` call done within the callback function will always return `undefined`.
|
||||||
|
*
|
||||||
|
* The optional `args` are passed to the callback function.
|
||||||
|
*
|
||||||
|
* If the callback function throws an error, the error is thrown by `exit()` too.
|
||||||
|
* The stacktrace is not impacted by this call and the context is re-entered.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* // Within a call to run
|
||||||
|
* try {
|
||||||
|
* asyncLocalStorage.getStore(); // Returns the store object or value
|
||||||
|
* asyncLocalStorage.exit(() => {
|
||||||
|
* asyncLocalStorage.getStore(); // Returns undefined
|
||||||
|
* throw new Error();
|
||||||
|
* });
|
||||||
|
* } catch (e) {
|
||||||
|
* asyncLocalStorage.getStore(); // Returns the same object or value
|
||||||
|
* // The error will be caught here
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v13.10.0, v12.17.0
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
exit<R, TArgs extends any[]>(callback: (...args: TArgs) => R, ...args: TArgs): R;
|
||||||
|
/**
|
||||||
|
* Transitions into the context for the remainder of the current
|
||||||
|
* synchronous execution and then persists the store through any following
|
||||||
|
* asynchronous calls.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const store = { id: 1 };
|
||||||
|
* // Replaces previous store with the given store object
|
||||||
|
* asyncLocalStorage.enterWith(store);
|
||||||
|
* asyncLocalStorage.getStore(); // Returns the store object
|
||||||
|
* someAsyncOperation(() => {
|
||||||
|
* asyncLocalStorage.getStore(); // Returns the same object
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* This transition will continue for the _entire_ synchronous execution.
|
||||||
|
* This means that if, for example, the context is entered within an event
|
||||||
|
* handler subsequent event handlers will also run within that context unless
|
||||||
|
* specifically bound to another context with an `AsyncResource`. That is why `run()` should be preferred over `enterWith()` unless there are strong reasons
|
||||||
|
* to use the latter method.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const store = { id: 1 };
|
||||||
|
*
|
||||||
|
* emitter.on('my-event', () => {
|
||||||
|
* asyncLocalStorage.enterWith(store);
|
||||||
|
* });
|
||||||
|
* emitter.on('my-event', () => {
|
||||||
|
* asyncLocalStorage.getStore(); // Returns the same object
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* asyncLocalStorage.getStore(); // Returns undefined
|
||||||
|
* emitter.emit('my-event');
|
||||||
|
* asyncLocalStorage.getStore(); // Returns the same object
|
||||||
|
* ```
|
||||||
|
* @since v13.11.0, v12.17.0
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
enterWith(store: T): void;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @since v17.2.0, v16.14.0
|
||||||
|
* @return A map of provider types to the corresponding numeric id.
|
||||||
|
* This map contains all the event types that might be emitted by the `async_hooks.init()` event.
|
||||||
|
*/
|
||||||
|
namespace asyncWrapProviders {
|
||||||
|
const NONE: number;
|
||||||
|
const DIRHANDLE: number;
|
||||||
|
const DNSCHANNEL: number;
|
||||||
|
const ELDHISTOGRAM: number;
|
||||||
|
const FILEHANDLE: number;
|
||||||
|
const FILEHANDLECLOSEREQ: number;
|
||||||
|
const FIXEDSIZEBLOBCOPY: number;
|
||||||
|
const FSEVENTWRAP: number;
|
||||||
|
const FSREQCALLBACK: number;
|
||||||
|
const FSREQPROMISE: number;
|
||||||
|
const GETADDRINFOREQWRAP: number;
|
||||||
|
const GETNAMEINFOREQWRAP: number;
|
||||||
|
const HEAPSNAPSHOT: number;
|
||||||
|
const HTTP2SESSION: number;
|
||||||
|
const HTTP2STREAM: number;
|
||||||
|
const HTTP2PING: number;
|
||||||
|
const HTTP2SETTINGS: number;
|
||||||
|
const HTTPINCOMINGMESSAGE: number;
|
||||||
|
const HTTPCLIENTREQUEST: number;
|
||||||
|
const JSSTREAM: number;
|
||||||
|
const JSUDPWRAP: number;
|
||||||
|
const MESSAGEPORT: number;
|
||||||
|
const PIPECONNECTWRAP: number;
|
||||||
|
const PIPESERVERWRAP: number;
|
||||||
|
const PIPEWRAP: number;
|
||||||
|
const PROCESSWRAP: number;
|
||||||
|
const PROMISE: number;
|
||||||
|
const QUERYWRAP: number;
|
||||||
|
const SHUTDOWNWRAP: number;
|
||||||
|
const SIGNALWRAP: number;
|
||||||
|
const STATWATCHER: number;
|
||||||
|
const STREAMPIPE: number;
|
||||||
|
const TCPCONNECTWRAP: number;
|
||||||
|
const TCPSERVERWRAP: number;
|
||||||
|
const TCPWRAP: number;
|
||||||
|
const TTYWRAP: number;
|
||||||
|
const UDPSENDWRAP: number;
|
||||||
|
const UDPWRAP: number;
|
||||||
|
const SIGINTWATCHDOG: number;
|
||||||
|
const WORKER: number;
|
||||||
|
const WORKERHEAPSNAPSHOT: number;
|
||||||
|
const WRITEWRAP: number;
|
||||||
|
const ZLIB: number;
|
||||||
|
const CHECKPRIMEREQUEST: number;
|
||||||
|
const PBKDF2REQUEST: number;
|
||||||
|
const KEYPAIRGENREQUEST: number;
|
||||||
|
const KEYGENREQUEST: number;
|
||||||
|
const KEYEXPORTREQUEST: number;
|
||||||
|
const CIPHERREQUEST: number;
|
||||||
|
const DERIVEBITSREQUEST: number;
|
||||||
|
const HASHREQUEST: number;
|
||||||
|
const RANDOMBYTESREQUEST: number;
|
||||||
|
const RANDOMPRIMEREQUEST: number;
|
||||||
|
const SCRYPTREQUEST: number;
|
||||||
|
const SIGNREQUEST: number;
|
||||||
|
const TLSWRAP: number;
|
||||||
|
const VERIFYREQUEST: number;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
declare module "node:async_hooks" {
|
||||||
|
export * from "async_hooks";
|
||||||
|
}
|
||||||
472
node_modules/@types/node/buffer.buffer.d.ts
generated
vendored
Normal file
472
node_modules/@types/node/buffer.buffer.d.ts
generated
vendored
Normal file
@@ -0,0 +1,472 @@
|
|||||||
|
declare module "buffer" {
|
||||||
|
type ImplicitArrayBuffer<T extends WithImplicitCoercion<ArrayBufferLike>> = T extends
|
||||||
|
{ valueOf(): infer V extends ArrayBufferLike } ? V : T;
|
||||||
|
global {
|
||||||
|
interface BufferConstructor {
|
||||||
|
// see buffer.d.ts for implementation shared with all TypeScript versions
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates a new buffer containing the given {str}.
|
||||||
|
*
|
||||||
|
* @param str String to store in buffer.
|
||||||
|
* @param encoding encoding to use, optional. Default is 'utf8'
|
||||||
|
* @deprecated since v10.0.0 - Use `Buffer.from(string[, encoding])` instead.
|
||||||
|
*/
|
||||||
|
new(str: string, encoding?: BufferEncoding): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Allocates a new buffer of {size} octets.
|
||||||
|
*
|
||||||
|
* @param size count of octets to allocate.
|
||||||
|
* @deprecated since v10.0.0 - Use `Buffer.alloc()` instead (also see `Buffer.allocUnsafe()`).
|
||||||
|
*/
|
||||||
|
new(size: number): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Allocates a new buffer containing the given {array} of octets.
|
||||||
|
*
|
||||||
|
* @param array The octets to store.
|
||||||
|
* @deprecated since v10.0.0 - Use `Buffer.from(array)` instead.
|
||||||
|
*/
|
||||||
|
new(array: ArrayLike<number>): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Produces a Buffer backed by the same allocated memory as
|
||||||
|
* the given {ArrayBuffer}/{SharedArrayBuffer}.
|
||||||
|
*
|
||||||
|
* @param arrayBuffer The ArrayBuffer with which to share memory.
|
||||||
|
* @deprecated since v10.0.0 - Use `Buffer.from(arrayBuffer[, byteOffset[, length]])` instead.
|
||||||
|
*/
|
||||||
|
new<TArrayBuffer extends ArrayBufferLike = ArrayBuffer>(arrayBuffer: TArrayBuffer): Buffer<TArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Allocates a new `Buffer` using an `array` of bytes in the range `0` – `255`.
|
||||||
|
* Array entries outside that range will be truncated to fit into it.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* // Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'.
|
||||||
|
* const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* If `array` is an `Array`-like object (that is, one with a `length` property of
|
||||||
|
* type `number`), it is treated as if it is an array, unless it is a `Buffer` or
|
||||||
|
* a `Uint8Array`. This means all other `TypedArray` variants get treated as an
|
||||||
|
* `Array`. To create a `Buffer` from the bytes backing a `TypedArray`, use
|
||||||
|
* `Buffer.copyBytesFrom()`.
|
||||||
|
*
|
||||||
|
* A `TypeError` will be thrown if `array` is not an `Array` or another type
|
||||||
|
* appropriate for `Buffer.from()` variants.
|
||||||
|
*
|
||||||
|
* `Buffer.from(array)` and `Buffer.from(string)` may also use the internal
|
||||||
|
* `Buffer` pool like `Buffer.allocUnsafe()` does.
|
||||||
|
* @since v5.10.0
|
||||||
|
*/
|
||||||
|
from(array: WithImplicitCoercion<ArrayLike<number>>): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* This creates a view of the `ArrayBuffer` without copying the underlying
|
||||||
|
* memory. For example, when passed a reference to the `.buffer` property of a
|
||||||
|
* `TypedArray` instance, the newly created `Buffer` will share the same
|
||||||
|
* allocated memory as the `TypedArray`'s underlying `ArrayBuffer`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const arr = new Uint16Array(2);
|
||||||
|
*
|
||||||
|
* arr[0] = 5000;
|
||||||
|
* arr[1] = 4000;
|
||||||
|
*
|
||||||
|
* // Shares memory with `arr`.
|
||||||
|
* const buf = Buffer.from(arr.buffer);
|
||||||
|
*
|
||||||
|
* console.log(buf);
|
||||||
|
* // Prints: <Buffer 88 13 a0 0f>
|
||||||
|
*
|
||||||
|
* // Changing the original Uint16Array changes the Buffer also.
|
||||||
|
* arr[1] = 6000;
|
||||||
|
*
|
||||||
|
* console.log(buf);
|
||||||
|
* // Prints: <Buffer 88 13 70 17>
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The optional `byteOffset` and `length` arguments specify a memory range within
|
||||||
|
* the `arrayBuffer` that will be shared by the `Buffer`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const ab = new ArrayBuffer(10);
|
||||||
|
* const buf = Buffer.from(ab, 0, 2);
|
||||||
|
*
|
||||||
|
* console.log(buf.length);
|
||||||
|
* // Prints: 2
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer` or a
|
||||||
|
* `SharedArrayBuffer` or another type appropriate for `Buffer.from()`
|
||||||
|
* variants.
|
||||||
|
*
|
||||||
|
* It is important to remember that a backing `ArrayBuffer` can cover a range
|
||||||
|
* of memory that extends beyond the bounds of a `TypedArray` view. A new
|
||||||
|
* `Buffer` created using the `buffer` property of a `TypedArray` may extend
|
||||||
|
* beyond the range of the `TypedArray`:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements
|
||||||
|
* const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements
|
||||||
|
* console.log(arrA.buffer === arrB.buffer); // true
|
||||||
|
*
|
||||||
|
* const buf = Buffer.from(arrB.buffer);
|
||||||
|
* console.log(buf);
|
||||||
|
* // Prints: <Buffer 63 64 65 66>
|
||||||
|
* ```
|
||||||
|
* @since v5.10.0
|
||||||
|
* @param arrayBuffer An `ArrayBuffer`, `SharedArrayBuffer`, for example the
|
||||||
|
* `.buffer` property of a `TypedArray`.
|
||||||
|
* @param byteOffset Index of first byte to expose. **Default:** `0`.
|
||||||
|
* @param length Number of bytes to expose. **Default:**
|
||||||
|
* `arrayBuffer.byteLength - byteOffset`.
|
||||||
|
*/
|
||||||
|
from<TArrayBuffer extends WithImplicitCoercion<ArrayBufferLike>>(
|
||||||
|
arrayBuffer: TArrayBuffer,
|
||||||
|
byteOffset?: number,
|
||||||
|
length?: number,
|
||||||
|
): Buffer<ImplicitArrayBuffer<TArrayBuffer>>;
|
||||||
|
/**
|
||||||
|
* Creates a new `Buffer` containing `string`. The `encoding` parameter identifies
|
||||||
|
* the character encoding to be used when converting `string` into bytes.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const buf1 = Buffer.from('this is a tést');
|
||||||
|
* const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
|
||||||
|
*
|
||||||
|
* console.log(buf1.toString());
|
||||||
|
* // Prints: this is a tést
|
||||||
|
* console.log(buf2.toString());
|
||||||
|
* // Prints: this is a tést
|
||||||
|
* console.log(buf1.toString('latin1'));
|
||||||
|
* // Prints: this is a tést
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* A `TypeError` will be thrown if `string` is not a string or another type
|
||||||
|
* appropriate for `Buffer.from()` variants.
|
||||||
|
*
|
||||||
|
* `Buffer.from(string)` may also use the internal `Buffer` pool like
|
||||||
|
* `Buffer.allocUnsafe()` does.
|
||||||
|
* @since v5.10.0
|
||||||
|
* @param string A string to encode.
|
||||||
|
* @param encoding The encoding of `string`. **Default:** `'utf8'`.
|
||||||
|
*/
|
||||||
|
from(string: WithImplicitCoercion<string>, encoding?: BufferEncoding): Buffer<ArrayBuffer>;
|
||||||
|
from(arrayOrString: WithImplicitCoercion<ArrayLike<number> | string>): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Creates a new Buffer using the passed {data}
|
||||||
|
* @param values to create a new Buffer
|
||||||
|
*/
|
||||||
|
of(...items: number[]): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Returns a new `Buffer` which is the result of concatenating all the `Buffer` instances in the `list` together.
|
||||||
|
*
|
||||||
|
* If the list has no items, or if the `totalLength` is 0, then a new zero-length `Buffer` is returned.
|
||||||
|
*
|
||||||
|
* If `totalLength` is not provided, it is calculated from the `Buffer` instances
|
||||||
|
* in `list` by adding their lengths.
|
||||||
|
*
|
||||||
|
* If `totalLength` is provided, it is coerced to an unsigned integer. If the
|
||||||
|
* combined length of the `Buffer`s in `list` exceeds `totalLength`, the result is
|
||||||
|
* truncated to `totalLength`. If the combined length of the `Buffer`s in `list` is
|
||||||
|
* less than `totalLength`, the remaining space is filled with zeros.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* // Create a single `Buffer` from a list of three `Buffer` instances.
|
||||||
|
*
|
||||||
|
* const buf1 = Buffer.alloc(10);
|
||||||
|
* const buf2 = Buffer.alloc(14);
|
||||||
|
* const buf3 = Buffer.alloc(18);
|
||||||
|
* const totalLength = buf1.length + buf2.length + buf3.length;
|
||||||
|
*
|
||||||
|
* console.log(totalLength);
|
||||||
|
* // Prints: 42
|
||||||
|
*
|
||||||
|
* const bufA = Buffer.concat([buf1, buf2, buf3], totalLength);
|
||||||
|
*
|
||||||
|
* console.log(bufA);
|
||||||
|
* // Prints: <Buffer 00 00 00 00 ...>
|
||||||
|
* console.log(bufA.length);
|
||||||
|
* // Prints: 42
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* `Buffer.concat()` may also use the internal `Buffer` pool like `Buffer.allocUnsafe()` does.
|
||||||
|
* @since v0.7.11
|
||||||
|
* @param list List of `Buffer` or {@link Uint8Array} instances to concatenate.
|
||||||
|
* @param totalLength Total length of the `Buffer` instances in `list` when concatenated.
|
||||||
|
*/
|
||||||
|
concat(list: readonly Uint8Array[], totalLength?: number): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Copies the underlying memory of `view` into a new `Buffer`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const u16 = new Uint16Array([0, 0xffff]);
|
||||||
|
* const buf = Buffer.copyBytesFrom(u16, 1, 1);
|
||||||
|
* u16[1] = 0;
|
||||||
|
* console.log(buf.length); // 2
|
||||||
|
* console.log(buf[0]); // 255
|
||||||
|
* console.log(buf[1]); // 255
|
||||||
|
* ```
|
||||||
|
* @since v19.8.0
|
||||||
|
* @param view The {TypedArray} to copy.
|
||||||
|
* @param [offset=0] The starting offset within `view`.
|
||||||
|
* @param [length=view.length - offset] The number of elements from `view` to copy.
|
||||||
|
*/
|
||||||
|
copyBytesFrom(view: NodeJS.TypedArray, offset?: number, length?: number): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the`Buffer` will be zero-filled.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const buf = Buffer.alloc(5);
|
||||||
|
*
|
||||||
|
* console.log(buf);
|
||||||
|
* // Prints: <Buffer 00 00 00 00 00>
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown.
|
||||||
|
*
|
||||||
|
* If `fill` is specified, the allocated `Buffer` will be initialized by calling `buf.fill(fill)`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const buf = Buffer.alloc(5, 'a');
|
||||||
|
*
|
||||||
|
* console.log(buf);
|
||||||
|
* // Prints: <Buffer 61 61 61 61 61>
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* If both `fill` and `encoding` are specified, the allocated `Buffer` will be
|
||||||
|
* initialized by calling `buf.fill(fill, encoding)`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
|
||||||
|
*
|
||||||
|
* console.log(buf);
|
||||||
|
* // Prints: <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Calling `Buffer.alloc()` can be measurably slower than the alternative `Buffer.allocUnsafe()` but ensures that the newly created `Buffer` instance
|
||||||
|
* contents will never contain sensitive data from previous allocations, including
|
||||||
|
* data that might not have been allocated for `Buffer`s.
|
||||||
|
*
|
||||||
|
* A `TypeError` will be thrown if `size` is not a number.
|
||||||
|
* @since v5.10.0
|
||||||
|
* @param size The desired length of the new `Buffer`.
|
||||||
|
* @param [fill=0] A value to pre-fill the new `Buffer` with.
|
||||||
|
* @param [encoding='utf8'] If `fill` is a string, this is its encoding.
|
||||||
|
*/
|
||||||
|
alloc(size: number, fill?: string | Uint8Array | number, encoding?: BufferEncoding): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown.
|
||||||
|
*
|
||||||
|
* The underlying memory for `Buffer` instances created in this way is _not_
|
||||||
|
* _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `Buffer.alloc()` instead to initialize`Buffer` instances with zeroes.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const buf = Buffer.allocUnsafe(10);
|
||||||
|
*
|
||||||
|
* console.log(buf);
|
||||||
|
* // Prints (contents may vary): <Buffer a0 8b 28 3f 01 00 00 00 50 32>
|
||||||
|
*
|
||||||
|
* buf.fill(0);
|
||||||
|
*
|
||||||
|
* console.log(buf);
|
||||||
|
* // Prints: <Buffer 00 00 00 00 00 00 00 00 00 00>
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* A `TypeError` will be thrown if `size` is not a number.
|
||||||
|
*
|
||||||
|
* The `Buffer` module pre-allocates an internal `Buffer` instance of
|
||||||
|
* size `Buffer.poolSize` that is used as a pool for the fast allocation of new `Buffer` instances created using `Buffer.allocUnsafe()`, `Buffer.from(array)`,
|
||||||
|
* and `Buffer.concat()` only when `size` is less than `Buffer.poolSize >>> 1` (floor of `Buffer.poolSize` divided by two).
|
||||||
|
*
|
||||||
|
* Use of this pre-allocated internal memory pool is a key difference between
|
||||||
|
* calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.
|
||||||
|
* Specifically, `Buffer.alloc(size, fill)` will _never_ use the internal `Buffer`pool, while `Buffer.allocUnsafe(size).fill(fill)`_will_ use the internal`Buffer` pool if `size` is less
|
||||||
|
* than or equal to half `Buffer.poolSize`. The
|
||||||
|
* difference is subtle but can be important when an application requires the
|
||||||
|
* additional performance that `Buffer.allocUnsafe()` provides.
|
||||||
|
* @since v5.10.0
|
||||||
|
* @param size The desired length of the new `Buffer`.
|
||||||
|
*/
|
||||||
|
allocUnsafe(size: number): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Allocates a new `Buffer` of `size` bytes. If `size` is larger than {@link constants.MAX_LENGTH} or smaller than 0, `ERR_OUT_OF_RANGE` is thrown. A zero-length `Buffer` is created if
|
||||||
|
* `size` is 0.
|
||||||
|
*
|
||||||
|
* The underlying memory for `Buffer` instances created in this way is _not_
|
||||||
|
* _initialized_. The contents of the newly created `Buffer` are unknown and _may contain sensitive data_. Use `buf.fill(0)` to initialize
|
||||||
|
* such `Buffer` instances with zeroes.
|
||||||
|
*
|
||||||
|
* When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances,
|
||||||
|
* allocations under 4 KiB are sliced from a single pre-allocated `Buffer`. This
|
||||||
|
* allows applications to avoid the garbage collection overhead of creating many
|
||||||
|
* individually allocated `Buffer` instances. This approach improves both
|
||||||
|
* performance and memory usage by eliminating the need to track and clean up as
|
||||||
|
* many individual `ArrayBuffer` objects.
|
||||||
|
*
|
||||||
|
* However, in the case where a developer may need to retain a small chunk of
|
||||||
|
* memory from a pool for an indeterminate amount of time, it may be appropriate
|
||||||
|
* to create an un-pooled `Buffer` instance using `Buffer.allocUnsafeSlow()` and
|
||||||
|
* then copying out the relevant bits.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* // Need to keep around a few small chunks of memory.
|
||||||
|
* const store = [];
|
||||||
|
*
|
||||||
|
* socket.on('readable', () => {
|
||||||
|
* let data;
|
||||||
|
* while (null !== (data = readable.read())) {
|
||||||
|
* // Allocate for retained data.
|
||||||
|
* const sb = Buffer.allocUnsafeSlow(10);
|
||||||
|
*
|
||||||
|
* // Copy the data into the new allocation.
|
||||||
|
* data.copy(sb, 0, 0, 10);
|
||||||
|
*
|
||||||
|
* store.push(sb);
|
||||||
|
* }
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* A `TypeError` will be thrown if `size` is not a number.
|
||||||
|
* @since v5.12.0
|
||||||
|
* @param size The desired length of the new `Buffer`.
|
||||||
|
*/
|
||||||
|
allocUnsafeSlow(size: number): Buffer<ArrayBuffer>;
|
||||||
|
}
|
||||||
|
interface Buffer<TArrayBuffer extends ArrayBufferLike = ArrayBufferLike> extends Uint8Array<TArrayBuffer> {
|
||||||
|
// see buffer.d.ts for implementation shared with all TypeScript versions
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new `Buffer` that references the same memory as the original, but
|
||||||
|
* offset and cropped by the `start` and `end` indices.
|
||||||
|
*
|
||||||
|
* This method is not compatible with the `Uint8Array.prototype.slice()`,
|
||||||
|
* which is a superclass of `Buffer`. To copy the slice, use`Uint8Array.prototype.slice()`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const buf = Buffer.from('buffer');
|
||||||
|
*
|
||||||
|
* const copiedBuf = Uint8Array.prototype.slice.call(buf);
|
||||||
|
* copiedBuf[0]++;
|
||||||
|
* console.log(copiedBuf.toString());
|
||||||
|
* // Prints: cuffer
|
||||||
|
*
|
||||||
|
* console.log(buf.toString());
|
||||||
|
* // Prints: buffer
|
||||||
|
*
|
||||||
|
* // With buf.slice(), the original buffer is modified.
|
||||||
|
* const notReallyCopiedBuf = buf.slice();
|
||||||
|
* notReallyCopiedBuf[0]++;
|
||||||
|
* console.log(notReallyCopiedBuf.toString());
|
||||||
|
* // Prints: cuffer
|
||||||
|
* console.log(buf.toString());
|
||||||
|
* // Also prints: cuffer (!)
|
||||||
|
* ```
|
||||||
|
* @since v0.3.0
|
||||||
|
* @deprecated Use `subarray` instead.
|
||||||
|
* @param [start=0] Where the new `Buffer` will start.
|
||||||
|
* @param [end=buf.length] Where the new `Buffer` will end (not inclusive).
|
||||||
|
*/
|
||||||
|
slice(start?: number, end?: number): Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* Returns a new `Buffer` that references the same memory as the original, but
|
||||||
|
* offset and cropped by the `start` and `end` indices.
|
||||||
|
*
|
||||||
|
* Specifying `end` greater than `buf.length` will return the same result as
|
||||||
|
* that of `end` equal to `buf.length`.
|
||||||
|
*
|
||||||
|
* This method is inherited from [`TypedArray.prototype.subarray()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarray).
|
||||||
|
*
|
||||||
|
* Modifying the new `Buffer` slice will modify the memory in the original `Buffer`because the allocated memory of the two objects overlap.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* // Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte
|
||||||
|
* // from the original `Buffer`.
|
||||||
|
*
|
||||||
|
* const buf1 = Buffer.allocUnsafe(26);
|
||||||
|
*
|
||||||
|
* for (let i = 0; i < 26; i++) {
|
||||||
|
* // 97 is the decimal ASCII value for 'a'.
|
||||||
|
* buf1[i] = i + 97;
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* const buf2 = buf1.subarray(0, 3);
|
||||||
|
*
|
||||||
|
* console.log(buf2.toString('ascii', 0, buf2.length));
|
||||||
|
* // Prints: abc
|
||||||
|
*
|
||||||
|
* buf1[0] = 33;
|
||||||
|
*
|
||||||
|
* console.log(buf2.toString('ascii', 0, buf2.length));
|
||||||
|
* // Prints: !bc
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Specifying negative indexes causes the slice to be generated relative to the
|
||||||
|
* end of `buf` rather than the beginning.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const buf = Buffer.from('buffer');
|
||||||
|
*
|
||||||
|
* console.log(buf.subarray(-6, -1).toString());
|
||||||
|
* // Prints: buffe
|
||||||
|
* // (Equivalent to buf.subarray(0, 5).)
|
||||||
|
*
|
||||||
|
* console.log(buf.subarray(-6, -2).toString());
|
||||||
|
* // Prints: buff
|
||||||
|
* // (Equivalent to buf.subarray(0, 4).)
|
||||||
|
*
|
||||||
|
* console.log(buf.subarray(-5, -2).toString());
|
||||||
|
* // Prints: uff
|
||||||
|
* // (Equivalent to buf.subarray(1, 4).)
|
||||||
|
* ```
|
||||||
|
* @since v3.0.0
|
||||||
|
* @param [start=0] Where the new `Buffer` will start.
|
||||||
|
* @param [end=buf.length] Where the new `Buffer` will end (not inclusive).
|
||||||
|
*/
|
||||||
|
subarray(start?: number, end?: number): Buffer<TArrayBuffer>;
|
||||||
|
}
|
||||||
|
// TODO: remove globals in future version
|
||||||
|
/**
|
||||||
|
* @deprecated This is intended for internal use, and will be removed once `@types/node` no longer supports
|
||||||
|
* TypeScript versions earlier than 5.7.
|
||||||
|
*/
|
||||||
|
type NonSharedBuffer = Buffer<ArrayBuffer>;
|
||||||
|
/**
|
||||||
|
* @deprecated This is intended for internal use, and will be removed once `@types/node` no longer supports
|
||||||
|
* TypeScript versions earlier than 5.7.
|
||||||
|
*/
|
||||||
|
type AllowSharedBuffer = Buffer<ArrayBufferLike>;
|
||||||
|
}
|
||||||
|
/** @deprecated Use `Buffer.allocUnsafeSlow()` instead. */
|
||||||
|
var SlowBuffer: {
|
||||||
|
/** @deprecated Use `Buffer.allocUnsafeSlow()` instead. */
|
||||||
|
new(size: number): Buffer<ArrayBuffer>;
|
||||||
|
prototype: Buffer;
|
||||||
|
};
|
||||||
|
}
|
||||||
1934
node_modules/@types/node/buffer.d.ts
generated
vendored
Normal file
1934
node_modules/@types/node/buffer.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1476
node_modules/@types/node/child_process.d.ts
generated
vendored
Normal file
1476
node_modules/@types/node/child_process.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
578
node_modules/@types/node/cluster.d.ts
generated
vendored
Normal file
578
node_modules/@types/node/cluster.d.ts
generated
vendored
Normal file
@@ -0,0 +1,578 @@
|
|||||||
|
/**
|
||||||
|
* Clusters of Node.js processes can be used to run multiple instances of Node.js
|
||||||
|
* that can distribute workloads among their application threads. When process isolation
|
||||||
|
* is not needed, use the [`worker_threads`](https://nodejs.org/docs/latest-v24.x/api/worker_threads.html)
|
||||||
|
* module instead, which allows running multiple application threads within a single Node.js instance.
|
||||||
|
*
|
||||||
|
* The cluster module allows easy creation of child processes that all share
|
||||||
|
* server ports.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import cluster from 'node:cluster';
|
||||||
|
* import http from 'node:http';
|
||||||
|
* import { availableParallelism } from 'node:os';
|
||||||
|
* import process from 'node:process';
|
||||||
|
*
|
||||||
|
* const numCPUs = availableParallelism();
|
||||||
|
*
|
||||||
|
* if (cluster.isPrimary) {
|
||||||
|
* console.log(`Primary ${process.pid} is running`);
|
||||||
|
*
|
||||||
|
* // Fork workers.
|
||||||
|
* for (let i = 0; i < numCPUs; i++) {
|
||||||
|
* cluster.fork();
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* cluster.on('exit', (worker, code, signal) => {
|
||||||
|
* console.log(`worker ${worker.process.pid} died`);
|
||||||
|
* });
|
||||||
|
* } else {
|
||||||
|
* // Workers can share any TCP connection
|
||||||
|
* // In this case it is an HTTP server
|
||||||
|
* http.createServer((req, res) => {
|
||||||
|
* res.writeHead(200);
|
||||||
|
* res.end('hello world\n');
|
||||||
|
* }).listen(8000);
|
||||||
|
*
|
||||||
|
* console.log(`Worker ${process.pid} started`);
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Running Node.js will now share port 8000 between the workers:
|
||||||
|
*
|
||||||
|
* ```console
|
||||||
|
* $ node server.js
|
||||||
|
* Primary 3596 is running
|
||||||
|
* Worker 4324 started
|
||||||
|
* Worker 4520 started
|
||||||
|
* Worker 6056 started
|
||||||
|
* Worker 5644 started
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* On Windows, it is not yet possible to set up a named pipe server in a worker.
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/cluster.js)
|
||||||
|
*/
|
||||||
|
declare module "cluster" {
|
||||||
|
import * as child from "node:child_process";
|
||||||
|
import EventEmitter = require("node:events");
|
||||||
|
import * as net from "node:net";
|
||||||
|
type SerializationType = "json" | "advanced";
|
||||||
|
export interface ClusterSettings {
|
||||||
|
/**
|
||||||
|
* List of string arguments passed to the Node.js executable.
|
||||||
|
* @default process.execArgv
|
||||||
|
*/
|
||||||
|
execArgv?: string[] | undefined;
|
||||||
|
/**
|
||||||
|
* File path to worker file.
|
||||||
|
* @default process.argv[1]
|
||||||
|
*/
|
||||||
|
exec?: string | undefined;
|
||||||
|
/**
|
||||||
|
* String arguments passed to worker.
|
||||||
|
* @default process.argv.slice(2)
|
||||||
|
*/
|
||||||
|
args?: readonly string[] | undefined;
|
||||||
|
/**
|
||||||
|
* Whether or not to send output to parent's stdio.
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
silent?: boolean | undefined;
|
||||||
|
/**
|
||||||
|
* Configures the stdio of forked processes. Because the cluster module relies on IPC to function, this configuration must
|
||||||
|
* contain an `'ipc'` entry. When this option is provided, it overrides `silent`. See [`child_prcess.spawn()`](https://nodejs.org/docs/latest-v24.x/api/child_process.html#child_processspawncommand-args-options)'s
|
||||||
|
* [`stdio`](https://nodejs.org/docs/latest-v24.x/api/child_process.html#optionsstdio).
|
||||||
|
*/
|
||||||
|
stdio?: any[] | undefined;
|
||||||
|
/**
|
||||||
|
* Sets the user identity of the process. (See [`setuid(2)`](https://man7.org/linux/man-pages/man2/setuid.2.html).)
|
||||||
|
*/
|
||||||
|
uid?: number | undefined;
|
||||||
|
/**
|
||||||
|
* Sets the group identity of the process. (See [`setgid(2)`](https://man7.org/linux/man-pages/man2/setgid.2.html).)
|
||||||
|
*/
|
||||||
|
gid?: number | undefined;
|
||||||
|
/**
|
||||||
|
* Sets inspector port of worker. This can be a number, or a function that takes no arguments and returns a number.
|
||||||
|
* By default each worker gets its own port, incremented from the primary's `process.debugPort`.
|
||||||
|
*/
|
||||||
|
inspectPort?: number | (() => number) | undefined;
|
||||||
|
/**
|
||||||
|
* Specify the kind of serialization used for sending messages between processes. Possible values are `'json'` and `'advanced'`.
|
||||||
|
* See [Advanced serialization for `child_process`](https://nodejs.org/docs/latest-v24.x/api/child_process.html#advanced-serialization) for more details.
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
serialization?: SerializationType | undefined;
|
||||||
|
/**
|
||||||
|
* Current working directory of the worker process.
|
||||||
|
* @default undefined (inherits from parent process)
|
||||||
|
*/
|
||||||
|
cwd?: string | undefined;
|
||||||
|
/**
|
||||||
|
* Hide the forked processes console window that would normally be created on Windows systems.
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
windowsHide?: boolean | undefined;
|
||||||
|
}
|
||||||
|
export interface Address {
|
||||||
|
address: string;
|
||||||
|
port: number;
|
||||||
|
/**
|
||||||
|
* The `addressType` is one of:
|
||||||
|
*
|
||||||
|
* * `4` (TCPv4)
|
||||||
|
* * `6` (TCPv6)
|
||||||
|
* * `-1` (Unix domain socket)
|
||||||
|
* * `'udp4'` or `'udp6'` (UDPv4 or UDPv6)
|
||||||
|
*/
|
||||||
|
addressType: 4 | 6 | -1 | "udp4" | "udp6";
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* A `Worker` object contains all public information and method about a worker.
|
||||||
|
* In the primary it can be obtained using `cluster.workers`. In a worker
|
||||||
|
* it can be obtained using `cluster.worker`.
|
||||||
|
* @since v0.7.0
|
||||||
|
*/
|
||||||
|
export class Worker extends EventEmitter {
|
||||||
|
/**
|
||||||
|
* Each new worker is given its own unique id, this id is stored in the `id`.
|
||||||
|
*
|
||||||
|
* While a worker is alive, this is the key that indexes it in `cluster.workers`.
|
||||||
|
* @since v0.8.0
|
||||||
|
*/
|
||||||
|
id: number;
|
||||||
|
/**
|
||||||
|
* All workers are created using [`child_process.fork()`](https://nodejs.org/docs/latest-v24.x/api/child_process.html#child_processforkmodulepath-args-options), the returned object
|
||||||
|
* from this function is stored as `.process`. In a worker, the global `process` is stored.
|
||||||
|
*
|
||||||
|
* See: [Child Process module](https://nodejs.org/docs/latest-v24.x/api/child_process.html#child_processforkmodulepath-args-options).
|
||||||
|
*
|
||||||
|
* Workers will call `process.exit(0)` if the `'disconnect'` event occurs
|
||||||
|
* on `process` and `.exitedAfterDisconnect` is not `true`. This protects against
|
||||||
|
* accidental disconnection.
|
||||||
|
* @since v0.7.0
|
||||||
|
*/
|
||||||
|
process: child.ChildProcess;
|
||||||
|
/**
|
||||||
|
* Send a message to a worker or primary, optionally with a handle.
|
||||||
|
*
|
||||||
|
* In the primary, this sends a message to a specific worker. It is identical to [`ChildProcess.send()`](https://nodejs.org/docs/latest-v24.x/api/child_process.html#subprocesssendmessage-sendhandle-options-callback).
|
||||||
|
*
|
||||||
|
* In a worker, this sends a message to the primary. It is identical to `process.send()`.
|
||||||
|
*
|
||||||
|
* This example will echo back all messages from the primary:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* if (cluster.isPrimary) {
|
||||||
|
* const worker = cluster.fork();
|
||||||
|
* worker.send('hi there');
|
||||||
|
*
|
||||||
|
* } else if (cluster.isWorker) {
|
||||||
|
* process.on('message', (msg) => {
|
||||||
|
* process.send(msg);
|
||||||
|
* });
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v0.7.0
|
||||||
|
* @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles.
|
||||||
|
*/
|
||||||
|
send(message: child.Serializable, callback?: (error: Error | null) => void): boolean;
|
||||||
|
send(
|
||||||
|
message: child.Serializable,
|
||||||
|
sendHandle: child.SendHandle,
|
||||||
|
callback?: (error: Error | null) => void,
|
||||||
|
): boolean;
|
||||||
|
send(
|
||||||
|
message: child.Serializable,
|
||||||
|
sendHandle: child.SendHandle,
|
||||||
|
options?: child.MessageOptions,
|
||||||
|
callback?: (error: Error | null) => void,
|
||||||
|
): boolean;
|
||||||
|
/**
|
||||||
|
* This function will kill the worker. In the primary worker, it does this by
|
||||||
|
* disconnecting the `worker.process`, and once disconnected, killing with `signal`. In the worker, it does it by killing the process with `signal`.
|
||||||
|
*
|
||||||
|
* The `kill()` function kills the worker process without waiting for a graceful
|
||||||
|
* disconnect, it has the same behavior as `worker.process.kill()`.
|
||||||
|
*
|
||||||
|
* This method is aliased as `worker.destroy()` for backwards compatibility.
|
||||||
|
*
|
||||||
|
* In a worker, `process.kill()` exists, but it is not this function;
|
||||||
|
* it is [`kill()`](https://nodejs.org/docs/latest-v24.x/api/process.html#processkillpid-signal).
|
||||||
|
* @since v0.9.12
|
||||||
|
* @param [signal='SIGTERM'] Name of the kill signal to send to the worker process.
|
||||||
|
*/
|
||||||
|
kill(signal?: string): void;
|
||||||
|
destroy(signal?: string): void;
|
||||||
|
/**
|
||||||
|
* In a worker, this function will close all servers, wait for the `'close'` event
|
||||||
|
* on those servers, and then disconnect the IPC channel.
|
||||||
|
*
|
||||||
|
* In the primary, an internal message is sent to the worker causing it to call `.disconnect()` on itself.
|
||||||
|
*
|
||||||
|
* Causes `.exitedAfterDisconnect` to be set.
|
||||||
|
*
|
||||||
|
* After a server is closed, it will no longer accept new connections,
|
||||||
|
* but connections may be accepted by any other listening worker. Existing
|
||||||
|
* connections will be allowed to close as usual. When no more connections exist,
|
||||||
|
* see `server.close()`, the IPC channel to the worker will close allowing it
|
||||||
|
* to die gracefully.
|
||||||
|
*
|
||||||
|
* The above applies _only_ to server connections, client connections are not
|
||||||
|
* automatically closed by workers, and disconnect does not wait for them to close
|
||||||
|
* before exiting.
|
||||||
|
*
|
||||||
|
* In a worker, `process.disconnect` exists, but it is not this function;
|
||||||
|
* it is `disconnect()`.
|
||||||
|
*
|
||||||
|
* Because long living server connections may block workers from disconnecting, it
|
||||||
|
* may be useful to send a message, so application specific actions may be taken to
|
||||||
|
* close them. It also may be useful to implement a timeout, killing a worker if
|
||||||
|
* the `'disconnect'` event has not been emitted after some time.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import net from 'node:net';
|
||||||
|
*
|
||||||
|
* if (cluster.isPrimary) {
|
||||||
|
* const worker = cluster.fork();
|
||||||
|
* let timeout;
|
||||||
|
*
|
||||||
|
* worker.on('listening', (address) => {
|
||||||
|
* worker.send('shutdown');
|
||||||
|
* worker.disconnect();
|
||||||
|
* timeout = setTimeout(() => {
|
||||||
|
* worker.kill();
|
||||||
|
* }, 2000);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* worker.on('disconnect', () => {
|
||||||
|
* clearTimeout(timeout);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* } else if (cluster.isWorker) {
|
||||||
|
* const server = net.createServer((socket) => {
|
||||||
|
* // Connections never end
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* server.listen(8000);
|
||||||
|
*
|
||||||
|
* process.on('message', (msg) => {
|
||||||
|
* if (msg === 'shutdown') {
|
||||||
|
* // Initiate graceful close of any connections to server
|
||||||
|
* }
|
||||||
|
* });
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v0.7.7
|
||||||
|
* @return A reference to `worker`.
|
||||||
|
*/
|
||||||
|
disconnect(): this;
|
||||||
|
/**
|
||||||
|
* This function returns `true` if the worker is connected to its primary via its
|
||||||
|
* IPC channel, `false` otherwise. A worker is connected to its primary after it
|
||||||
|
* has been created. It is disconnected after the `'disconnect'` event is emitted.
|
||||||
|
* @since v0.11.14
|
||||||
|
*/
|
||||||
|
isConnected(): boolean;
|
||||||
|
/**
|
||||||
|
* This function returns `true` if the worker's process has terminated (either
|
||||||
|
* because of exiting or being signaled). Otherwise, it returns `false`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import cluster from 'node:cluster';
|
||||||
|
* import http from 'node:http';
|
||||||
|
* import { availableParallelism } from 'node:os';
|
||||||
|
* import process from 'node:process';
|
||||||
|
*
|
||||||
|
* const numCPUs = availableParallelism();
|
||||||
|
*
|
||||||
|
* if (cluster.isPrimary) {
|
||||||
|
* console.log(`Primary ${process.pid} is running`);
|
||||||
|
*
|
||||||
|
* // Fork workers.
|
||||||
|
* for (let i = 0; i < numCPUs; i++) {
|
||||||
|
* cluster.fork();
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* cluster.on('fork', (worker) => {
|
||||||
|
* console.log('worker is dead:', worker.isDead());
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* cluster.on('exit', (worker, code, signal) => {
|
||||||
|
* console.log('worker is dead:', worker.isDead());
|
||||||
|
* });
|
||||||
|
* } else {
|
||||||
|
* // Workers can share any TCP connection. In this case, it is an HTTP server.
|
||||||
|
* http.createServer((req, res) => {
|
||||||
|
* res.writeHead(200);
|
||||||
|
* res.end(`Current process\n ${process.pid}`);
|
||||||
|
* process.kill(process.pid);
|
||||||
|
* }).listen(8000);
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v0.11.14
|
||||||
|
*/
|
||||||
|
isDead(): boolean;
|
||||||
|
/**
|
||||||
|
* This property is `true` if the worker exited due to `.disconnect()`.
|
||||||
|
* If the worker exited any other way, it is `false`. If the
|
||||||
|
* worker has not exited, it is `undefined`.
|
||||||
|
*
|
||||||
|
* The boolean `worker.exitedAfterDisconnect` allows distinguishing between
|
||||||
|
* voluntary and accidental exit, the primary may choose not to respawn a worker
|
||||||
|
* based on this value.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* cluster.on('exit', (worker, code, signal) => {
|
||||||
|
* if (worker.exitedAfterDisconnect === true) {
|
||||||
|
* console.log('Oh, it was just voluntary – no need to worry');
|
||||||
|
* }
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* // kill worker
|
||||||
|
* worker.kill();
|
||||||
|
* ```
|
||||||
|
* @since v6.0.0
|
||||||
|
*/
|
||||||
|
exitedAfterDisconnect: boolean;
|
||||||
|
/**
|
||||||
|
* events.EventEmitter
|
||||||
|
* 1. disconnect
|
||||||
|
* 2. error
|
||||||
|
* 3. exit
|
||||||
|
* 4. listening
|
||||||
|
* 5. message
|
||||||
|
* 6. online
|
||||||
|
*/
|
||||||
|
addListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
addListener(event: "disconnect", listener: () => void): this;
|
||||||
|
addListener(event: "error", listener: (error: Error) => void): this;
|
||||||
|
addListener(event: "exit", listener: (code: number, signal: string) => void): this;
|
||||||
|
addListener(event: "listening", listener: (address: Address) => void): this;
|
||||||
|
addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
|
||||||
|
addListener(event: "online", listener: () => void): this;
|
||||||
|
emit(event: string | symbol, ...args: any[]): boolean;
|
||||||
|
emit(event: "disconnect"): boolean;
|
||||||
|
emit(event: "error", error: Error): boolean;
|
||||||
|
emit(event: "exit", code: number, signal: string): boolean;
|
||||||
|
emit(event: "listening", address: Address): boolean;
|
||||||
|
emit(event: "message", message: any, handle: net.Socket | net.Server): boolean;
|
||||||
|
emit(event: "online"): boolean;
|
||||||
|
on(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
on(event: "disconnect", listener: () => void): this;
|
||||||
|
on(event: "error", listener: (error: Error) => void): this;
|
||||||
|
on(event: "exit", listener: (code: number, signal: string) => void): this;
|
||||||
|
on(event: "listening", listener: (address: Address) => void): this;
|
||||||
|
on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
|
||||||
|
on(event: "online", listener: () => void): this;
|
||||||
|
once(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
once(event: "disconnect", listener: () => void): this;
|
||||||
|
once(event: "error", listener: (error: Error) => void): this;
|
||||||
|
once(event: "exit", listener: (code: number, signal: string) => void): this;
|
||||||
|
once(event: "listening", listener: (address: Address) => void): this;
|
||||||
|
once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
|
||||||
|
once(event: "online", listener: () => void): this;
|
||||||
|
prependListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
prependListener(event: "disconnect", listener: () => void): this;
|
||||||
|
prependListener(event: "error", listener: (error: Error) => void): this;
|
||||||
|
prependListener(event: "exit", listener: (code: number, signal: string) => void): this;
|
||||||
|
prependListener(event: "listening", listener: (address: Address) => void): this;
|
||||||
|
prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
|
||||||
|
prependListener(event: "online", listener: () => void): this;
|
||||||
|
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
prependOnceListener(event: "disconnect", listener: () => void): this;
|
||||||
|
prependOnceListener(event: "error", listener: (error: Error) => void): this;
|
||||||
|
prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;
|
||||||
|
prependOnceListener(event: "listening", listener: (address: Address) => void): this;
|
||||||
|
prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
|
||||||
|
prependOnceListener(event: "online", listener: () => void): this;
|
||||||
|
}
|
||||||
|
export interface Cluster extends EventEmitter {
|
||||||
|
disconnect(callback?: () => void): void;
|
||||||
|
/**
|
||||||
|
* Spawn a new worker process.
|
||||||
|
*
|
||||||
|
* This can only be called from the primary process.
|
||||||
|
* @param env Key/value pairs to add to worker process environment.
|
||||||
|
* @since v0.6.0
|
||||||
|
*/
|
||||||
|
fork(env?: any): Worker;
|
||||||
|
/** @deprecated since v16.0.0 - use isPrimary. */
|
||||||
|
readonly isMaster: boolean;
|
||||||
|
/**
|
||||||
|
* True if the process is a primary. This is determined by the `process.env.NODE_UNIQUE_ID`. If `process.env.NODE_UNIQUE_ID`
|
||||||
|
* is undefined, then `isPrimary` is `true`.
|
||||||
|
* @since v16.0.0
|
||||||
|
*/
|
||||||
|
readonly isPrimary: boolean;
|
||||||
|
/**
|
||||||
|
* True if the process is not a primary (it is the negation of `cluster.isPrimary`).
|
||||||
|
* @since v0.6.0
|
||||||
|
*/
|
||||||
|
readonly isWorker: boolean;
|
||||||
|
/**
|
||||||
|
* The scheduling policy, either `cluster.SCHED_RR` for round-robin or `cluster.SCHED_NONE` to leave it to the operating system. This is a
|
||||||
|
* global setting and effectively frozen once either the first worker is spawned, or [`.setupPrimary()`](https://nodejs.org/docs/latest-v24.x/api/cluster.html#clustersetupprimarysettings)
|
||||||
|
* is called, whichever comes first.
|
||||||
|
*
|
||||||
|
* `SCHED_RR` is the default on all operating systems except Windows. Windows will change to `SCHED_RR` once libuv is able to effectively distribute
|
||||||
|
* IOCP handles without incurring a large performance hit.
|
||||||
|
*
|
||||||
|
* `cluster.schedulingPolicy` can also be set through the `NODE_CLUSTER_SCHED_POLICY` environment variable. Valid values are `'rr'` and `'none'`.
|
||||||
|
* @since v0.11.2
|
||||||
|
*/
|
||||||
|
schedulingPolicy: number;
|
||||||
|
/**
|
||||||
|
* After calling [`.setupPrimary()`](https://nodejs.org/docs/latest-v24.x/api/cluster.html#clustersetupprimarysettings)
|
||||||
|
* (or [`.fork()`](https://nodejs.org/docs/latest-v24.x/api/cluster.html#clusterforkenv)) this settings object will contain
|
||||||
|
* the settings, including the default values.
|
||||||
|
*
|
||||||
|
* This object is not intended to be changed or set manually.
|
||||||
|
* @since v0.7.1
|
||||||
|
*/
|
||||||
|
readonly settings: ClusterSettings;
|
||||||
|
/** @deprecated since v16.0.0 - use [`.setupPrimary()`](https://nodejs.org/docs/latest-v24.x/api/cluster.html#clustersetupprimarysettings) instead. */
|
||||||
|
setupMaster(settings?: ClusterSettings): void;
|
||||||
|
/**
|
||||||
|
* `setupPrimary` is used to change the default 'fork' behavior. Once called, the settings will be present in `cluster.settings`.
|
||||||
|
*
|
||||||
|
* Any settings changes only affect future calls to [`.fork()`](https://nodejs.org/docs/latest-v24.x/api/cluster.html#clusterforkenv)
|
||||||
|
* and have no effect on workers that are already running.
|
||||||
|
*
|
||||||
|
* The only attribute of a worker that cannot be set via `.setupPrimary()` is the `env` passed to
|
||||||
|
* [`.fork()`](https://nodejs.org/docs/latest-v24.x/api/cluster.html#clusterforkenv).
|
||||||
|
*
|
||||||
|
* The defaults above apply to the first call only; the defaults for later calls are the current values at the time of
|
||||||
|
* `cluster.setupPrimary()` is called.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import cluster from 'node:cluster';
|
||||||
|
*
|
||||||
|
* cluster.setupPrimary({
|
||||||
|
* exec: 'worker.js',
|
||||||
|
* args: ['--use', 'https'],
|
||||||
|
* silent: true,
|
||||||
|
* });
|
||||||
|
* cluster.fork(); // https worker
|
||||||
|
* cluster.setupPrimary({
|
||||||
|
* exec: 'worker.js',
|
||||||
|
* args: ['--use', 'http'],
|
||||||
|
* });
|
||||||
|
* cluster.fork(); // http worker
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* This can only be called from the primary process.
|
||||||
|
* @since v16.0.0
|
||||||
|
*/
|
||||||
|
setupPrimary(settings?: ClusterSettings): void;
|
||||||
|
/**
|
||||||
|
* A reference to the current worker object. Not available in the primary process.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import cluster from 'node:cluster';
|
||||||
|
*
|
||||||
|
* if (cluster.isPrimary) {
|
||||||
|
* console.log('I am primary');
|
||||||
|
* cluster.fork();
|
||||||
|
* cluster.fork();
|
||||||
|
* } else if (cluster.isWorker) {
|
||||||
|
* console.log(`I am worker #${cluster.worker.id}`);
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v0.7.0
|
||||||
|
*/
|
||||||
|
readonly worker?: Worker;
|
||||||
|
/**
|
||||||
|
* A hash that stores the active worker objects, keyed by `id` field. This makes it easy to loop through all the workers. It is only available in the primary process.
|
||||||
|
*
|
||||||
|
* A worker is removed from `cluster.workers` after the worker has disconnected _and_ exited. The order between these two events cannot be determined in advance. However, it
|
||||||
|
* is guaranteed that the removal from the `cluster.workers` list happens before the last `'disconnect'` or `'exit'` event is emitted.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import cluster from 'node:cluster';
|
||||||
|
*
|
||||||
|
* for (const worker of Object.values(cluster.workers)) {
|
||||||
|
* worker.send('big announcement to all workers');
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v0.7.0
|
||||||
|
*/
|
||||||
|
readonly workers?: NodeJS.Dict<Worker>;
|
||||||
|
readonly SCHED_NONE: number;
|
||||||
|
readonly SCHED_RR: number;
|
||||||
|
/**
|
||||||
|
* events.EventEmitter
|
||||||
|
* 1. disconnect
|
||||||
|
* 2. exit
|
||||||
|
* 3. fork
|
||||||
|
* 4. listening
|
||||||
|
* 5. message
|
||||||
|
* 6. online
|
||||||
|
* 7. setup
|
||||||
|
*/
|
||||||
|
addListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
addListener(event: "disconnect", listener: (worker: Worker) => void): this;
|
||||||
|
addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
|
||||||
|
addListener(event: "fork", listener: (worker: Worker) => void): this;
|
||||||
|
addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
|
||||||
|
addListener(
|
||||||
|
event: "message",
|
||||||
|
listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void,
|
||||||
|
): this; // the handle is a net.Socket or net.Server object, or undefined.
|
||||||
|
addListener(event: "online", listener: (worker: Worker) => void): this;
|
||||||
|
addListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
|
||||||
|
emit(event: string | symbol, ...args: any[]): boolean;
|
||||||
|
emit(event: "disconnect", worker: Worker): boolean;
|
||||||
|
emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
|
||||||
|
emit(event: "fork", worker: Worker): boolean;
|
||||||
|
emit(event: "listening", worker: Worker, address: Address): boolean;
|
||||||
|
emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
|
||||||
|
emit(event: "online", worker: Worker): boolean;
|
||||||
|
emit(event: "setup", settings: ClusterSettings): boolean;
|
||||||
|
on(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
on(event: "disconnect", listener: (worker: Worker) => void): this;
|
||||||
|
on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
|
||||||
|
on(event: "fork", listener: (worker: Worker) => void): this;
|
||||||
|
on(event: "listening", listener: (worker: Worker, address: Address) => void): this;
|
||||||
|
on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
|
||||||
|
on(event: "online", listener: (worker: Worker) => void): this;
|
||||||
|
on(event: "setup", listener: (settings: ClusterSettings) => void): this;
|
||||||
|
once(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
once(event: "disconnect", listener: (worker: Worker) => void): this;
|
||||||
|
once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
|
||||||
|
once(event: "fork", listener: (worker: Worker) => void): this;
|
||||||
|
once(event: "listening", listener: (worker: Worker, address: Address) => void): this;
|
||||||
|
once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
|
||||||
|
once(event: "online", listener: (worker: Worker) => void): this;
|
||||||
|
once(event: "setup", listener: (settings: ClusterSettings) => void): this;
|
||||||
|
prependListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
prependListener(event: "disconnect", listener: (worker: Worker) => void): this;
|
||||||
|
prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
|
||||||
|
prependListener(event: "fork", listener: (worker: Worker) => void): this;
|
||||||
|
prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
|
||||||
|
prependListener(
|
||||||
|
event: "message",
|
||||||
|
listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void,
|
||||||
|
): this;
|
||||||
|
prependListener(event: "online", listener: (worker: Worker) => void): this;
|
||||||
|
prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
|
||||||
|
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this;
|
||||||
|
prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
|
||||||
|
prependOnceListener(event: "fork", listener: (worker: Worker) => void): this;
|
||||||
|
prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
|
||||||
|
// the handle is a net.Socket or net.Server object, or undefined.
|
||||||
|
prependOnceListener(
|
||||||
|
event: "message",
|
||||||
|
listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void,
|
||||||
|
): this;
|
||||||
|
prependOnceListener(event: "online", listener: (worker: Worker) => void): this;
|
||||||
|
prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
|
||||||
|
}
|
||||||
|
const cluster: Cluster;
|
||||||
|
export default cluster;
|
||||||
|
}
|
||||||
|
declare module "node:cluster" {
|
||||||
|
export * from "cluster";
|
||||||
|
export { default as default } from "cluster";
|
||||||
|
}
|
||||||
21
node_modules/@types/node/compatibility/iterators.d.ts
generated
vendored
Normal file
21
node_modules/@types/node/compatibility/iterators.d.ts
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
// Backwards-compatible iterator interfaces, augmented with iterator helper methods by lib.esnext.iterator in TypeScript 5.6.
|
||||||
|
// The IterableIterator interface does not contain these methods, which creates assignability issues in places where IteratorObjects
|
||||||
|
// are expected (eg. DOM-compatible APIs) if lib.esnext.iterator is loaded.
|
||||||
|
// Also ensures that iterators returned by the Node API, which inherit from Iterator.prototype, correctly expose the iterator helper methods
|
||||||
|
// if lib.esnext.iterator is loaded.
|
||||||
|
// TODO: remove once this package no longer supports TS 5.5, and replace NodeJS.BuiltinIteratorReturn with BuiltinIteratorReturn.
|
||||||
|
|
||||||
|
// Placeholders for TS <5.6
|
||||||
|
interface IteratorObject<T, TReturn, TNext> {}
|
||||||
|
interface AsyncIteratorObject<T, TReturn, TNext> {}
|
||||||
|
|
||||||
|
declare namespace NodeJS {
|
||||||
|
// Populate iterator methods for TS <5.6
|
||||||
|
interface Iterator<T, TReturn, TNext> extends globalThis.Iterator<T, TReturn, TNext> {}
|
||||||
|
interface AsyncIterator<T, TReturn, TNext> extends globalThis.AsyncIterator<T, TReturn, TNext> {}
|
||||||
|
|
||||||
|
// Polyfill for TS 5.6's instrinsic BuiltinIteratorReturn type, required for DOM-compatible iterators
|
||||||
|
type BuiltinIteratorReturn = ReturnType<any[][typeof Symbol.iterator]> extends
|
||||||
|
globalThis.Iterator<any, infer TReturn> ? TReturn
|
||||||
|
: any;
|
||||||
|
}
|
||||||
453
node_modules/@types/node/console.d.ts
generated
vendored
Normal file
453
node_modules/@types/node/console.d.ts
generated
vendored
Normal file
@@ -0,0 +1,453 @@
|
|||||||
|
/**
|
||||||
|
* The `node:console` module provides a simple debugging console that is similar to
|
||||||
|
* the JavaScript console mechanism provided by web browsers.
|
||||||
|
*
|
||||||
|
* The module exports two specific components:
|
||||||
|
*
|
||||||
|
* * A `Console` class with methods such as `console.log()`, `console.error()`, and `console.warn()` that can be used to write to any Node.js stream.
|
||||||
|
* * A global `console` instance configured to write to [`process.stdout`](https://nodejs.org/docs/latest-v24.x/api/process.html#processstdout) and
|
||||||
|
* [`process.stderr`](https://nodejs.org/docs/latest-v24.x/api/process.html#processstderr). The global `console` can be used without importing the `node:console` module.
|
||||||
|
*
|
||||||
|
* _**Warning**_: The global console object's methods are neither consistently
|
||||||
|
* synchronous like the browser APIs they resemble, nor are they consistently
|
||||||
|
* asynchronous like all other Node.js streams. See the [`note on process I/O`](https://nodejs.org/docs/latest-v24.x/api/process.html#a-note-on-process-io) for
|
||||||
|
* more information.
|
||||||
|
*
|
||||||
|
* Example using the global `console`:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* console.log('hello world');
|
||||||
|
* // Prints: hello world, to stdout
|
||||||
|
* console.log('hello %s', 'world');
|
||||||
|
* // Prints: hello world, to stdout
|
||||||
|
* console.error(new Error('Whoops, something bad happened'));
|
||||||
|
* // Prints error message and stack trace to stderr:
|
||||||
|
* // Error: Whoops, something bad happened
|
||||||
|
* // at [eval]:5:15
|
||||||
|
* // at Script.runInThisContext (node:vm:132:18)
|
||||||
|
* // at Object.runInThisContext (node:vm:309:38)
|
||||||
|
* // at node:internal/process/execution:77:19
|
||||||
|
* // at [eval]-wrapper:6:22
|
||||||
|
* // at evalScript (node:internal/process/execution:76:60)
|
||||||
|
* // at node:internal/main/eval_string:23:3
|
||||||
|
*
|
||||||
|
* const name = 'Will Robinson';
|
||||||
|
* console.warn(`Danger ${name}! Danger!`);
|
||||||
|
* // Prints: Danger Will Robinson! Danger!, to stderr
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Example using the `Console` class:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const out = getStreamSomehow();
|
||||||
|
* const err = getStreamSomehow();
|
||||||
|
* const myConsole = new console.Console(out, err);
|
||||||
|
*
|
||||||
|
* myConsole.log('hello world');
|
||||||
|
* // Prints: hello world, to out
|
||||||
|
* myConsole.log('hello %s', 'world');
|
||||||
|
* // Prints: hello world, to out
|
||||||
|
* myConsole.error(new Error('Whoops, something bad happened'));
|
||||||
|
* // Prints: [Error: Whoops, something bad happened], to err
|
||||||
|
*
|
||||||
|
* const name = 'Will Robinson';
|
||||||
|
* myConsole.warn(`Danger ${name}! Danger!`);
|
||||||
|
* // Prints: Danger Will Robinson! Danger!, to err
|
||||||
|
* ```
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/console.js)
|
||||||
|
*/
|
||||||
|
declare module "console" {
|
||||||
|
import console = require("node:console");
|
||||||
|
export = console;
|
||||||
|
}
|
||||||
|
declare module "node:console" {
|
||||||
|
import { InspectOptions } from "node:util";
|
||||||
|
global {
|
||||||
|
// This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build
|
||||||
|
interface Console {
|
||||||
|
Console: console.ConsoleConstructor;
|
||||||
|
/**
|
||||||
|
* `console.assert()` writes a message if `value` is [falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy) or omitted. It only
|
||||||
|
* writes a message and does not otherwise affect execution. The output always
|
||||||
|
* starts with `"Assertion failed"`. If provided, `message` is formatted using
|
||||||
|
* [`util.format()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilformatformat-args).
|
||||||
|
*
|
||||||
|
* If `value` is [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy), nothing happens.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* console.assert(true, 'does nothing');
|
||||||
|
*
|
||||||
|
* console.assert(false, 'Whoops %s work', 'didn\'t');
|
||||||
|
* // Assertion failed: Whoops didn't work
|
||||||
|
*
|
||||||
|
* console.assert();
|
||||||
|
* // Assertion failed
|
||||||
|
* ```
|
||||||
|
* @since v0.1.101
|
||||||
|
* @param value The value tested for being truthy.
|
||||||
|
* @param message All arguments besides `value` are used as error message.
|
||||||
|
*/
|
||||||
|
assert(value: any, message?: string, ...optionalParams: any[]): void;
|
||||||
|
/**
|
||||||
|
* When `stdout` is a TTY, calling `console.clear()` will attempt to clear the
|
||||||
|
* TTY. When `stdout` is not a TTY, this method does nothing.
|
||||||
|
*
|
||||||
|
* The specific operation of `console.clear()` can vary across operating systems
|
||||||
|
* and terminal types. For most Linux operating systems, `console.clear()` operates similarly to the `clear` shell command. On Windows, `console.clear()` will clear only the output in the
|
||||||
|
* current terminal viewport for the Node.js
|
||||||
|
* binary.
|
||||||
|
* @since v8.3.0
|
||||||
|
*/
|
||||||
|
clear(): void;
|
||||||
|
/**
|
||||||
|
* Maintains an internal counter specific to `label` and outputs to `stdout` the
|
||||||
|
* number of times `console.count()` has been called with the given `label`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* > console.count()
|
||||||
|
* default: 1
|
||||||
|
* undefined
|
||||||
|
* > console.count('default')
|
||||||
|
* default: 2
|
||||||
|
* undefined
|
||||||
|
* > console.count('abc')
|
||||||
|
* abc: 1
|
||||||
|
* undefined
|
||||||
|
* > console.count('xyz')
|
||||||
|
* xyz: 1
|
||||||
|
* undefined
|
||||||
|
* > console.count('abc')
|
||||||
|
* abc: 2
|
||||||
|
* undefined
|
||||||
|
* > console.count()
|
||||||
|
* default: 3
|
||||||
|
* undefined
|
||||||
|
* >
|
||||||
|
* ```
|
||||||
|
* @since v8.3.0
|
||||||
|
* @param [label='default'] The display label for the counter.
|
||||||
|
*/
|
||||||
|
count(label?: string): void;
|
||||||
|
/**
|
||||||
|
* Resets the internal counter specific to `label`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* > console.count('abc');
|
||||||
|
* abc: 1
|
||||||
|
* undefined
|
||||||
|
* > console.countReset('abc');
|
||||||
|
* undefined
|
||||||
|
* > console.count('abc');
|
||||||
|
* abc: 1
|
||||||
|
* undefined
|
||||||
|
* >
|
||||||
|
* ```
|
||||||
|
* @since v8.3.0
|
||||||
|
* @param [label='default'] The display label for the counter.
|
||||||
|
*/
|
||||||
|
countReset(label?: string): void;
|
||||||
|
/**
|
||||||
|
* The `console.debug()` function is an alias for {@link log}.
|
||||||
|
* @since v8.0.0
|
||||||
|
*/
|
||||||
|
debug(message?: any, ...optionalParams: any[]): void;
|
||||||
|
/**
|
||||||
|
* Uses [`util.inspect()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilinspectobject-options) on `obj` and prints the resulting string to `stdout`.
|
||||||
|
* This function bypasses any custom `inspect()` function defined on `obj`.
|
||||||
|
* @since v0.1.101
|
||||||
|
*/
|
||||||
|
dir(obj: any, options?: InspectOptions): void;
|
||||||
|
/**
|
||||||
|
* This method calls `console.log()` passing it the arguments received.
|
||||||
|
* This method does not produce any XML formatting.
|
||||||
|
* @since v8.0.0
|
||||||
|
*/
|
||||||
|
dirxml(...data: any[]): void;
|
||||||
|
/**
|
||||||
|
* Prints to `stderr` with newline. Multiple arguments can be passed, with the
|
||||||
|
* first used as the primary message and all additional used as substitution
|
||||||
|
* values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html)
|
||||||
|
* (the arguments are all passed to [`util.format()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilformatformat-args)).
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const code = 5;
|
||||||
|
* console.error('error #%d', code);
|
||||||
|
* // Prints: error #5, to stderr
|
||||||
|
* console.error('error', code);
|
||||||
|
* // Prints: error 5, to stderr
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* If formatting elements (e.g. `%d`) are not found in the first string then
|
||||||
|
* [`util.inspect()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilinspectobject-options) is called on each argument and the
|
||||||
|
* resulting string values are concatenated. See [`util.format()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilformatformat-args)
|
||||||
|
* for more information.
|
||||||
|
* @since v0.1.100
|
||||||
|
*/
|
||||||
|
error(message?: any, ...optionalParams: any[]): void;
|
||||||
|
/**
|
||||||
|
* Increases indentation of subsequent lines by spaces for `groupIndentation` length.
|
||||||
|
*
|
||||||
|
* If one or more `label`s are provided, those are printed first without the
|
||||||
|
* additional indentation.
|
||||||
|
* @since v8.5.0
|
||||||
|
*/
|
||||||
|
group(...label: any[]): void;
|
||||||
|
/**
|
||||||
|
* An alias for {@link group}.
|
||||||
|
* @since v8.5.0
|
||||||
|
*/
|
||||||
|
groupCollapsed(...label: any[]): void;
|
||||||
|
/**
|
||||||
|
* Decreases indentation of subsequent lines by spaces for `groupIndentation` length.
|
||||||
|
* @since v8.5.0
|
||||||
|
*/
|
||||||
|
groupEnd(): void;
|
||||||
|
/**
|
||||||
|
* The `console.info()` function is an alias for {@link log}.
|
||||||
|
* @since v0.1.100
|
||||||
|
*/
|
||||||
|
info(message?: any, ...optionalParams: any[]): void;
|
||||||
|
/**
|
||||||
|
* Prints to `stdout` with newline. Multiple arguments can be passed, with the
|
||||||
|
* first used as the primary message and all additional used as substitution
|
||||||
|
* values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html)
|
||||||
|
* (the arguments are all passed to [`util.format()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilformatformat-args)).
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const count = 5;
|
||||||
|
* console.log('count: %d', count);
|
||||||
|
* // Prints: count: 5, to stdout
|
||||||
|
* console.log('count:', count);
|
||||||
|
* // Prints: count: 5, to stdout
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* See [`util.format()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilformatformat-args) for more information.
|
||||||
|
* @since v0.1.100
|
||||||
|
*/
|
||||||
|
log(message?: any, ...optionalParams: any[]): void;
|
||||||
|
/**
|
||||||
|
* Try to construct a table with the columns of the properties of `tabularData` (or use `properties`) and rows of `tabularData` and log it. Falls back to just
|
||||||
|
* logging the argument if it can't be parsed as tabular.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* // These can't be parsed as tabular data
|
||||||
|
* console.table(Symbol());
|
||||||
|
* // Symbol()
|
||||||
|
*
|
||||||
|
* console.table(undefined);
|
||||||
|
* // undefined
|
||||||
|
*
|
||||||
|
* console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]);
|
||||||
|
* // ┌─────────┬─────┬─────┐
|
||||||
|
* // │ (index) │ a │ b │
|
||||||
|
* // ├─────────┼─────┼─────┤
|
||||||
|
* // │ 0 │ 1 │ 'Y' │
|
||||||
|
* // │ 1 │ 'Z' │ 2 │
|
||||||
|
* // └─────────┴─────┴─────┘
|
||||||
|
*
|
||||||
|
* console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']);
|
||||||
|
* // ┌─────────┬─────┐
|
||||||
|
* // │ (index) │ a │
|
||||||
|
* // ├─────────┼─────┤
|
||||||
|
* // │ 0 │ 1 │
|
||||||
|
* // │ 1 │ 'Z' │
|
||||||
|
* // └─────────┴─────┘
|
||||||
|
* ```
|
||||||
|
* @since v10.0.0
|
||||||
|
* @param properties Alternate properties for constructing the table.
|
||||||
|
*/
|
||||||
|
table(tabularData: any, properties?: readonly string[]): void;
|
||||||
|
/**
|
||||||
|
* Starts a timer that can be used to compute the duration of an operation. Timers
|
||||||
|
* are identified by a unique `label`. Use the same `label` when calling {@link timeEnd} to stop the timer and output the elapsed time in
|
||||||
|
* suitable time units to `stdout`. For example, if the elapsed
|
||||||
|
* time is 3869ms, `console.timeEnd()` displays "3.869s".
|
||||||
|
* @since v0.1.104
|
||||||
|
* @param [label='default']
|
||||||
|
*/
|
||||||
|
time(label?: string): void;
|
||||||
|
/**
|
||||||
|
* Stops a timer that was previously started by calling {@link time} and
|
||||||
|
* prints the result to `stdout`:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* console.time('bunch-of-stuff');
|
||||||
|
* // Do a bunch of stuff.
|
||||||
|
* console.timeEnd('bunch-of-stuff');
|
||||||
|
* // Prints: bunch-of-stuff: 225.438ms
|
||||||
|
* ```
|
||||||
|
* @since v0.1.104
|
||||||
|
* @param [label='default']
|
||||||
|
*/
|
||||||
|
timeEnd(label?: string): void;
|
||||||
|
/**
|
||||||
|
* For a timer that was previously started by calling {@link time}, prints
|
||||||
|
* the elapsed time and other `data` arguments to `stdout`:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* console.time('process');
|
||||||
|
* const value = expensiveProcess1(); // Returns 42
|
||||||
|
* console.timeLog('process', value);
|
||||||
|
* // Prints "process: 365.227ms 42".
|
||||||
|
* doExpensiveProcess2(value);
|
||||||
|
* console.timeEnd('process');
|
||||||
|
* ```
|
||||||
|
* @since v10.7.0
|
||||||
|
* @param [label='default']
|
||||||
|
*/
|
||||||
|
timeLog(label?: string, ...data: any[]): void;
|
||||||
|
/**
|
||||||
|
* Prints to `stderr` the string `'Trace: '`, followed by the [`util.format()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilformatformat-args)
|
||||||
|
* formatted message and stack trace to the current position in the code.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* console.trace('Show me');
|
||||||
|
* // Prints: (stack trace will vary based on where trace is called)
|
||||||
|
* // Trace: Show me
|
||||||
|
* // at repl:2:9
|
||||||
|
* // at REPLServer.defaultEval (repl.js:248:27)
|
||||||
|
* // at bound (domain.js:287:14)
|
||||||
|
* // at REPLServer.runBound [as eval] (domain.js:300:12)
|
||||||
|
* // at REPLServer.<anonymous> (repl.js:412:12)
|
||||||
|
* // at emitOne (events.js:82:20)
|
||||||
|
* // at REPLServer.emit (events.js:169:7)
|
||||||
|
* // at REPLServer.Interface._onLine (readline.js:210:10)
|
||||||
|
* // at REPLServer.Interface._line (readline.js:549:8)
|
||||||
|
* // at REPLServer.Interface._ttyWrite (readline.js:826:14)
|
||||||
|
* ```
|
||||||
|
* @since v0.1.104
|
||||||
|
*/
|
||||||
|
trace(message?: any, ...optionalParams: any[]): void;
|
||||||
|
/**
|
||||||
|
* The `console.warn()` function is an alias for {@link error}.
|
||||||
|
* @since v0.1.100
|
||||||
|
*/
|
||||||
|
warn(message?: any, ...optionalParams: any[]): void;
|
||||||
|
// --- Inspector mode only ---
|
||||||
|
/**
|
||||||
|
* This method does not display anything unless used in the inspector. The `console.profile()`
|
||||||
|
* method starts a JavaScript CPU profile with an optional label until {@link profileEnd}
|
||||||
|
* is called. The profile is then added to the Profile panel of the inspector.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* console.profile('MyLabel');
|
||||||
|
* // Some code
|
||||||
|
* console.profileEnd('MyLabel');
|
||||||
|
* // Adds the profile 'MyLabel' to the Profiles panel of the inspector.
|
||||||
|
* ```
|
||||||
|
* @since v8.0.0
|
||||||
|
*/
|
||||||
|
profile(label?: string): void;
|
||||||
|
/**
|
||||||
|
* This method does not display anything unless used in the inspector. Stops the current
|
||||||
|
* JavaScript CPU profiling session if one has been started and prints the report to the
|
||||||
|
* Profiles panel of the inspector. See {@link profile} for an example.
|
||||||
|
*
|
||||||
|
* If this method is called without a label, the most recently started profile is stopped.
|
||||||
|
* @since v8.0.0
|
||||||
|
*/
|
||||||
|
profileEnd(label?: string): void;
|
||||||
|
/**
|
||||||
|
* This method does not display anything unless used in the inspector. The `console.timeStamp()`
|
||||||
|
* method adds an event with the label `'label'` to the Timeline panel of the inspector.
|
||||||
|
* @since v8.0.0
|
||||||
|
*/
|
||||||
|
timeStamp(label?: string): void;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* The `console` module provides a simple debugging console that is similar to the
|
||||||
|
* JavaScript console mechanism provided by web browsers.
|
||||||
|
*
|
||||||
|
* The module exports two specific components:
|
||||||
|
*
|
||||||
|
* * A `Console` class with methods such as `console.log()`, `console.error()` and `console.warn()` that can be used to write to any Node.js stream.
|
||||||
|
* * A global `console` instance configured to write to [`process.stdout`](https://nodejs.org/docs/latest-v24.x/api/process.html#processstdout) and
|
||||||
|
* [`process.stderr`](https://nodejs.org/docs/latest-v24.x/api/process.html#processstderr). The global `console` can be used without importing the `node:console` module.
|
||||||
|
*
|
||||||
|
* _**Warning**_: The global console object's methods are neither consistently
|
||||||
|
* synchronous like the browser APIs they resemble, nor are they consistently
|
||||||
|
* asynchronous like all other Node.js streams. See the [`note on process I/O`](https://nodejs.org/docs/latest-v24.x/api/process.html#a-note-on-process-io) for
|
||||||
|
* more information.
|
||||||
|
*
|
||||||
|
* Example using the global `console`:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* console.log('hello world');
|
||||||
|
* // Prints: hello world, to stdout
|
||||||
|
* console.log('hello %s', 'world');
|
||||||
|
* // Prints: hello world, to stdout
|
||||||
|
* console.error(new Error('Whoops, something bad happened'));
|
||||||
|
* // Prints error message and stack trace to stderr:
|
||||||
|
* // Error: Whoops, something bad happened
|
||||||
|
* // at [eval]:5:15
|
||||||
|
* // at Script.runInThisContext (node:vm:132:18)
|
||||||
|
* // at Object.runInThisContext (node:vm:309:38)
|
||||||
|
* // at node:internal/process/execution:77:19
|
||||||
|
* // at [eval]-wrapper:6:22
|
||||||
|
* // at evalScript (node:internal/process/execution:76:60)
|
||||||
|
* // at node:internal/main/eval_string:23:3
|
||||||
|
*
|
||||||
|
* const name = 'Will Robinson';
|
||||||
|
* console.warn(`Danger ${name}! Danger!`);
|
||||||
|
* // Prints: Danger Will Robinson! Danger!, to stderr
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Example using the `Console` class:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const out = getStreamSomehow();
|
||||||
|
* const err = getStreamSomehow();
|
||||||
|
* const myConsole = new console.Console(out, err);
|
||||||
|
*
|
||||||
|
* myConsole.log('hello world');
|
||||||
|
* // Prints: hello world, to out
|
||||||
|
* myConsole.log('hello %s', 'world');
|
||||||
|
* // Prints: hello world, to out
|
||||||
|
* myConsole.error(new Error('Whoops, something bad happened'));
|
||||||
|
* // Prints: [Error: Whoops, something bad happened], to err
|
||||||
|
*
|
||||||
|
* const name = 'Will Robinson';
|
||||||
|
* myConsole.warn(`Danger ${name}! Danger!`);
|
||||||
|
* // Prints: Danger Will Robinson! Danger!, to err
|
||||||
|
* ```
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/console.js)
|
||||||
|
*/
|
||||||
|
namespace console {
|
||||||
|
interface ConsoleConstructorOptions {
|
||||||
|
stdout: NodeJS.WritableStream;
|
||||||
|
stderr?: NodeJS.WritableStream | undefined;
|
||||||
|
/**
|
||||||
|
* Ignore errors when writing to the underlying streams.
|
||||||
|
* @default true
|
||||||
|
*/
|
||||||
|
ignoreErrors?: boolean | undefined;
|
||||||
|
/**
|
||||||
|
* Set color support for this `Console` instance. Setting to true enables coloring while inspecting
|
||||||
|
* values. Setting to `false` disables coloring while inspecting values. Setting to `'auto'` makes color
|
||||||
|
* support depend on the value of the `isTTY` property and the value returned by `getColorDepth()` on the
|
||||||
|
* respective stream. This option can not be used, if `inspectOptions.colors` is set as well.
|
||||||
|
* @default auto
|
||||||
|
*/
|
||||||
|
colorMode?: boolean | "auto" | undefined;
|
||||||
|
/**
|
||||||
|
* Specifies options that are passed along to
|
||||||
|
* `util.inspect()`. Can be an options object or, if different options
|
||||||
|
* for stdout and stderr are desired, a `Map` from stream objects to options.
|
||||||
|
*/
|
||||||
|
inspectOptions?: InspectOptions | ReadonlyMap<NodeJS.WritableStream, InspectOptions> | undefined;
|
||||||
|
/**
|
||||||
|
* Set group indentation.
|
||||||
|
* @default 2
|
||||||
|
*/
|
||||||
|
groupIndentation?: number | undefined;
|
||||||
|
}
|
||||||
|
interface ConsoleConstructor {
|
||||||
|
prototype: Console;
|
||||||
|
new(stdout: NodeJS.WritableStream, stderr?: NodeJS.WritableStream, ignoreErrors?: boolean): Console;
|
||||||
|
new(options: ConsoleConstructorOptions): Console;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var console: Console;
|
||||||
|
}
|
||||||
|
export = globalThis.console;
|
||||||
|
}
|
||||||
21
node_modules/@types/node/constants.d.ts
generated
vendored
Normal file
21
node_modules/@types/node/constants.d.ts
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* @deprecated The `node:constants` module is deprecated. When requiring access to constants
|
||||||
|
* relevant to specific Node.js builtin modules, developers should instead refer
|
||||||
|
* to the `constants` property exposed by the relevant module. For instance,
|
||||||
|
* `require('node:fs').constants` and `require('node:os').constants`.
|
||||||
|
*/
|
||||||
|
declare module "constants" {
|
||||||
|
const constants:
|
||||||
|
& typeof import("node:os").constants.dlopen
|
||||||
|
& typeof import("node:os").constants.errno
|
||||||
|
& typeof import("node:os").constants.priority
|
||||||
|
& typeof import("node:os").constants.signals
|
||||||
|
& typeof import("node:fs").constants
|
||||||
|
& typeof import("node:crypto").constants;
|
||||||
|
export = constants;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare module "node:constants" {
|
||||||
|
import constants = require("constants");
|
||||||
|
export = constants;
|
||||||
|
}
|
||||||
5417
node_modules/@types/node/crypto.d.ts
generated
vendored
Normal file
5417
node_modules/@types/node/crypto.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
600
node_modules/@types/node/dgram.d.ts
generated
vendored
Normal file
600
node_modules/@types/node/dgram.d.ts
generated
vendored
Normal file
@@ -0,0 +1,600 @@
|
|||||||
|
/**
|
||||||
|
* The `node:dgram` module provides an implementation of UDP datagram sockets.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dgram from 'node:dgram';
|
||||||
|
*
|
||||||
|
* const server = dgram.createSocket('udp4');
|
||||||
|
*
|
||||||
|
* server.on('error', (err) => {
|
||||||
|
* console.error(`server error:\n${err.stack}`);
|
||||||
|
* server.close();
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* server.on('message', (msg, rinfo) => {
|
||||||
|
* console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* server.on('listening', () => {
|
||||||
|
* const address = server.address();
|
||||||
|
* console.log(`server listening ${address.address}:${address.port}`);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* server.bind(41234);
|
||||||
|
* // Prints: server listening 0.0.0.0:41234
|
||||||
|
* ```
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/dgram.js)
|
||||||
|
*/
|
||||||
|
declare module "dgram" {
|
||||||
|
import { NonSharedBuffer } from "node:buffer";
|
||||||
|
import { AddressInfo, BlockList } from "node:net";
|
||||||
|
import * as dns from "node:dns";
|
||||||
|
import { Abortable, EventEmitter } from "node:events";
|
||||||
|
interface RemoteInfo {
|
||||||
|
address: string;
|
||||||
|
family: "IPv4" | "IPv6";
|
||||||
|
port: number;
|
||||||
|
size: number;
|
||||||
|
}
|
||||||
|
interface BindOptions {
|
||||||
|
port?: number | undefined;
|
||||||
|
address?: string | undefined;
|
||||||
|
exclusive?: boolean | undefined;
|
||||||
|
fd?: number | undefined;
|
||||||
|
}
|
||||||
|
type SocketType = "udp4" | "udp6";
|
||||||
|
interface SocketOptions extends Abortable {
|
||||||
|
type: SocketType;
|
||||||
|
reuseAddr?: boolean | undefined;
|
||||||
|
reusePort?: boolean | undefined;
|
||||||
|
/**
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
ipv6Only?: boolean | undefined;
|
||||||
|
recvBufferSize?: number | undefined;
|
||||||
|
sendBufferSize?: number | undefined;
|
||||||
|
lookup?:
|
||||||
|
| ((
|
||||||
|
hostname: string,
|
||||||
|
options: dns.LookupOneOptions,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void,
|
||||||
|
) => void)
|
||||||
|
| undefined;
|
||||||
|
receiveBlockList?: BlockList | undefined;
|
||||||
|
sendBlockList?: BlockList | undefined;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Creates a `dgram.Socket` object. Once the socket is created, calling `socket.bind()` will instruct the socket to begin listening for datagram
|
||||||
|
* messages. When `address` and `port` are not passed to `socket.bind()` the
|
||||||
|
* method will bind the socket to the "all interfaces" address on a random port
|
||||||
|
* (it does the right thing for both `udp4` and `udp6` sockets). The bound address
|
||||||
|
* and port can be retrieved using `socket.address().address` and `socket.address().port`.
|
||||||
|
*
|
||||||
|
* If the `signal` option is enabled, calling `.abort()` on the corresponding `AbortController` is similar to calling `.close()` on the socket:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const controller = new AbortController();
|
||||||
|
* const { signal } = controller;
|
||||||
|
* const server = dgram.createSocket({ type: 'udp4', signal });
|
||||||
|
* server.on('message', (msg, rinfo) => {
|
||||||
|
* console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
|
||||||
|
* });
|
||||||
|
* // Later, when you want to close the server.
|
||||||
|
* controller.abort();
|
||||||
|
* ```
|
||||||
|
* @since v0.11.13
|
||||||
|
* @param options Available options are:
|
||||||
|
* @param callback Attached as a listener for `'message'` events. Optional.
|
||||||
|
*/
|
||||||
|
function createSocket(type: SocketType, callback?: (msg: NonSharedBuffer, rinfo: RemoteInfo) => void): Socket;
|
||||||
|
function createSocket(options: SocketOptions, callback?: (msg: NonSharedBuffer, rinfo: RemoteInfo) => void): Socket;
|
||||||
|
/**
|
||||||
|
* Encapsulates the datagram functionality.
|
||||||
|
*
|
||||||
|
* New instances of `dgram.Socket` are created using {@link createSocket}.
|
||||||
|
* The `new` keyword is not to be used to create `dgram.Socket` instances.
|
||||||
|
* @since v0.1.99
|
||||||
|
*/
|
||||||
|
class Socket extends EventEmitter {
|
||||||
|
/**
|
||||||
|
* Tells the kernel to join a multicast group at the given `multicastAddress` and `multicastInterface` using the `IP_ADD_MEMBERSHIP` socket option. If the `multicastInterface` argument is not
|
||||||
|
* specified, the operating system will choose
|
||||||
|
* one interface and will add membership to it. To add membership to every
|
||||||
|
* available interface, call `addMembership` multiple times, once per interface.
|
||||||
|
*
|
||||||
|
* When called on an unbound socket, this method will implicitly bind to a random
|
||||||
|
* port, listening on all interfaces.
|
||||||
|
*
|
||||||
|
* When sharing a UDP socket across multiple `cluster` workers, the`socket.addMembership()` function must be called only once or an`EADDRINUSE` error will occur:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import cluster from 'node:cluster';
|
||||||
|
* import dgram from 'node:dgram';
|
||||||
|
*
|
||||||
|
* if (cluster.isPrimary) {
|
||||||
|
* cluster.fork(); // Works ok.
|
||||||
|
* cluster.fork(); // Fails with EADDRINUSE.
|
||||||
|
* } else {
|
||||||
|
* const s = dgram.createSocket('udp4');
|
||||||
|
* s.bind(1234, () => {
|
||||||
|
* s.addMembership('224.0.0.114');
|
||||||
|
* });
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v0.6.9
|
||||||
|
*/
|
||||||
|
addMembership(multicastAddress: string, multicastInterface?: string): void;
|
||||||
|
/**
|
||||||
|
* Returns an object containing the address information for a socket.
|
||||||
|
* For UDP sockets, this object will contain `address`, `family`, and `port` properties.
|
||||||
|
*
|
||||||
|
* This method throws `EBADF` if called on an unbound socket.
|
||||||
|
* @since v0.1.99
|
||||||
|
*/
|
||||||
|
address(): AddressInfo;
|
||||||
|
/**
|
||||||
|
* For UDP sockets, causes the `dgram.Socket` to listen for datagram
|
||||||
|
* messages on a named `port` and optional `address`. If `port` is not
|
||||||
|
* specified or is `0`, the operating system will attempt to bind to a
|
||||||
|
* random port. If `address` is not specified, the operating system will
|
||||||
|
* attempt to listen on all addresses. Once binding is complete, a `'listening'` event is emitted and the optional `callback` function is
|
||||||
|
* called.
|
||||||
|
*
|
||||||
|
* Specifying both a `'listening'` event listener and passing a `callback` to the `socket.bind()` method is not harmful but not very
|
||||||
|
* useful.
|
||||||
|
*
|
||||||
|
* A bound datagram socket keeps the Node.js process running to receive
|
||||||
|
* datagram messages.
|
||||||
|
*
|
||||||
|
* If binding fails, an `'error'` event is generated. In rare case (e.g.
|
||||||
|
* attempting to bind with a closed socket), an `Error` may be thrown.
|
||||||
|
*
|
||||||
|
* Example of a UDP server listening on port 41234:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dgram from 'node:dgram';
|
||||||
|
*
|
||||||
|
* const server = dgram.createSocket('udp4');
|
||||||
|
*
|
||||||
|
* server.on('error', (err) => {
|
||||||
|
* console.error(`server error:\n${err.stack}`);
|
||||||
|
* server.close();
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* server.on('message', (msg, rinfo) => {
|
||||||
|
* console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* server.on('listening', () => {
|
||||||
|
* const address = server.address();
|
||||||
|
* console.log(`server listening ${address.address}:${address.port}`);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* server.bind(41234);
|
||||||
|
* // Prints: server listening 0.0.0.0:41234
|
||||||
|
* ```
|
||||||
|
* @since v0.1.99
|
||||||
|
* @param callback with no parameters. Called when binding is complete.
|
||||||
|
*/
|
||||||
|
bind(port?: number, address?: string, callback?: () => void): this;
|
||||||
|
bind(port?: number, callback?: () => void): this;
|
||||||
|
bind(callback?: () => void): this;
|
||||||
|
bind(options: BindOptions, callback?: () => void): this;
|
||||||
|
/**
|
||||||
|
* Close the underlying socket and stop listening for data on it. If a callback is
|
||||||
|
* provided, it is added as a listener for the `'close'` event.
|
||||||
|
* @since v0.1.99
|
||||||
|
* @param callback Called when the socket has been closed.
|
||||||
|
*/
|
||||||
|
close(callback?: () => void): this;
|
||||||
|
/**
|
||||||
|
* Associates the `dgram.Socket` to a remote address and port. Every
|
||||||
|
* message sent by this handle is automatically sent to that destination. Also,
|
||||||
|
* the socket will only receive messages from that remote peer.
|
||||||
|
* Trying to call `connect()` on an already connected socket will result
|
||||||
|
* in an `ERR_SOCKET_DGRAM_IS_CONNECTED` exception. If `address` is not
|
||||||
|
* provided, `'127.0.0.1'` (for `udp4` sockets) or `'::1'` (for `udp6` sockets)
|
||||||
|
* will be used by default. Once the connection is complete, a `'connect'` event
|
||||||
|
* is emitted and the optional `callback` function is called. In case of failure,
|
||||||
|
* the `callback` is called or, failing this, an `'error'` event is emitted.
|
||||||
|
* @since v12.0.0
|
||||||
|
* @param callback Called when the connection is completed or on error.
|
||||||
|
*/
|
||||||
|
connect(port: number, address?: string, callback?: () => void): void;
|
||||||
|
connect(port: number, callback: () => void): void;
|
||||||
|
/**
|
||||||
|
* A synchronous function that disassociates a connected `dgram.Socket` from
|
||||||
|
* its remote address. Trying to call `disconnect()` on an unbound or already
|
||||||
|
* disconnected socket will result in an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception.
|
||||||
|
* @since v12.0.0
|
||||||
|
*/
|
||||||
|
disconnect(): void;
|
||||||
|
/**
|
||||||
|
* Instructs the kernel to leave a multicast group at `multicastAddress` using the `IP_DROP_MEMBERSHIP` socket option. This method is automatically called by the
|
||||||
|
* kernel when the socket is closed or the process terminates, so most apps will
|
||||||
|
* never have reason to call this.
|
||||||
|
*
|
||||||
|
* If `multicastInterface` is not specified, the operating system will attempt to
|
||||||
|
* drop membership on all valid interfaces.
|
||||||
|
* @since v0.6.9
|
||||||
|
*/
|
||||||
|
dropMembership(multicastAddress: string, multicastInterface?: string): void;
|
||||||
|
/**
|
||||||
|
* This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
|
||||||
|
* @since v8.7.0
|
||||||
|
* @return the `SO_RCVBUF` socket receive buffer size in bytes.
|
||||||
|
*/
|
||||||
|
getRecvBufferSize(): number;
|
||||||
|
/**
|
||||||
|
* This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
|
||||||
|
* @since v8.7.0
|
||||||
|
* @return the `SO_SNDBUF` socket send buffer size in bytes.
|
||||||
|
*/
|
||||||
|
getSendBufferSize(): number;
|
||||||
|
/**
|
||||||
|
* @since v18.8.0, v16.19.0
|
||||||
|
* @return Number of bytes queued for sending.
|
||||||
|
*/
|
||||||
|
getSendQueueSize(): number;
|
||||||
|
/**
|
||||||
|
* @since v18.8.0, v16.19.0
|
||||||
|
* @return Number of send requests currently in the queue awaiting to be processed.
|
||||||
|
*/
|
||||||
|
getSendQueueCount(): number;
|
||||||
|
/**
|
||||||
|
* By default, binding a socket will cause it to block the Node.js process from
|
||||||
|
* exiting as long as the socket is open. The `socket.unref()` method can be used
|
||||||
|
* to exclude the socket from the reference counting that keeps the Node.js
|
||||||
|
* process active. The `socket.ref()` method adds the socket back to the reference
|
||||||
|
* counting and restores the default behavior.
|
||||||
|
*
|
||||||
|
* Calling `socket.ref()` multiples times will have no additional effect.
|
||||||
|
*
|
||||||
|
* The `socket.ref()` method returns a reference to the socket so calls can be
|
||||||
|
* chained.
|
||||||
|
* @since v0.9.1
|
||||||
|
*/
|
||||||
|
ref(): this;
|
||||||
|
/**
|
||||||
|
* Returns an object containing the `address`, `family`, and `port` of the remote
|
||||||
|
* endpoint. This method throws an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception
|
||||||
|
* if the socket is not connected.
|
||||||
|
* @since v12.0.0
|
||||||
|
*/
|
||||||
|
remoteAddress(): AddressInfo;
|
||||||
|
/**
|
||||||
|
* Broadcasts a datagram on the socket.
|
||||||
|
* For connectionless sockets, the destination `port` and `address` must be
|
||||||
|
* specified. Connected sockets, on the other hand, will use their associated
|
||||||
|
* remote endpoint, so the `port` and `address` arguments must not be set.
|
||||||
|
*
|
||||||
|
* The `msg` argument contains the message to be sent.
|
||||||
|
* Depending on its type, different behavior can apply. If `msg` is a `Buffer`,
|
||||||
|
* any `TypedArray` or a `DataView`,
|
||||||
|
* the `offset` and `length` specify the offset within the `Buffer` where the
|
||||||
|
* message begins and the number of bytes in the message, respectively.
|
||||||
|
* If `msg` is a `String`, then it is automatically converted to a `Buffer` with `'utf8'` encoding. With messages that
|
||||||
|
* contain multi-byte characters, `offset` and `length` will be calculated with
|
||||||
|
* respect to `byte length` and not the character position.
|
||||||
|
* If `msg` is an array, `offset` and `length` must not be specified.
|
||||||
|
*
|
||||||
|
* The `address` argument is a string. If the value of `address` is a host name,
|
||||||
|
* DNS will be used to resolve the address of the host. If `address` is not
|
||||||
|
* provided or otherwise nullish, `'127.0.0.1'` (for `udp4` sockets) or `'::1'` (for `udp6` sockets) will be used by default.
|
||||||
|
*
|
||||||
|
* If the socket has not been previously bound with a call to `bind`, the socket
|
||||||
|
* is assigned a random port number and is bound to the "all interfaces" address
|
||||||
|
* (`'0.0.0.0'` for `udp4` sockets, `'::0'` for `udp6` sockets.)
|
||||||
|
*
|
||||||
|
* An optional `callback` function may be specified to as a way of reporting
|
||||||
|
* DNS errors or for determining when it is safe to reuse the `buf` object.
|
||||||
|
* DNS lookups delay the time to send for at least one tick of the
|
||||||
|
* Node.js event loop.
|
||||||
|
*
|
||||||
|
* The only way to know for sure that the datagram has been sent is by using a `callback`. If an error occurs and a `callback` is given, the error will be
|
||||||
|
* passed as the first argument to the `callback`. If a `callback` is not given,
|
||||||
|
* the error is emitted as an `'error'` event on the `socket` object.
|
||||||
|
*
|
||||||
|
* Offset and length are optional but both _must_ be set if either are used.
|
||||||
|
* They are supported only when the first argument is a `Buffer`, a `TypedArray`,
|
||||||
|
* or a `DataView`.
|
||||||
|
*
|
||||||
|
* This method throws `ERR_SOCKET_BAD_PORT` if called on an unbound socket.
|
||||||
|
*
|
||||||
|
* Example of sending a UDP packet to a port on `localhost`;
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dgram from 'node:dgram';
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const message = Buffer.from('Some bytes');
|
||||||
|
* const client = dgram.createSocket('udp4');
|
||||||
|
* client.send(message, 41234, 'localhost', (err) => {
|
||||||
|
* client.close();
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Example of sending a UDP packet composed of multiple buffers to a port on`127.0.0.1`;
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dgram from 'node:dgram';
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const buf1 = Buffer.from('Some ');
|
||||||
|
* const buf2 = Buffer.from('bytes');
|
||||||
|
* const client = dgram.createSocket('udp4');
|
||||||
|
* client.send([buf1, buf2], 41234, (err) => {
|
||||||
|
* client.close();
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Sending multiple buffers might be faster or slower depending on the
|
||||||
|
* application and operating system. Run benchmarks to
|
||||||
|
* determine the optimal strategy on a case-by-case basis. Generally speaking,
|
||||||
|
* however, sending multiple buffers is faster.
|
||||||
|
*
|
||||||
|
* Example of sending a UDP packet using a socket connected to a port on `localhost`:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dgram from 'node:dgram';
|
||||||
|
* import { Buffer } from 'node:buffer';
|
||||||
|
*
|
||||||
|
* const message = Buffer.from('Some bytes');
|
||||||
|
* const client = dgram.createSocket('udp4');
|
||||||
|
* client.connect(41234, 'localhost', (err) => {
|
||||||
|
* client.send(message, (err) => {
|
||||||
|
* client.close();
|
||||||
|
* });
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v0.1.99
|
||||||
|
* @param msg Message to be sent.
|
||||||
|
* @param offset Offset in the buffer where the message starts.
|
||||||
|
* @param length Number of bytes in the message.
|
||||||
|
* @param port Destination port.
|
||||||
|
* @param address Destination host name or IP address.
|
||||||
|
* @param callback Called when the message has been sent.
|
||||||
|
*/
|
||||||
|
send(
|
||||||
|
msg: string | NodeJS.ArrayBufferView | readonly any[],
|
||||||
|
port?: number,
|
||||||
|
address?: string,
|
||||||
|
callback?: (error: Error | null, bytes: number) => void,
|
||||||
|
): void;
|
||||||
|
send(
|
||||||
|
msg: string | NodeJS.ArrayBufferView | readonly any[],
|
||||||
|
port?: number,
|
||||||
|
callback?: (error: Error | null, bytes: number) => void,
|
||||||
|
): void;
|
||||||
|
send(
|
||||||
|
msg: string | NodeJS.ArrayBufferView | readonly any[],
|
||||||
|
callback?: (error: Error | null, bytes: number) => void,
|
||||||
|
): void;
|
||||||
|
send(
|
||||||
|
msg: string | NodeJS.ArrayBufferView,
|
||||||
|
offset: number,
|
||||||
|
length: number,
|
||||||
|
port?: number,
|
||||||
|
address?: string,
|
||||||
|
callback?: (error: Error | null, bytes: number) => void,
|
||||||
|
): void;
|
||||||
|
send(
|
||||||
|
msg: string | NodeJS.ArrayBufferView,
|
||||||
|
offset: number,
|
||||||
|
length: number,
|
||||||
|
port?: number,
|
||||||
|
callback?: (error: Error | null, bytes: number) => void,
|
||||||
|
): void;
|
||||||
|
send(
|
||||||
|
msg: string | NodeJS.ArrayBufferView,
|
||||||
|
offset: number,
|
||||||
|
length: number,
|
||||||
|
callback?: (error: Error | null, bytes: number) => void,
|
||||||
|
): void;
|
||||||
|
/**
|
||||||
|
* Sets or clears the `SO_BROADCAST` socket option. When set to `true`, UDP
|
||||||
|
* packets may be sent to a local interface's broadcast address.
|
||||||
|
*
|
||||||
|
* This method throws `EBADF` if called on an unbound socket.
|
||||||
|
* @since v0.6.9
|
||||||
|
*/
|
||||||
|
setBroadcast(flag: boolean): void;
|
||||||
|
/**
|
||||||
|
* _All references to scope in this section are referring to [IPv6 Zone Indices](https://en.wikipedia.org/wiki/IPv6_address#Scoped_literal_IPv6_addresses), which are defined by [RFC
|
||||||
|
* 4007](https://tools.ietf.org/html/rfc4007). In string form, an IP_
|
||||||
|
* _with a scope index is written as `'IP%scope'` where scope is an interface name_
|
||||||
|
* _or interface number._
|
||||||
|
*
|
||||||
|
* Sets the default outgoing multicast interface of the socket to a chosen
|
||||||
|
* interface or back to system interface selection. The `multicastInterface` must
|
||||||
|
* be a valid string representation of an IP from the socket's family.
|
||||||
|
*
|
||||||
|
* For IPv4 sockets, this should be the IP configured for the desired physical
|
||||||
|
* interface. All packets sent to multicast on the socket will be sent on the
|
||||||
|
* interface determined by the most recent successful use of this call.
|
||||||
|
*
|
||||||
|
* For IPv6 sockets, `multicastInterface` should include a scope to indicate the
|
||||||
|
* interface as in the examples that follow. In IPv6, individual `send` calls can
|
||||||
|
* also use explicit scope in addresses, so only packets sent to a multicast
|
||||||
|
* address without specifying an explicit scope are affected by the most recent
|
||||||
|
* successful use of this call.
|
||||||
|
*
|
||||||
|
* This method throws `EBADF` if called on an unbound socket.
|
||||||
|
*
|
||||||
|
* #### Example: IPv6 outgoing multicast interface
|
||||||
|
*
|
||||||
|
* On most systems, where scope format uses the interface name:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const socket = dgram.createSocket('udp6');
|
||||||
|
*
|
||||||
|
* socket.bind(1234, () => {
|
||||||
|
* socket.setMulticastInterface('::%eth1');
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* On Windows, where scope format uses an interface number:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const socket = dgram.createSocket('udp6');
|
||||||
|
*
|
||||||
|
* socket.bind(1234, () => {
|
||||||
|
* socket.setMulticastInterface('::%2');
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* #### Example: IPv4 outgoing multicast interface
|
||||||
|
*
|
||||||
|
* All systems use an IP of the host on the desired physical interface:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const socket = dgram.createSocket('udp4');
|
||||||
|
*
|
||||||
|
* socket.bind(1234, () => {
|
||||||
|
* socket.setMulticastInterface('10.0.0.2');
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v8.6.0
|
||||||
|
*/
|
||||||
|
setMulticastInterface(multicastInterface: string): void;
|
||||||
|
/**
|
||||||
|
* Sets or clears the `IP_MULTICAST_LOOP` socket option. When set to `true`,
|
||||||
|
* multicast packets will also be received on the local interface.
|
||||||
|
*
|
||||||
|
* This method throws `EBADF` if called on an unbound socket.
|
||||||
|
* @since v0.3.8
|
||||||
|
*/
|
||||||
|
setMulticastLoopback(flag: boolean): boolean;
|
||||||
|
/**
|
||||||
|
* Sets the `IP_MULTICAST_TTL` socket option. While TTL generally stands for
|
||||||
|
* "Time to Live", in this context it specifies the number of IP hops that a
|
||||||
|
* packet is allowed to travel through, specifically for multicast traffic. Each
|
||||||
|
* router or gateway that forwards a packet decrements the TTL. If the TTL is
|
||||||
|
* decremented to 0 by a router, it will not be forwarded.
|
||||||
|
*
|
||||||
|
* The `ttl` argument may be between 0 and 255\. The default on most systems is `1`.
|
||||||
|
*
|
||||||
|
* This method throws `EBADF` if called on an unbound socket.
|
||||||
|
* @since v0.3.8
|
||||||
|
*/
|
||||||
|
setMulticastTTL(ttl: number): number;
|
||||||
|
/**
|
||||||
|
* Sets the `SO_RCVBUF` socket option. Sets the maximum socket receive buffer
|
||||||
|
* in bytes.
|
||||||
|
*
|
||||||
|
* This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
|
||||||
|
* @since v8.7.0
|
||||||
|
*/
|
||||||
|
setRecvBufferSize(size: number): void;
|
||||||
|
/**
|
||||||
|
* Sets the `SO_SNDBUF` socket option. Sets the maximum socket send buffer
|
||||||
|
* in bytes.
|
||||||
|
*
|
||||||
|
* This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
|
||||||
|
* @since v8.7.0
|
||||||
|
*/
|
||||||
|
setSendBufferSize(size: number): void;
|
||||||
|
/**
|
||||||
|
* Sets the `IP_TTL` socket option. While TTL generally stands for "Time to Live",
|
||||||
|
* in this context it specifies the number of IP hops that a packet is allowed to
|
||||||
|
* travel through. Each router or gateway that forwards a packet decrements the
|
||||||
|
* TTL. If the TTL is decremented to 0 by a router, it will not be forwarded.
|
||||||
|
* Changing TTL values is typically done for network probes or when multicasting.
|
||||||
|
*
|
||||||
|
* The `ttl` argument may be between 1 and 255\. The default on most systems
|
||||||
|
* is 64.
|
||||||
|
*
|
||||||
|
* This method throws `EBADF` if called on an unbound socket.
|
||||||
|
* @since v0.1.101
|
||||||
|
*/
|
||||||
|
setTTL(ttl: number): number;
|
||||||
|
/**
|
||||||
|
* By default, binding a socket will cause it to block the Node.js process from
|
||||||
|
* exiting as long as the socket is open. The `socket.unref()` method can be used
|
||||||
|
* to exclude the socket from the reference counting that keeps the Node.js
|
||||||
|
* process active, allowing the process to exit even if the socket is still
|
||||||
|
* listening.
|
||||||
|
*
|
||||||
|
* Calling `socket.unref()` multiple times will have no additional effect.
|
||||||
|
*
|
||||||
|
* The `socket.unref()` method returns a reference to the socket so calls can be
|
||||||
|
* chained.
|
||||||
|
* @since v0.9.1
|
||||||
|
*/
|
||||||
|
unref(): this;
|
||||||
|
/**
|
||||||
|
* Tells the kernel to join a source-specific multicast channel at the given `sourceAddress` and `groupAddress`, using the `multicastInterface` with the `IP_ADD_SOURCE_MEMBERSHIP` socket
|
||||||
|
* option. If the `multicastInterface` argument
|
||||||
|
* is not specified, the operating system will choose one interface and will add
|
||||||
|
* membership to it. To add membership to every available interface, call `socket.addSourceSpecificMembership()` multiple times, once per interface.
|
||||||
|
*
|
||||||
|
* When called on an unbound socket, this method will implicitly bind to a random
|
||||||
|
* port, listening on all interfaces.
|
||||||
|
* @since v13.1.0, v12.16.0
|
||||||
|
*/
|
||||||
|
addSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
|
||||||
|
/**
|
||||||
|
* Instructs the kernel to leave a source-specific multicast channel at the given `sourceAddress` and `groupAddress` using the `IP_DROP_SOURCE_MEMBERSHIP` socket option. This method is
|
||||||
|
* automatically called by the kernel when the
|
||||||
|
* socket is closed or the process terminates, so most apps will never have
|
||||||
|
* reason to call this.
|
||||||
|
*
|
||||||
|
* If `multicastInterface` is not specified, the operating system will attempt to
|
||||||
|
* drop membership on all valid interfaces.
|
||||||
|
* @since v13.1.0, v12.16.0
|
||||||
|
*/
|
||||||
|
dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
|
||||||
|
/**
|
||||||
|
* events.EventEmitter
|
||||||
|
* 1. close
|
||||||
|
* 2. connect
|
||||||
|
* 3. error
|
||||||
|
* 4. listening
|
||||||
|
* 5. message
|
||||||
|
*/
|
||||||
|
addListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
addListener(event: "close", listener: () => void): this;
|
||||||
|
addListener(event: "connect", listener: () => void): this;
|
||||||
|
addListener(event: "error", listener: (err: Error) => void): this;
|
||||||
|
addListener(event: "listening", listener: () => void): this;
|
||||||
|
addListener(event: "message", listener: (msg: NonSharedBuffer, rinfo: RemoteInfo) => void): this;
|
||||||
|
emit(event: string | symbol, ...args: any[]): boolean;
|
||||||
|
emit(event: "close"): boolean;
|
||||||
|
emit(event: "connect"): boolean;
|
||||||
|
emit(event: "error", err: Error): boolean;
|
||||||
|
emit(event: "listening"): boolean;
|
||||||
|
emit(event: "message", msg: NonSharedBuffer, rinfo: RemoteInfo): boolean;
|
||||||
|
on(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
on(event: "close", listener: () => void): this;
|
||||||
|
on(event: "connect", listener: () => void): this;
|
||||||
|
on(event: "error", listener: (err: Error) => void): this;
|
||||||
|
on(event: "listening", listener: () => void): this;
|
||||||
|
on(event: "message", listener: (msg: NonSharedBuffer, rinfo: RemoteInfo) => void): this;
|
||||||
|
once(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
once(event: "close", listener: () => void): this;
|
||||||
|
once(event: "connect", listener: () => void): this;
|
||||||
|
once(event: "error", listener: (err: Error) => void): this;
|
||||||
|
once(event: "listening", listener: () => void): this;
|
||||||
|
once(event: "message", listener: (msg: NonSharedBuffer, rinfo: RemoteInfo) => void): this;
|
||||||
|
prependListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
prependListener(event: "close", listener: () => void): this;
|
||||||
|
prependListener(event: "connect", listener: () => void): this;
|
||||||
|
prependListener(event: "error", listener: (err: Error) => void): this;
|
||||||
|
prependListener(event: "listening", listener: () => void): this;
|
||||||
|
prependListener(event: "message", listener: (msg: NonSharedBuffer, rinfo: RemoteInfo) => void): this;
|
||||||
|
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
prependOnceListener(event: "close", listener: () => void): this;
|
||||||
|
prependOnceListener(event: "connect", listener: () => void): this;
|
||||||
|
prependOnceListener(event: "error", listener: (err: Error) => void): this;
|
||||||
|
prependOnceListener(event: "listening", listener: () => void): this;
|
||||||
|
prependOnceListener(event: "message", listener: (msg: NonSharedBuffer, rinfo: RemoteInfo) => void): this;
|
||||||
|
/**
|
||||||
|
* Calls `socket.close()` and returns a promise that fulfills when the socket has closed.
|
||||||
|
* @since v20.5.0
|
||||||
|
*/
|
||||||
|
[Symbol.asyncDispose](): Promise<void>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
declare module "node:dgram" {
|
||||||
|
export * from "dgram";
|
||||||
|
}
|
||||||
576
node_modules/@types/node/diagnostics_channel.d.ts
generated
vendored
Normal file
576
node_modules/@types/node/diagnostics_channel.d.ts
generated
vendored
Normal file
@@ -0,0 +1,576 @@
|
|||||||
|
/**
|
||||||
|
* The `node:diagnostics_channel` module provides an API to create named channels
|
||||||
|
* to report arbitrary message data for diagnostics purposes.
|
||||||
|
*
|
||||||
|
* It can be accessed using:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* It is intended that a module writer wanting to report diagnostics messages
|
||||||
|
* will create one or many top-level channels to report messages through.
|
||||||
|
* Channels may also be acquired at runtime but it is not encouraged
|
||||||
|
* due to the additional overhead of doing so. Channels may be exported for
|
||||||
|
* convenience, but as long as the name is known it can be acquired anywhere.
|
||||||
|
*
|
||||||
|
* If you intend for your module to produce diagnostics data for others to
|
||||||
|
* consume it is recommended that you include documentation of what named
|
||||||
|
* channels are used along with the shape of the message data. Channel names
|
||||||
|
* should generally include the module name to avoid collisions with data from
|
||||||
|
* other modules.
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/diagnostics_channel.js)
|
||||||
|
*/
|
||||||
|
declare module "diagnostics_channel" {
|
||||||
|
import { AsyncLocalStorage } from "node:async_hooks";
|
||||||
|
/**
|
||||||
|
* Check if there are active subscribers to the named channel. This is helpful if
|
||||||
|
* the message you want to send might be expensive to prepare.
|
||||||
|
*
|
||||||
|
* This API is optional but helpful when trying to publish messages from very
|
||||||
|
* performance-sensitive code.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* if (diagnostics_channel.hasSubscribers('my-channel')) {
|
||||||
|
* // There are subscribers, prepare and publish message
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
* @param name The channel name
|
||||||
|
* @return If there are active subscribers
|
||||||
|
*/
|
||||||
|
function hasSubscribers(name: string | symbol): boolean;
|
||||||
|
/**
|
||||||
|
* This is the primary entry-point for anyone wanting to publish to a named
|
||||||
|
* channel. It produces a channel object which is optimized to reduce overhead at
|
||||||
|
* publish time as much as possible.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channel = diagnostics_channel.channel('my-channel');
|
||||||
|
* ```
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
* @param name The channel name
|
||||||
|
* @return The named channel object
|
||||||
|
*/
|
||||||
|
function channel(name: string | symbol): Channel;
|
||||||
|
type ChannelListener = (message: unknown, name: string | symbol) => void;
|
||||||
|
/**
|
||||||
|
* Register a message handler to subscribe to this channel. This message handler
|
||||||
|
* will be run synchronously whenever a message is published to the channel. Any
|
||||||
|
* errors thrown in the message handler will trigger an `'uncaughtException'`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* diagnostics_channel.subscribe('my-channel', (message, name) => {
|
||||||
|
* // Received data
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v18.7.0, v16.17.0
|
||||||
|
* @param name The channel name
|
||||||
|
* @param onMessage The handler to receive channel messages
|
||||||
|
*/
|
||||||
|
function subscribe(name: string | symbol, onMessage: ChannelListener): void;
|
||||||
|
/**
|
||||||
|
* Remove a message handler previously registered to this channel with {@link subscribe}.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* function onMessage(message, name) {
|
||||||
|
* // Received data
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* diagnostics_channel.subscribe('my-channel', onMessage);
|
||||||
|
*
|
||||||
|
* diagnostics_channel.unsubscribe('my-channel', onMessage);
|
||||||
|
* ```
|
||||||
|
* @since v18.7.0, v16.17.0
|
||||||
|
* @param name The channel name
|
||||||
|
* @param onMessage The previous subscribed handler to remove
|
||||||
|
* @return `true` if the handler was found, `false` otherwise.
|
||||||
|
*/
|
||||||
|
function unsubscribe(name: string | symbol, onMessage: ChannelListener): boolean;
|
||||||
|
/**
|
||||||
|
* Creates a `TracingChannel` wrapper for the given `TracingChannel Channels`. If a name is given, the corresponding tracing
|
||||||
|
* channels will be created in the form of `tracing:${name}:${eventType}` where `eventType` corresponds to the types of `TracingChannel Channels`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channelsByName = diagnostics_channel.tracingChannel('my-channel');
|
||||||
|
*
|
||||||
|
* // or...
|
||||||
|
*
|
||||||
|
* const channelsByCollection = diagnostics_channel.tracingChannel({
|
||||||
|
* start: diagnostics_channel.channel('tracing:my-channel:start'),
|
||||||
|
* end: diagnostics_channel.channel('tracing:my-channel:end'),
|
||||||
|
* asyncStart: diagnostics_channel.channel('tracing:my-channel:asyncStart'),
|
||||||
|
* asyncEnd: diagnostics_channel.channel('tracing:my-channel:asyncEnd'),
|
||||||
|
* error: diagnostics_channel.channel('tracing:my-channel:error'),
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
* @param nameOrChannels Channel name or object containing all the `TracingChannel Channels`
|
||||||
|
* @return Collection of channels to trace with
|
||||||
|
*/
|
||||||
|
function tracingChannel<
|
||||||
|
StoreType = unknown,
|
||||||
|
ContextType extends object = StoreType extends object ? StoreType : object,
|
||||||
|
>(
|
||||||
|
nameOrChannels: string | TracingChannelCollection<StoreType, ContextType>,
|
||||||
|
): TracingChannel<StoreType, ContextType>;
|
||||||
|
/**
|
||||||
|
* The class `Channel` represents an individual named channel within the data
|
||||||
|
* pipeline. It is used to track subscribers and to publish messages when there
|
||||||
|
* are subscribers present. It exists as a separate object to avoid channel
|
||||||
|
* lookups at publish time, enabling very fast publish speeds and allowing
|
||||||
|
* for heavy use while incurring very minimal cost. Channels are created with {@link channel}, constructing a channel directly
|
||||||
|
* with `new Channel(name)` is not supported.
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
*/
|
||||||
|
class Channel<StoreType = unknown, ContextType = StoreType> {
|
||||||
|
readonly name: string | symbol;
|
||||||
|
/**
|
||||||
|
* Check if there are active subscribers to this channel. This is helpful if
|
||||||
|
* the message you want to send might be expensive to prepare.
|
||||||
|
*
|
||||||
|
* This API is optional but helpful when trying to publish messages from very
|
||||||
|
* performance-sensitive code.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channel = diagnostics_channel.channel('my-channel');
|
||||||
|
*
|
||||||
|
* if (channel.hasSubscribers) {
|
||||||
|
* // There are subscribers, prepare and publish message
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
*/
|
||||||
|
readonly hasSubscribers: boolean;
|
||||||
|
private constructor(name: string | symbol);
|
||||||
|
/**
|
||||||
|
* Publish a message to any subscribers to the channel. This will trigger
|
||||||
|
* message handlers synchronously so they will execute within the same context.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channel = diagnostics_channel.channel('my-channel');
|
||||||
|
*
|
||||||
|
* channel.publish({
|
||||||
|
* some: 'message',
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
* @param message The message to send to the channel subscribers
|
||||||
|
*/
|
||||||
|
publish(message: unknown): void;
|
||||||
|
/**
|
||||||
|
* Register a message handler to subscribe to this channel. This message handler
|
||||||
|
* will be run synchronously whenever a message is published to the channel. Any
|
||||||
|
* errors thrown in the message handler will trigger an `'uncaughtException'`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channel = diagnostics_channel.channel('my-channel');
|
||||||
|
*
|
||||||
|
* channel.subscribe((message, name) => {
|
||||||
|
* // Received data
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
* @param onMessage The handler to receive channel messages
|
||||||
|
*/
|
||||||
|
subscribe(onMessage: ChannelListener): void;
|
||||||
|
/**
|
||||||
|
* Remove a message handler previously registered to this channel with `channel.subscribe(onMessage)`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channel = diagnostics_channel.channel('my-channel');
|
||||||
|
*
|
||||||
|
* function onMessage(message, name) {
|
||||||
|
* // Received data
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* channel.subscribe(onMessage);
|
||||||
|
*
|
||||||
|
* channel.unsubscribe(onMessage);
|
||||||
|
* ```
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
* @param onMessage The previous subscribed handler to remove
|
||||||
|
* @return `true` if the handler was found, `false` otherwise.
|
||||||
|
*/
|
||||||
|
unsubscribe(onMessage: ChannelListener): void;
|
||||||
|
/**
|
||||||
|
* When `channel.runStores(context, ...)` is called, the given context data
|
||||||
|
* will be applied to any store bound to the channel. If the store has already been
|
||||||
|
* bound the previous `transform` function will be replaced with the new one.
|
||||||
|
* The `transform` function may be omitted to set the given context data as the
|
||||||
|
* context directly.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
* import { AsyncLocalStorage } from 'node:async_hooks';
|
||||||
|
*
|
||||||
|
* const store = new AsyncLocalStorage();
|
||||||
|
*
|
||||||
|
* const channel = diagnostics_channel.channel('my-channel');
|
||||||
|
*
|
||||||
|
* channel.bindStore(store, (data) => {
|
||||||
|
* return { data };
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
* @param store The store to which to bind the context data
|
||||||
|
* @param transform Transform context data before setting the store context
|
||||||
|
*/
|
||||||
|
bindStore(store: AsyncLocalStorage<StoreType>, transform?: (context: ContextType) => StoreType): void;
|
||||||
|
/**
|
||||||
|
* Remove a message handler previously registered to this channel with `channel.bindStore(store)`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
* import { AsyncLocalStorage } from 'node:async_hooks';
|
||||||
|
*
|
||||||
|
* const store = new AsyncLocalStorage();
|
||||||
|
*
|
||||||
|
* const channel = diagnostics_channel.channel('my-channel');
|
||||||
|
*
|
||||||
|
* channel.bindStore(store);
|
||||||
|
* channel.unbindStore(store);
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
* @param store The store to unbind from the channel.
|
||||||
|
* @return `true` if the store was found, `false` otherwise.
|
||||||
|
*/
|
||||||
|
unbindStore(store: AsyncLocalStorage<StoreType>): boolean;
|
||||||
|
/**
|
||||||
|
* Applies the given data to any AsyncLocalStorage instances bound to the channel
|
||||||
|
* for the duration of the given function, then publishes to the channel within
|
||||||
|
* the scope of that data is applied to the stores.
|
||||||
|
*
|
||||||
|
* If a transform function was given to `channel.bindStore(store)` it will be
|
||||||
|
* applied to transform the message data before it becomes the context value for
|
||||||
|
* the store. The prior storage context is accessible from within the transform
|
||||||
|
* function in cases where context linking is required.
|
||||||
|
*
|
||||||
|
* The context applied to the store should be accessible in any async code which
|
||||||
|
* continues from execution which began during the given function, however
|
||||||
|
* there are some situations in which `context loss` may occur.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
* import { AsyncLocalStorage } from 'node:async_hooks';
|
||||||
|
*
|
||||||
|
* const store = new AsyncLocalStorage();
|
||||||
|
*
|
||||||
|
* const channel = diagnostics_channel.channel('my-channel');
|
||||||
|
*
|
||||||
|
* channel.bindStore(store, (message) => {
|
||||||
|
* const parent = store.getStore();
|
||||||
|
* return new Span(message, parent);
|
||||||
|
* });
|
||||||
|
* channel.runStores({ some: 'message' }, () => {
|
||||||
|
* store.getStore(); // Span({ some: 'message' })
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
* @param context Message to send to subscribers and bind to stores
|
||||||
|
* @param fn Handler to run within the entered storage context
|
||||||
|
* @param thisArg The receiver to be used for the function call.
|
||||||
|
* @param args Optional arguments to pass to the function.
|
||||||
|
*/
|
||||||
|
runStores<ThisArg = any, Args extends any[] = any[], Result = any>(
|
||||||
|
context: ContextType,
|
||||||
|
fn: (this: ThisArg, ...args: Args) => Result,
|
||||||
|
thisArg?: ThisArg,
|
||||||
|
...args: Args
|
||||||
|
): Result;
|
||||||
|
}
|
||||||
|
interface TracingChannelSubscribers<ContextType extends object> {
|
||||||
|
start: (message: ContextType) => void;
|
||||||
|
end: (
|
||||||
|
message: ContextType & {
|
||||||
|
error?: unknown;
|
||||||
|
result?: unknown;
|
||||||
|
},
|
||||||
|
) => void;
|
||||||
|
asyncStart: (
|
||||||
|
message: ContextType & {
|
||||||
|
error?: unknown;
|
||||||
|
result?: unknown;
|
||||||
|
},
|
||||||
|
) => void;
|
||||||
|
asyncEnd: (
|
||||||
|
message: ContextType & {
|
||||||
|
error?: unknown;
|
||||||
|
result?: unknown;
|
||||||
|
},
|
||||||
|
) => void;
|
||||||
|
error: (
|
||||||
|
message: ContextType & {
|
||||||
|
error: unknown;
|
||||||
|
},
|
||||||
|
) => void;
|
||||||
|
}
|
||||||
|
interface TracingChannelCollection<StoreType = unknown, ContextType = StoreType> {
|
||||||
|
start: Channel<StoreType, ContextType>;
|
||||||
|
end: Channel<StoreType, ContextType>;
|
||||||
|
asyncStart: Channel<StoreType, ContextType>;
|
||||||
|
asyncEnd: Channel<StoreType, ContextType>;
|
||||||
|
error: Channel<StoreType, ContextType>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* The class `TracingChannel` is a collection of `TracingChannel Channels` which
|
||||||
|
* together express a single traceable action. It is used to formalize and
|
||||||
|
* simplify the process of producing events for tracing application flow. {@link tracingChannel} is used to construct a `TracingChannel`. As with `Channel` it is recommended to create and reuse a
|
||||||
|
* single `TracingChannel` at the top-level of the file rather than creating them
|
||||||
|
* dynamically.
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
class TracingChannel<StoreType = unknown, ContextType extends object = {}> implements TracingChannelCollection {
|
||||||
|
start: Channel<StoreType, ContextType>;
|
||||||
|
end: Channel<StoreType, ContextType>;
|
||||||
|
asyncStart: Channel<StoreType, ContextType>;
|
||||||
|
asyncEnd: Channel<StoreType, ContextType>;
|
||||||
|
error: Channel<StoreType, ContextType>;
|
||||||
|
/**
|
||||||
|
* Helper to subscribe a collection of functions to the corresponding channels.
|
||||||
|
* This is the same as calling `channel.subscribe(onMessage)` on each channel
|
||||||
|
* individually.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channels = diagnostics_channel.tracingChannel('my-channel');
|
||||||
|
*
|
||||||
|
* channels.subscribe({
|
||||||
|
* start(message) {
|
||||||
|
* // Handle start message
|
||||||
|
* },
|
||||||
|
* end(message) {
|
||||||
|
* // Handle end message
|
||||||
|
* },
|
||||||
|
* asyncStart(message) {
|
||||||
|
* // Handle asyncStart message
|
||||||
|
* },
|
||||||
|
* asyncEnd(message) {
|
||||||
|
* // Handle asyncEnd message
|
||||||
|
* },
|
||||||
|
* error(message) {
|
||||||
|
* // Handle error message
|
||||||
|
* },
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
* @param subscribers Set of `TracingChannel Channels` subscribers
|
||||||
|
*/
|
||||||
|
subscribe(subscribers: TracingChannelSubscribers<ContextType>): void;
|
||||||
|
/**
|
||||||
|
* Helper to unsubscribe a collection of functions from the corresponding channels.
|
||||||
|
* This is the same as calling `channel.unsubscribe(onMessage)` on each channel
|
||||||
|
* individually.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channels = diagnostics_channel.tracingChannel('my-channel');
|
||||||
|
*
|
||||||
|
* channels.unsubscribe({
|
||||||
|
* start(message) {
|
||||||
|
* // Handle start message
|
||||||
|
* },
|
||||||
|
* end(message) {
|
||||||
|
* // Handle end message
|
||||||
|
* },
|
||||||
|
* asyncStart(message) {
|
||||||
|
* // Handle asyncStart message
|
||||||
|
* },
|
||||||
|
* asyncEnd(message) {
|
||||||
|
* // Handle asyncEnd message
|
||||||
|
* },
|
||||||
|
* error(message) {
|
||||||
|
* // Handle error message
|
||||||
|
* },
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
* @param subscribers Set of `TracingChannel Channels` subscribers
|
||||||
|
* @return `true` if all handlers were successfully unsubscribed, and `false` otherwise.
|
||||||
|
*/
|
||||||
|
unsubscribe(subscribers: TracingChannelSubscribers<ContextType>): void;
|
||||||
|
/**
|
||||||
|
* Trace a synchronous function call. This will always produce a `start event` and `end event` around the execution and may produce an `error event` if the given function throws an error.
|
||||||
|
* This will run the given function using `channel.runStores(context, ...)` on the `start` channel which ensures all
|
||||||
|
* events should have any bound stores set to match this trace context.
|
||||||
|
*
|
||||||
|
* To ensure only correct trace graphs are formed, events will only be published if subscribers are present prior to starting the trace. Subscriptions
|
||||||
|
* which are added after the trace begins will not receive future events from that trace, only future traces will be seen.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channels = diagnostics_channel.tracingChannel('my-channel');
|
||||||
|
*
|
||||||
|
* channels.traceSync(() => {
|
||||||
|
* // Do something
|
||||||
|
* }, {
|
||||||
|
* some: 'thing',
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
* @param fn Function to wrap a trace around
|
||||||
|
* @param context Shared object to correlate events through
|
||||||
|
* @param thisArg The receiver to be used for the function call
|
||||||
|
* @param args Optional arguments to pass to the function
|
||||||
|
* @return The return value of the given function
|
||||||
|
*/
|
||||||
|
traceSync<ThisArg = any, Args extends any[] = any[], Result = any>(
|
||||||
|
fn: (this: ThisArg, ...args: Args) => Result,
|
||||||
|
context?: ContextType,
|
||||||
|
thisArg?: ThisArg,
|
||||||
|
...args: Args
|
||||||
|
): Result;
|
||||||
|
/**
|
||||||
|
* Trace a promise-returning function call. This will always produce a `start event` and `end event` around the synchronous portion of the
|
||||||
|
* function execution, and will produce an `asyncStart event` and `asyncEnd event` when a promise continuation is reached. It may also
|
||||||
|
* produce an `error event` if the given function throws an error or the
|
||||||
|
* returned promise rejects. This will run the given function using `channel.runStores(context, ...)` on the `start` channel which ensures all
|
||||||
|
* events should have any bound stores set to match this trace context.
|
||||||
|
*
|
||||||
|
* To ensure only correct trace graphs are formed, events will only be published if subscribers are present prior to starting the trace. Subscriptions
|
||||||
|
* which are added after the trace begins will not receive future events from that trace, only future traces will be seen.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channels = diagnostics_channel.tracingChannel('my-channel');
|
||||||
|
*
|
||||||
|
* channels.tracePromise(async () => {
|
||||||
|
* // Do something
|
||||||
|
* }, {
|
||||||
|
* some: 'thing',
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
* @param fn Promise-returning function to wrap a trace around
|
||||||
|
* @param context Shared object to correlate trace events through
|
||||||
|
* @param thisArg The receiver to be used for the function call
|
||||||
|
* @param args Optional arguments to pass to the function
|
||||||
|
* @return Chained from promise returned by the given function
|
||||||
|
*/
|
||||||
|
tracePromise<ThisArg = any, Args extends any[] = any[], Result = any>(
|
||||||
|
fn: (this: ThisArg, ...args: Args) => Promise<Result>,
|
||||||
|
context?: ContextType,
|
||||||
|
thisArg?: ThisArg,
|
||||||
|
...args: Args
|
||||||
|
): Promise<Result>;
|
||||||
|
/**
|
||||||
|
* Trace a callback-receiving function call. This will always produce a `start event` and `end event` around the synchronous portion of the
|
||||||
|
* function execution, and will produce a `asyncStart event` and `asyncEnd event` around the callback execution. It may also produce an `error event` if the given function throws an error or
|
||||||
|
* the returned
|
||||||
|
* promise rejects. This will run the given function using `channel.runStores(context, ...)` on the `start` channel which ensures all
|
||||||
|
* events should have any bound stores set to match this trace context.
|
||||||
|
*
|
||||||
|
* The `position` will be -1 by default to indicate the final argument should
|
||||||
|
* be used as the callback.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
*
|
||||||
|
* const channels = diagnostics_channel.tracingChannel('my-channel');
|
||||||
|
*
|
||||||
|
* channels.traceCallback((arg1, callback) => {
|
||||||
|
* // Do something
|
||||||
|
* callback(null, 'result');
|
||||||
|
* }, 1, {
|
||||||
|
* some: 'thing',
|
||||||
|
* }, thisArg, arg1, callback);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The callback will also be run with `channel.runStores(context, ...)` which
|
||||||
|
* enables context loss recovery in some cases.
|
||||||
|
*
|
||||||
|
* To ensure only correct trace graphs are formed, events will only be published if subscribers are present prior to starting the trace. Subscriptions
|
||||||
|
* which are added after the trace begins will not receive future events from that trace, only future traces will be seen.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import diagnostics_channel from 'node:diagnostics_channel';
|
||||||
|
* import { AsyncLocalStorage } from 'node:async_hooks';
|
||||||
|
*
|
||||||
|
* const channels = diagnostics_channel.tracingChannel('my-channel');
|
||||||
|
* const myStore = new AsyncLocalStorage();
|
||||||
|
*
|
||||||
|
* // The start channel sets the initial store data to something
|
||||||
|
* // and stores that store data value on the trace context object
|
||||||
|
* channels.start.bindStore(myStore, (data) => {
|
||||||
|
* const span = new Span(data);
|
||||||
|
* data.span = span;
|
||||||
|
* return span;
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* // Then asyncStart can restore from that data it stored previously
|
||||||
|
* channels.asyncStart.bindStore(myStore, (data) => {
|
||||||
|
* return data.span;
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
* @experimental
|
||||||
|
* @param fn callback using function to wrap a trace around
|
||||||
|
* @param position Zero-indexed argument position of expected callback
|
||||||
|
* @param context Shared object to correlate trace events through
|
||||||
|
* @param thisArg The receiver to be used for the function call
|
||||||
|
* @param args Optional arguments to pass to the function
|
||||||
|
* @return The return value of the given function
|
||||||
|
*/
|
||||||
|
traceCallback<ThisArg = any, Args extends any[] = any[], Result = any>(
|
||||||
|
fn: (this: ThisArg, ...args: Args) => Result,
|
||||||
|
position?: number,
|
||||||
|
context?: ContextType,
|
||||||
|
thisArg?: ThisArg,
|
||||||
|
...args: Args
|
||||||
|
): Result;
|
||||||
|
/**
|
||||||
|
* `true` if any of the individual channels has a subscriber, `false` if not.
|
||||||
|
*
|
||||||
|
* This is a helper method available on a {@link TracingChannel} instance to check
|
||||||
|
* if any of the [TracingChannel Channels](https://nodejs.org/api/diagnostics_channel.html#tracingchannel-channels) have subscribers.
|
||||||
|
* A `true` is returned if any of them have at least one subscriber, a `false` is returned otherwise.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const diagnostics_channel = require('node:diagnostics_channel');
|
||||||
|
*
|
||||||
|
* const channels = diagnostics_channel.tracingChannel('my-channel');
|
||||||
|
*
|
||||||
|
* if (channels.hasSubscribers) {
|
||||||
|
* // Do something
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v22.0.0, v20.13.0
|
||||||
|
*/
|
||||||
|
readonly hasSubscribers: boolean;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
declare module "node:diagnostics_channel" {
|
||||||
|
export * from "diagnostics_channel";
|
||||||
|
}
|
||||||
923
node_modules/@types/node/dns.d.ts
generated
vendored
Normal file
923
node_modules/@types/node/dns.d.ts
generated
vendored
Normal file
@@ -0,0 +1,923 @@
|
|||||||
|
/**
|
||||||
|
* The `node:dns` module enables name resolution. For example, use it to look up IP
|
||||||
|
* addresses of host names.
|
||||||
|
*
|
||||||
|
* Although named for the [Domain Name System (DNS)](https://en.wikipedia.org/wiki/Domain_Name_System), it does not always use the
|
||||||
|
* DNS protocol for lookups. {@link lookup} uses the operating system
|
||||||
|
* facilities to perform name resolution. It may not need to perform any network
|
||||||
|
* communication. To perform name resolution the way other applications on the same
|
||||||
|
* system do, use {@link lookup}.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dns from 'node:dns';
|
||||||
|
*
|
||||||
|
* dns.lookup('example.org', (err, address, family) => {
|
||||||
|
* console.log('address: %j family: IPv%s', address, family);
|
||||||
|
* });
|
||||||
|
* // address: "93.184.216.34" family: IPv4
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* All other functions in the `node:dns` module connect to an actual DNS server to
|
||||||
|
* perform name resolution. They will always use the network to perform DNS
|
||||||
|
* queries. These functions do not use the same set of configuration files used by {@link lookup} (e.g. `/etc/hosts`). Use these functions to always perform
|
||||||
|
* DNS queries, bypassing other name-resolution facilities.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dns from 'node:dns';
|
||||||
|
*
|
||||||
|
* dns.resolve4('archive.org', (err, addresses) => {
|
||||||
|
* if (err) throw err;
|
||||||
|
*
|
||||||
|
* console.log(`addresses: ${JSON.stringify(addresses)}`);
|
||||||
|
*
|
||||||
|
* addresses.forEach((a) => {
|
||||||
|
* dns.reverse(a, (err, hostnames) => {
|
||||||
|
* if (err) {
|
||||||
|
* throw err;
|
||||||
|
* }
|
||||||
|
* console.log(`reverse for ${a}: ${JSON.stringify(hostnames)}`);
|
||||||
|
* });
|
||||||
|
* });
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* See the [Implementation considerations section](https://nodejs.org/docs/latest-v24.x/api/dns.html#implementation-considerations) for more information.
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/dns.js)
|
||||||
|
*/
|
||||||
|
declare module "dns" {
|
||||||
|
import * as dnsPromises from "node:dns/promises";
|
||||||
|
// Supported getaddrinfo flags.
|
||||||
|
/**
|
||||||
|
* Limits returned address types to the types of non-loopback addresses configured on the system. For example, IPv4 addresses are
|
||||||
|
* only returned if the current system has at least one IPv4 address configured.
|
||||||
|
*/
|
||||||
|
export const ADDRCONFIG: number;
|
||||||
|
/**
|
||||||
|
* If the IPv6 family was specified, but no IPv6 addresses were found, then return IPv4 mapped IPv6 addresses. It is not supported
|
||||||
|
* on some operating systems (e.g. FreeBSD 10.1).
|
||||||
|
*/
|
||||||
|
export const V4MAPPED: number;
|
||||||
|
/**
|
||||||
|
* If `dns.V4MAPPED` is specified, return resolved IPv6 addresses as
|
||||||
|
* well as IPv4 mapped IPv6 addresses.
|
||||||
|
*/
|
||||||
|
export const ALL: number;
|
||||||
|
export interface LookupOptions {
|
||||||
|
/**
|
||||||
|
* The record family. Must be `4`, `6`, or `0`. For backward compatibility reasons, `'IPv4'` and `'IPv6'` are interpreted
|
||||||
|
* as `4` and `6` respectively. The value 0 indicates that either an IPv4 or IPv6 address is returned. If the value `0` is used
|
||||||
|
* with `{ all: true } (see below)`, both IPv4 and IPv6 addresses are returned.
|
||||||
|
* @default 0
|
||||||
|
*/
|
||||||
|
family?: number | "IPv4" | "IPv6" | undefined;
|
||||||
|
/**
|
||||||
|
* One or more [supported `getaddrinfo`](https://nodejs.org/docs/latest-v24.x/api/dns.html#supported-getaddrinfo-flags) flags. Multiple flags may be
|
||||||
|
* passed by bitwise `OR`ing their values.
|
||||||
|
*/
|
||||||
|
hints?: number | undefined;
|
||||||
|
/**
|
||||||
|
* When `true`, the callback returns all resolved addresses in an array. Otherwise, returns a single address.
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
all?: boolean | undefined;
|
||||||
|
/**
|
||||||
|
* When `verbatim`, the resolved addresses are return unsorted. When `ipv4first`, the resolved addresses are sorted
|
||||||
|
* by placing IPv4 addresses before IPv6 addresses. When `ipv6first`, the resolved addresses are sorted by placing IPv6
|
||||||
|
* addresses before IPv4 addresses. Default value is configurable using
|
||||||
|
* {@link setDefaultResultOrder} or [`--dns-result-order`](https://nodejs.org/docs/latest-v24.x/api/cli.html#--dns-result-orderorder).
|
||||||
|
* @default `verbatim` (addresses are not reordered)
|
||||||
|
* @since v22.1.0
|
||||||
|
*/
|
||||||
|
order?: "ipv4first" | "ipv6first" | "verbatim" | undefined;
|
||||||
|
/**
|
||||||
|
* When `true`, the callback receives IPv4 and IPv6 addresses in the order the DNS resolver returned them. When `false`, IPv4
|
||||||
|
* addresses are placed before IPv6 addresses. This option will be deprecated in favor of `order`. When both are specified,
|
||||||
|
* `order` has higher precedence. New code should only use `order`. Default value is configurable using {@link setDefaultResultOrder}
|
||||||
|
* @default true (addresses are not reordered)
|
||||||
|
* @deprecated Please use `order` option
|
||||||
|
*/
|
||||||
|
verbatim?: boolean | undefined;
|
||||||
|
}
|
||||||
|
export interface LookupOneOptions extends LookupOptions {
|
||||||
|
all?: false | undefined;
|
||||||
|
}
|
||||||
|
export interface LookupAllOptions extends LookupOptions {
|
||||||
|
all: true;
|
||||||
|
}
|
||||||
|
export interface LookupAddress {
|
||||||
|
/**
|
||||||
|
* A string representation of an IPv4 or IPv6 address.
|
||||||
|
*/
|
||||||
|
address: string;
|
||||||
|
/**
|
||||||
|
* `4` or `6`, denoting the family of `address`, or `0` if the address is not an IPv4 or IPv6 address. `0` is a likely indicator of a
|
||||||
|
* bug in the name resolution service used by the operating system.
|
||||||
|
*/
|
||||||
|
family: number;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Resolves a host name (e.g. `'nodejs.org'`) into the first found A (IPv4) or
|
||||||
|
* AAAA (IPv6) record. All `option` properties are optional. If `options` is an
|
||||||
|
* integer, then it must be `4` or `6` – if `options` is `0` or not provided, then
|
||||||
|
* IPv4 and IPv6 addresses are both returned if found.
|
||||||
|
*
|
||||||
|
* With the `all` option set to `true`, the arguments for `callback` change to `(err, addresses)`, with `addresses` being an array of objects with the
|
||||||
|
* properties `address` and `family`.
|
||||||
|
*
|
||||||
|
* On error, `err` is an `Error` object, where `err.code` is the error code.
|
||||||
|
* Keep in mind that `err.code` will be set to `'ENOTFOUND'` not only when
|
||||||
|
* the host name does not exist but also when the lookup fails in other ways
|
||||||
|
* such as no available file descriptors.
|
||||||
|
*
|
||||||
|
* `dns.lookup()` does not necessarily have anything to do with the DNS protocol.
|
||||||
|
* The implementation uses an operating system facility that can associate names
|
||||||
|
* with addresses and vice versa. This implementation can have subtle but
|
||||||
|
* important consequences on the behavior of any Node.js program. Please take some
|
||||||
|
* time to consult the [Implementation considerations section](https://nodejs.org/docs/latest-v24.x/api/dns.html#implementation-considerations)
|
||||||
|
* before using `dns.lookup()`.
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dns from 'node:dns';
|
||||||
|
* const options = {
|
||||||
|
* family: 6,
|
||||||
|
* hints: dns.ADDRCONFIG | dns.V4MAPPED,
|
||||||
|
* };
|
||||||
|
* dns.lookup('example.com', options, (err, address, family) =>
|
||||||
|
* console.log('address: %j family: IPv%s', address, family));
|
||||||
|
* // address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6
|
||||||
|
*
|
||||||
|
* // When options.all is true, the result will be an Array.
|
||||||
|
* options.all = true;
|
||||||
|
* dns.lookup('example.com', options, (err, addresses) =>
|
||||||
|
* console.log('addresses: %j', addresses));
|
||||||
|
* // addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}]
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* If this method is invoked as its [util.promisify()](https://nodejs.org/docs/latest-v24.x/api/util.html#utilpromisifyoriginal) ed
|
||||||
|
* version, and `all` is not set to `true`, it returns a `Promise` for an `Object` with `address` and `family` properties.
|
||||||
|
* @since v0.1.90
|
||||||
|
*/
|
||||||
|
export function lookup(
|
||||||
|
hostname: string,
|
||||||
|
family: number,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void,
|
||||||
|
): void;
|
||||||
|
export function lookup(
|
||||||
|
hostname: string,
|
||||||
|
options: LookupOneOptions,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void,
|
||||||
|
): void;
|
||||||
|
export function lookup(
|
||||||
|
hostname: string,
|
||||||
|
options: LookupAllOptions,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void,
|
||||||
|
): void;
|
||||||
|
export function lookup(
|
||||||
|
hostname: string,
|
||||||
|
options: LookupOptions,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void,
|
||||||
|
): void;
|
||||||
|
export function lookup(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void,
|
||||||
|
): void;
|
||||||
|
export namespace lookup {
|
||||||
|
function __promisify__(hostname: string, options: LookupAllOptions): Promise<LookupAddress[]>;
|
||||||
|
function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise<LookupAddress>;
|
||||||
|
function __promisify__(hostname: string, options: LookupOptions): Promise<LookupAddress | LookupAddress[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Resolves the given `address` and `port` into a host name and service using
|
||||||
|
* the operating system's underlying `getnameinfo` implementation.
|
||||||
|
*
|
||||||
|
* If `address` is not a valid IP address, a `TypeError` will be thrown.
|
||||||
|
* The `port` will be coerced to a number. If it is not a legal port, a `TypeError` will be thrown.
|
||||||
|
*
|
||||||
|
* On an error, `err` is an [`Error`](https://nodejs.org/docs/latest-v24.x/api/errors.html#class-error) object,
|
||||||
|
* where `err.code` is the error code.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dns from 'node:dns';
|
||||||
|
* dns.lookupService('127.0.0.1', 22, (err, hostname, service) => {
|
||||||
|
* console.log(hostname, service);
|
||||||
|
* // Prints: localhost ssh
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* If this method is invoked as its [util.promisify()](https://nodejs.org/docs/latest-v24.x/api/util.html#utilpromisifyoriginal) ed
|
||||||
|
* version, it returns a `Promise` for an `Object` with `hostname` and `service` properties.
|
||||||
|
* @since v0.11.14
|
||||||
|
*/
|
||||||
|
export function lookupService(
|
||||||
|
address: string,
|
||||||
|
port: number,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, hostname: string, service: string) => void,
|
||||||
|
): void;
|
||||||
|
export namespace lookupService {
|
||||||
|
function __promisify__(
|
||||||
|
address: string,
|
||||||
|
port: number,
|
||||||
|
): Promise<{
|
||||||
|
hostname: string;
|
||||||
|
service: string;
|
||||||
|
}>;
|
||||||
|
}
|
||||||
|
export interface ResolveOptions {
|
||||||
|
ttl: boolean;
|
||||||
|
}
|
||||||
|
export interface ResolveWithTtlOptions extends ResolveOptions {
|
||||||
|
ttl: true;
|
||||||
|
}
|
||||||
|
export interface RecordWithTtl {
|
||||||
|
address: string;
|
||||||
|
ttl: number;
|
||||||
|
}
|
||||||
|
/** @deprecated Use `AnyARecord` or `AnyAaaaRecord` instead. */
|
||||||
|
export type AnyRecordWithTtl = AnyARecord | AnyAaaaRecord;
|
||||||
|
export interface AnyARecord extends RecordWithTtl {
|
||||||
|
type: "A";
|
||||||
|
}
|
||||||
|
export interface AnyAaaaRecord extends RecordWithTtl {
|
||||||
|
type: "AAAA";
|
||||||
|
}
|
||||||
|
export interface CaaRecord {
|
||||||
|
critical: number;
|
||||||
|
issue?: string | undefined;
|
||||||
|
issuewild?: string | undefined;
|
||||||
|
iodef?: string | undefined;
|
||||||
|
contactemail?: string | undefined;
|
||||||
|
contactphone?: string | undefined;
|
||||||
|
}
|
||||||
|
export interface AnyCaaRecord extends CaaRecord {
|
||||||
|
type: "CAA";
|
||||||
|
}
|
||||||
|
export interface MxRecord {
|
||||||
|
priority: number;
|
||||||
|
exchange: string;
|
||||||
|
}
|
||||||
|
export interface AnyMxRecord extends MxRecord {
|
||||||
|
type: "MX";
|
||||||
|
}
|
||||||
|
export interface NaptrRecord {
|
||||||
|
flags: string;
|
||||||
|
service: string;
|
||||||
|
regexp: string;
|
||||||
|
replacement: string;
|
||||||
|
order: number;
|
||||||
|
preference: number;
|
||||||
|
}
|
||||||
|
export interface AnyNaptrRecord extends NaptrRecord {
|
||||||
|
type: "NAPTR";
|
||||||
|
}
|
||||||
|
export interface SoaRecord {
|
||||||
|
nsname: string;
|
||||||
|
hostmaster: string;
|
||||||
|
serial: number;
|
||||||
|
refresh: number;
|
||||||
|
retry: number;
|
||||||
|
expire: number;
|
||||||
|
minttl: number;
|
||||||
|
}
|
||||||
|
export interface AnySoaRecord extends SoaRecord {
|
||||||
|
type: "SOA";
|
||||||
|
}
|
||||||
|
export interface SrvRecord {
|
||||||
|
priority: number;
|
||||||
|
weight: number;
|
||||||
|
port: number;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
export interface AnySrvRecord extends SrvRecord {
|
||||||
|
type: "SRV";
|
||||||
|
}
|
||||||
|
export interface TlsaRecord {
|
||||||
|
certUsage: number;
|
||||||
|
selector: number;
|
||||||
|
match: number;
|
||||||
|
data: ArrayBuffer;
|
||||||
|
}
|
||||||
|
export interface AnyTlsaRecord extends TlsaRecord {
|
||||||
|
type: "TLSA";
|
||||||
|
}
|
||||||
|
export interface AnyTxtRecord {
|
||||||
|
type: "TXT";
|
||||||
|
entries: string[];
|
||||||
|
}
|
||||||
|
export interface AnyNsRecord {
|
||||||
|
type: "NS";
|
||||||
|
value: string;
|
||||||
|
}
|
||||||
|
export interface AnyPtrRecord {
|
||||||
|
type: "PTR";
|
||||||
|
value: string;
|
||||||
|
}
|
||||||
|
export interface AnyCnameRecord {
|
||||||
|
type: "CNAME";
|
||||||
|
value: string;
|
||||||
|
}
|
||||||
|
export type AnyRecord =
|
||||||
|
| AnyARecord
|
||||||
|
| AnyAaaaRecord
|
||||||
|
| AnyCaaRecord
|
||||||
|
| AnyCnameRecord
|
||||||
|
| AnyMxRecord
|
||||||
|
| AnyNaptrRecord
|
||||||
|
| AnyNsRecord
|
||||||
|
| AnyPtrRecord
|
||||||
|
| AnySoaRecord
|
||||||
|
| AnySrvRecord
|
||||||
|
| AnyTlsaRecord
|
||||||
|
| AnyTxtRecord;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve a host name (e.g. `'nodejs.org'`) into an array
|
||||||
|
* of the resource records. The `callback` function has arguments `(err, records)`. When successful, `records` will be an array of resource
|
||||||
|
* records. The type and structure of individual results varies based on `rrtype`:
|
||||||
|
*
|
||||||
|
* <omitted>
|
||||||
|
*
|
||||||
|
* On error, `err` is an [`Error`](https://nodejs.org/docs/latest-v24.x/api/errors.html#class-error) object,
|
||||||
|
* where `err.code` is one of the `DNS error codes`.
|
||||||
|
* @since v0.1.27
|
||||||
|
* @param hostname Host name to resolve.
|
||||||
|
* @param [rrtype='A'] Resource record type.
|
||||||
|
*/
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: "A" | "AAAA" | "CNAME" | "NS" | "PTR",
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: "ANY",
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: "CAA",
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, address: CaaRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: "MX",
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: "NAPTR",
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: "SOA",
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: SoaRecord) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: "SRV",
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: "TLSA",
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: TlsaRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: "TXT",
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: string,
|
||||||
|
callback: (
|
||||||
|
err: NodeJS.ErrnoException | null,
|
||||||
|
addresses:
|
||||||
|
| string[]
|
||||||
|
| CaaRecord[]
|
||||||
|
| MxRecord[]
|
||||||
|
| NaptrRecord[]
|
||||||
|
| SoaRecord
|
||||||
|
| SrvRecord[]
|
||||||
|
| TlsaRecord[]
|
||||||
|
| string[][]
|
||||||
|
| AnyRecord[],
|
||||||
|
) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolve {
|
||||||
|
function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise<string[]>;
|
||||||
|
function __promisify__(hostname: string, rrtype: "ANY"): Promise<AnyRecord[]>;
|
||||||
|
function __promisify__(hostname: string, rrtype: "CAA"): Promise<CaaRecord[]>;
|
||||||
|
function __promisify__(hostname: string, rrtype: "MX"): Promise<MxRecord[]>;
|
||||||
|
function __promisify__(hostname: string, rrtype: "NAPTR"): Promise<NaptrRecord[]>;
|
||||||
|
function __promisify__(hostname: string, rrtype: "SOA"): Promise<SoaRecord>;
|
||||||
|
function __promisify__(hostname: string, rrtype: "SRV"): Promise<SrvRecord[]>;
|
||||||
|
function __promisify__(hostname: string, rrtype: "TLSA"): Promise<TlsaRecord[]>;
|
||||||
|
function __promisify__(hostname: string, rrtype: "TXT"): Promise<string[][]>;
|
||||||
|
function __promisify__(
|
||||||
|
hostname: string,
|
||||||
|
rrtype: string,
|
||||||
|
): Promise<
|
||||||
|
| string[]
|
||||||
|
| CaaRecord[]
|
||||||
|
| MxRecord[]
|
||||||
|
| NaptrRecord[]
|
||||||
|
| SoaRecord
|
||||||
|
| SrvRecord[]
|
||||||
|
| TlsaRecord[]
|
||||||
|
| string[][]
|
||||||
|
| AnyRecord[]
|
||||||
|
>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve a IPv4 addresses (`A` records) for the `hostname`. The `addresses` argument passed to the `callback` function
|
||||||
|
* will contain an array of IPv4 addresses (e.g.`['74.125.79.104', '74.125.79.105', '74.125.79.106']`).
|
||||||
|
* @since v0.1.16
|
||||||
|
* @param hostname Host name to resolve.
|
||||||
|
*/
|
||||||
|
export function resolve4(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve4(
|
||||||
|
hostname: string,
|
||||||
|
options: ResolveWithTtlOptions,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve4(
|
||||||
|
hostname: string,
|
||||||
|
options: ResolveOptions,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolve4 {
|
||||||
|
function __promisify__(hostname: string): Promise<string[]>;
|
||||||
|
function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
|
||||||
|
function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the `hostname`. The `addresses` argument passed to the `callback` function
|
||||||
|
* will contain an array of IPv6 addresses.
|
||||||
|
* @since v0.1.16
|
||||||
|
* @param hostname Host name to resolve.
|
||||||
|
*/
|
||||||
|
export function resolve6(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve6(
|
||||||
|
hostname: string,
|
||||||
|
options: ResolveWithTtlOptions,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void,
|
||||||
|
): void;
|
||||||
|
export function resolve6(
|
||||||
|
hostname: string,
|
||||||
|
options: ResolveOptions,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolve6 {
|
||||||
|
function __promisify__(hostname: string): Promise<string[]>;
|
||||||
|
function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
|
||||||
|
function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve `CNAME` records for the `hostname`. The `addresses` argument passed to the `callback` function
|
||||||
|
* will contain an array of canonical name records available for the `hostname` (e.g. `['bar.example.com']`).
|
||||||
|
* @since v0.3.2
|
||||||
|
*/
|
||||||
|
export function resolveCname(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveCname {
|
||||||
|
function __promisify__(hostname: string): Promise<string[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve `CAA` records for the `hostname`. The `addresses` argument passed to the `callback` function
|
||||||
|
* will contain an array of certification authority authorization records
|
||||||
|
* available for the `hostname` (e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'}, {critical: 128, issue: 'pki.example.com'}]`).
|
||||||
|
* @since v15.0.0, v14.17.0
|
||||||
|
*/
|
||||||
|
export function resolveCaa(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, records: CaaRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveCaa {
|
||||||
|
function __promisify__(hostname: string): Promise<CaaRecord[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve mail exchange records (`MX` records) for the `hostname`. The `addresses` argument passed to the `callback` function will
|
||||||
|
* contain an array of objects containing both a `priority` and `exchange` property (e.g. `[{priority: 10, exchange: 'mx.example.com'}, ...]`).
|
||||||
|
* @since v0.1.27
|
||||||
|
*/
|
||||||
|
export function resolveMx(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveMx {
|
||||||
|
function __promisify__(hostname: string): Promise<MxRecord[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve regular expression-based records (`NAPTR` records) for the `hostname`. The `addresses` argument passed to the `callback` function will contain an array of
|
||||||
|
* objects with the following properties:
|
||||||
|
*
|
||||||
|
* * `flags`
|
||||||
|
* * `service`
|
||||||
|
* * `regexp`
|
||||||
|
* * `replacement`
|
||||||
|
* * `order`
|
||||||
|
* * `preference`
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* flags: 's',
|
||||||
|
* service: 'SIP+D2U',
|
||||||
|
* regexp: '',
|
||||||
|
* replacement: '_sip._udp.example.com',
|
||||||
|
* order: 30,
|
||||||
|
* preference: 100
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v0.9.12
|
||||||
|
*/
|
||||||
|
export function resolveNaptr(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveNaptr {
|
||||||
|
function __promisify__(hostname: string): Promise<NaptrRecord[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve name server records (`NS` records) for the `hostname`. The `addresses` argument passed to the `callback` function will
|
||||||
|
* contain an array of name server records available for `hostname` (e.g. `['ns1.example.com', 'ns2.example.com']`).
|
||||||
|
* @since v0.1.90
|
||||||
|
*/
|
||||||
|
export function resolveNs(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveNs {
|
||||||
|
function __promisify__(hostname: string): Promise<string[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve pointer records (`PTR` records) for the `hostname`. The `addresses` argument passed to the `callback` function will
|
||||||
|
* be an array of strings containing the reply records.
|
||||||
|
* @since v6.0.0
|
||||||
|
*/
|
||||||
|
export function resolvePtr(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolvePtr {
|
||||||
|
function __promisify__(hostname: string): Promise<string[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve a start of authority record (`SOA` record) for
|
||||||
|
* the `hostname`. The `address` argument passed to the `callback` function will
|
||||||
|
* be an object with the following properties:
|
||||||
|
*
|
||||||
|
* * `nsname`
|
||||||
|
* * `hostmaster`
|
||||||
|
* * `serial`
|
||||||
|
* * `refresh`
|
||||||
|
* * `retry`
|
||||||
|
* * `expire`
|
||||||
|
* * `minttl`
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* nsname: 'ns.example.com',
|
||||||
|
* hostmaster: 'root.example.com',
|
||||||
|
* serial: 2013101809,
|
||||||
|
* refresh: 10000,
|
||||||
|
* retry: 2400,
|
||||||
|
* expire: 604800,
|
||||||
|
* minttl: 3600
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v0.11.10
|
||||||
|
*/
|
||||||
|
export function resolveSoa(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, address: SoaRecord) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveSoa {
|
||||||
|
function __promisify__(hostname: string): Promise<SoaRecord>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve service records (`SRV` records) for the `hostname`. The `addresses` argument passed to the `callback` function will
|
||||||
|
* be an array of objects with the following properties:
|
||||||
|
*
|
||||||
|
* * `priority`
|
||||||
|
* * `weight`
|
||||||
|
* * `port`
|
||||||
|
* * `name`
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* priority: 10,
|
||||||
|
* weight: 5,
|
||||||
|
* port: 21223,
|
||||||
|
* name: 'service.example.com'
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v0.1.27
|
||||||
|
*/
|
||||||
|
export function resolveSrv(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveSrv {
|
||||||
|
function __promisify__(hostname: string): Promise<SrvRecord[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve certificate associations (`TLSA` records) for
|
||||||
|
* the `hostname`. The `records` argument passed to the `callback` function is an
|
||||||
|
* array of objects with these properties:
|
||||||
|
*
|
||||||
|
* * `certUsage`
|
||||||
|
* * `selector`
|
||||||
|
* * `match`
|
||||||
|
* * `data`
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* certUsage: 3,
|
||||||
|
* selector: 1,
|
||||||
|
* match: 1,
|
||||||
|
* data: [ArrayBuffer]
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v23.9.0, v22.15.0
|
||||||
|
*/
|
||||||
|
export function resolveTlsa(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: TlsaRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveTlsa {
|
||||||
|
function __promisify__(hostname: string): Promise<TlsaRecord[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve text queries (`TXT` records) for the `hostname`. The `records` argument passed to the `callback` function is a
|
||||||
|
* two-dimensional array of the text records available for `hostname` (e.g.`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of
|
||||||
|
* one record. Depending on the use case, these could be either joined together or
|
||||||
|
* treated separately.
|
||||||
|
* @since v0.1.27
|
||||||
|
*/
|
||||||
|
export function resolveTxt(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveTxt {
|
||||||
|
function __promisify__(hostname: string): Promise<string[][]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query).
|
||||||
|
* The `ret` argument passed to the `callback` function will be an array containing
|
||||||
|
* various types of records. Each object has a property `type` that indicates the
|
||||||
|
* type of the current record. And depending on the `type`, additional properties
|
||||||
|
* will be present on the object:
|
||||||
|
*
|
||||||
|
* <omitted>
|
||||||
|
*
|
||||||
|
* Here is an example of the `ret` object passed to the callback:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* [ { type: 'A', address: '127.0.0.1', ttl: 299 },
|
||||||
|
* { type: 'CNAME', value: 'example.com' },
|
||||||
|
* { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 },
|
||||||
|
* { type: 'NS', value: 'ns1.example.com' },
|
||||||
|
* { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] },
|
||||||
|
* { type: 'SOA',
|
||||||
|
* nsname: 'ns1.example.com',
|
||||||
|
* hostmaster: 'admin.example.com',
|
||||||
|
* serial: 156696742,
|
||||||
|
* refresh: 900,
|
||||||
|
* retry: 900,
|
||||||
|
* expire: 1800,
|
||||||
|
* minttl: 60 } ]
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* DNS server operators may choose not to respond to `ANY` queries. It may be better to call individual methods like {@link resolve4}, {@link resolveMx}, and so on. For more details, see
|
||||||
|
* [RFC 8482](https://tools.ietf.org/html/rfc8482).
|
||||||
|
*/
|
||||||
|
export function resolveAny(
|
||||||
|
hostname: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void,
|
||||||
|
): void;
|
||||||
|
export namespace resolveAny {
|
||||||
|
function __promisify__(hostname: string): Promise<AnyRecord[]>;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an
|
||||||
|
* array of host names.
|
||||||
|
*
|
||||||
|
* On error, `err` is an [`Error`](https://nodejs.org/docs/latest-v24.x/api/errors.html#class-error) object, where `err.code` is
|
||||||
|
* one of the [DNS error codes](https://nodejs.org/docs/latest-v24.x/api/dns.html#error-codes).
|
||||||
|
* @since v0.1.16
|
||||||
|
*/
|
||||||
|
export function reverse(
|
||||||
|
ip: string,
|
||||||
|
callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void,
|
||||||
|
): void;
|
||||||
|
/**
|
||||||
|
* Get the default value for `order` in {@link lookup} and [`dnsPromises.lookup()`](https://nodejs.org/docs/latest-v24.x/api/dns.html#dnspromiseslookuphostname-options).
|
||||||
|
* The value could be:
|
||||||
|
*
|
||||||
|
* * `ipv4first`: for `order` defaulting to `ipv4first`.
|
||||||
|
* * `ipv6first`: for `order` defaulting to `ipv6first`.
|
||||||
|
* * `verbatim`: for `order` defaulting to `verbatim`.
|
||||||
|
* @since v18.17.0
|
||||||
|
*/
|
||||||
|
export function getDefaultResultOrder(): "ipv4first" | "ipv6first" | "verbatim";
|
||||||
|
/**
|
||||||
|
* Sets the IP address and port of servers to be used when performing DNS
|
||||||
|
* resolution. The `servers` argument is an array of [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6) formatted
|
||||||
|
* addresses. If the port is the IANA default DNS port (53) it can be omitted.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* dns.setServers([
|
||||||
|
* '4.4.4.4',
|
||||||
|
* '[2001:4860:4860::8888]',
|
||||||
|
* '4.4.4.4:1053',
|
||||||
|
* '[2001:4860:4860::8888]:1053',
|
||||||
|
* ]);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* An error will be thrown if an invalid address is provided.
|
||||||
|
*
|
||||||
|
* The `dns.setServers()` method must not be called while a DNS query is in
|
||||||
|
* progress.
|
||||||
|
*
|
||||||
|
* The {@link setServers} method affects only {@link resolve}, `dns.resolve*()` and {@link reverse} (and specifically _not_ {@link lookup}).
|
||||||
|
*
|
||||||
|
* This method works much like [resolve.conf](https://man7.org/linux/man-pages/man5/resolv.conf.5.html).
|
||||||
|
* That is, if attempting to resolve with the first server provided results in a `NOTFOUND` error, the `resolve()` method will _not_ attempt to resolve with
|
||||||
|
* subsequent servers provided. Fallback DNS servers will only be used if the
|
||||||
|
* earlier ones time out or result in some other error.
|
||||||
|
* @since v0.11.3
|
||||||
|
* @param servers array of [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952#section-6) formatted addresses
|
||||||
|
*/
|
||||||
|
export function setServers(servers: readonly string[]): void;
|
||||||
|
/**
|
||||||
|
* Returns an array of IP address strings, formatted according to [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6),
|
||||||
|
* that are currently configured for DNS resolution. A string will include a port
|
||||||
|
* section if a custom port is used.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* [
|
||||||
|
* '4.4.4.4',
|
||||||
|
* '2001:4860:4860::8888',
|
||||||
|
* '4.4.4.4:1053',
|
||||||
|
* '[2001:4860:4860::8888]:1053',
|
||||||
|
* ]
|
||||||
|
* ```
|
||||||
|
* @since v0.11.3
|
||||||
|
*/
|
||||||
|
export function getServers(): string[];
|
||||||
|
/**
|
||||||
|
* Set the default value of `order` in {@link lookup} and [`dnsPromises.lookup()`](https://nodejs.org/docs/latest-v24.x/api/dns.html#dnspromiseslookuphostname-options).
|
||||||
|
* The value could be:
|
||||||
|
*
|
||||||
|
* * `ipv4first`: sets default `order` to `ipv4first`.
|
||||||
|
* * `ipv6first`: sets default `order` to `ipv6first`.
|
||||||
|
* * `verbatim`: sets default `order` to `verbatim`.
|
||||||
|
*
|
||||||
|
* The default is `verbatim` and {@link setDefaultResultOrder} have higher
|
||||||
|
* priority than [`--dns-result-order`](https://nodejs.org/docs/latest-v24.x/api/cli.html#--dns-result-orderorder). When using
|
||||||
|
* [worker threads](https://nodejs.org/docs/latest-v24.x/api/worker_threads.html), {@link setDefaultResultOrder} from the main
|
||||||
|
* thread won't affect the default dns orders in workers.
|
||||||
|
* @since v16.4.0, v14.18.0
|
||||||
|
* @param order must be `'ipv4first'`, `'ipv6first'` or `'verbatim'`.
|
||||||
|
*/
|
||||||
|
export function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void;
|
||||||
|
// Error codes
|
||||||
|
export const NODATA: "ENODATA";
|
||||||
|
export const FORMERR: "EFORMERR";
|
||||||
|
export const SERVFAIL: "ESERVFAIL";
|
||||||
|
export const NOTFOUND: "ENOTFOUND";
|
||||||
|
export const NOTIMP: "ENOTIMP";
|
||||||
|
export const REFUSED: "EREFUSED";
|
||||||
|
export const BADQUERY: "EBADQUERY";
|
||||||
|
export const BADNAME: "EBADNAME";
|
||||||
|
export const BADFAMILY: "EBADFAMILY";
|
||||||
|
export const BADRESP: "EBADRESP";
|
||||||
|
export const CONNREFUSED: "ECONNREFUSED";
|
||||||
|
export const TIMEOUT: "ETIMEOUT";
|
||||||
|
export const EOF: "EOF";
|
||||||
|
export const FILE: "EFILE";
|
||||||
|
export const NOMEM: "ENOMEM";
|
||||||
|
export const DESTRUCTION: "EDESTRUCTION";
|
||||||
|
export const BADSTR: "EBADSTR";
|
||||||
|
export const BADFLAGS: "EBADFLAGS";
|
||||||
|
export const NONAME: "ENONAME";
|
||||||
|
export const BADHINTS: "EBADHINTS";
|
||||||
|
export const NOTINITIALIZED: "ENOTINITIALIZED";
|
||||||
|
export const LOADIPHLPAPI: "ELOADIPHLPAPI";
|
||||||
|
export const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS";
|
||||||
|
export const CANCELLED: "ECANCELLED";
|
||||||
|
export interface ResolverOptions {
|
||||||
|
/**
|
||||||
|
* Query timeout in milliseconds, or `-1` to use the default timeout.
|
||||||
|
*/
|
||||||
|
timeout?: number | undefined;
|
||||||
|
/**
|
||||||
|
* The number of tries the resolver will try contacting each name server before giving up.
|
||||||
|
* @default 4
|
||||||
|
*/
|
||||||
|
tries?: number | undefined;
|
||||||
|
/**
|
||||||
|
* The max retry timeout, in milliseconds.
|
||||||
|
* @default 0
|
||||||
|
*/
|
||||||
|
maxTimeout?: number | undefined;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* An independent resolver for DNS requests.
|
||||||
|
*
|
||||||
|
* Creating a new resolver uses the default server settings. Setting
|
||||||
|
* the servers used for a resolver using [`resolver.setServers()`](https://nodejs.org/docs/latest-v24.x/api/dns.html#dnssetserversservers) does not affect
|
||||||
|
* other resolvers:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { Resolver } from 'node:dns';
|
||||||
|
* const resolver = new Resolver();
|
||||||
|
* resolver.setServers(['4.4.4.4']);
|
||||||
|
*
|
||||||
|
* // This request will use the server at 4.4.4.4, independent of global settings.
|
||||||
|
* resolver.resolve4('example.org', (err, addresses) => {
|
||||||
|
* // ...
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The following methods from the `node:dns` module are available:
|
||||||
|
*
|
||||||
|
* * `resolver.getServers()`
|
||||||
|
* * `resolver.resolve()`
|
||||||
|
* * `resolver.resolve4()`
|
||||||
|
* * `resolver.resolve6()`
|
||||||
|
* * `resolver.resolveAny()`
|
||||||
|
* * `resolver.resolveCaa()`
|
||||||
|
* * `resolver.resolveCname()`
|
||||||
|
* * `resolver.resolveMx()`
|
||||||
|
* * `resolver.resolveNaptr()`
|
||||||
|
* * `resolver.resolveNs()`
|
||||||
|
* * `resolver.resolvePtr()`
|
||||||
|
* * `resolver.resolveSoa()`
|
||||||
|
* * `resolver.resolveSrv()`
|
||||||
|
* * `resolver.resolveTxt()`
|
||||||
|
* * `resolver.reverse()`
|
||||||
|
* * `resolver.setServers()`
|
||||||
|
* @since v8.3.0
|
||||||
|
*/
|
||||||
|
export class Resolver {
|
||||||
|
constructor(options?: ResolverOptions);
|
||||||
|
/**
|
||||||
|
* Cancel all outstanding DNS queries made by this resolver. The corresponding
|
||||||
|
* callbacks will be called with an error with code `ECANCELLED`.
|
||||||
|
* @since v8.3.0
|
||||||
|
*/
|
||||||
|
cancel(): void;
|
||||||
|
getServers: typeof getServers;
|
||||||
|
resolve: typeof resolve;
|
||||||
|
resolve4: typeof resolve4;
|
||||||
|
resolve6: typeof resolve6;
|
||||||
|
resolveAny: typeof resolveAny;
|
||||||
|
resolveCaa: typeof resolveCaa;
|
||||||
|
resolveCname: typeof resolveCname;
|
||||||
|
resolveMx: typeof resolveMx;
|
||||||
|
resolveNaptr: typeof resolveNaptr;
|
||||||
|
resolveNs: typeof resolveNs;
|
||||||
|
resolvePtr: typeof resolvePtr;
|
||||||
|
resolveSoa: typeof resolveSoa;
|
||||||
|
resolveSrv: typeof resolveSrv;
|
||||||
|
resolveTlsa: typeof resolveTlsa;
|
||||||
|
resolveTxt: typeof resolveTxt;
|
||||||
|
reverse: typeof reverse;
|
||||||
|
/**
|
||||||
|
* The resolver instance will send its requests from the specified IP address.
|
||||||
|
* This allows programs to specify outbound interfaces when used on multi-homed
|
||||||
|
* systems.
|
||||||
|
*
|
||||||
|
* If a v4 or v6 address is not specified, it is set to the default and the
|
||||||
|
* operating system will choose a local address automatically.
|
||||||
|
*
|
||||||
|
* The resolver will use the v4 local address when making requests to IPv4 DNS
|
||||||
|
* servers, and the v6 local address when making requests to IPv6 DNS servers.
|
||||||
|
* The `rrtype` of resolution requests has no impact on the local address used.
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
* @param [ipv4='0.0.0.0'] A string representation of an IPv4 address.
|
||||||
|
* @param [ipv6='::0'] A string representation of an IPv6 address.
|
||||||
|
*/
|
||||||
|
setLocalAddress(ipv4?: string, ipv6?: string): void;
|
||||||
|
setServers: typeof setServers;
|
||||||
|
}
|
||||||
|
export { dnsPromises as promises };
|
||||||
|
}
|
||||||
|
declare module "node:dns" {
|
||||||
|
export * from "dns";
|
||||||
|
}
|
||||||
503
node_modules/@types/node/dns/promises.d.ts
generated
vendored
Normal file
503
node_modules/@types/node/dns/promises.d.ts
generated
vendored
Normal file
@@ -0,0 +1,503 @@
|
|||||||
|
/**
|
||||||
|
* The `dns.promises` API provides an alternative set of asynchronous DNS methods
|
||||||
|
* that return `Promise` objects rather than using callbacks. The API is accessible
|
||||||
|
* via `import { promises as dnsPromises } from 'node:dns'` or `import dnsPromises from 'node:dns/promises'`.
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
declare module "dns/promises" {
|
||||||
|
import {
|
||||||
|
AnyRecord,
|
||||||
|
CaaRecord,
|
||||||
|
LookupAddress,
|
||||||
|
LookupAllOptions,
|
||||||
|
LookupOneOptions,
|
||||||
|
LookupOptions,
|
||||||
|
MxRecord,
|
||||||
|
NaptrRecord,
|
||||||
|
RecordWithTtl,
|
||||||
|
ResolveOptions,
|
||||||
|
ResolverOptions,
|
||||||
|
ResolveWithTtlOptions,
|
||||||
|
SoaRecord,
|
||||||
|
SrvRecord,
|
||||||
|
TlsaRecord,
|
||||||
|
} from "node:dns";
|
||||||
|
/**
|
||||||
|
* Returns an array of IP address strings, formatted according to [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6),
|
||||||
|
* that are currently configured for DNS resolution. A string will include a port
|
||||||
|
* section if a custom port is used.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* [
|
||||||
|
* '4.4.4.4',
|
||||||
|
* '2001:4860:4860::8888',
|
||||||
|
* '4.4.4.4:1053',
|
||||||
|
* '[2001:4860:4860::8888]:1053',
|
||||||
|
* ]
|
||||||
|
* ```
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function getServers(): string[];
|
||||||
|
/**
|
||||||
|
* Resolves a host name (e.g. `'nodejs.org'`) into the first found A (IPv4) or
|
||||||
|
* AAAA (IPv6) record. All `option` properties are optional. If `options` is an
|
||||||
|
* integer, then it must be `4` or `6` – if `options` is not provided, then IPv4
|
||||||
|
* and IPv6 addresses are both returned if found.
|
||||||
|
*
|
||||||
|
* With the `all` option set to `true`, the `Promise` is resolved with `addresses` being an array of objects with the properties `address` and `family`.
|
||||||
|
*
|
||||||
|
* On error, the `Promise` is rejected with an [`Error`](https://nodejs.org/docs/latest-v20.x/api/errors.html#class-error) object, where `err.code` is the error code.
|
||||||
|
* Keep in mind that `err.code` will be set to `'ENOTFOUND'` not only when
|
||||||
|
* the host name does not exist but also when the lookup fails in other ways
|
||||||
|
* such as no available file descriptors.
|
||||||
|
*
|
||||||
|
* [`dnsPromises.lookup()`](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromiseslookuphostname-options) does not necessarily have anything to do with the DNS
|
||||||
|
* protocol. The implementation uses an operating system facility that can
|
||||||
|
* associate names with addresses and vice versa. This implementation can have
|
||||||
|
* subtle but important consequences on the behavior of any Node.js program. Please
|
||||||
|
* take some time to consult the [Implementation considerations section](https://nodejs.org/docs/latest-v20.x/api/dns.html#implementation-considerations) before
|
||||||
|
* using `dnsPromises.lookup()`.
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dns from 'node:dns';
|
||||||
|
* const dnsPromises = dns.promises;
|
||||||
|
* const options = {
|
||||||
|
* family: 6,
|
||||||
|
* hints: dns.ADDRCONFIG | dns.V4MAPPED,
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* dnsPromises.lookup('example.com', options).then((result) => {
|
||||||
|
* console.log('address: %j family: IPv%s', result.address, result.family);
|
||||||
|
* // address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* // When options.all is true, the result will be an Array.
|
||||||
|
* options.all = true;
|
||||||
|
* dnsPromises.lookup('example.com', options).then((result) => {
|
||||||
|
* console.log('addresses: %j', result);
|
||||||
|
* // addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}]
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function lookup(hostname: string, family: number): Promise<LookupAddress>;
|
||||||
|
function lookup(hostname: string, options: LookupOneOptions): Promise<LookupAddress>;
|
||||||
|
function lookup(hostname: string, options: LookupAllOptions): Promise<LookupAddress[]>;
|
||||||
|
function lookup(hostname: string, options: LookupOptions): Promise<LookupAddress | LookupAddress[]>;
|
||||||
|
function lookup(hostname: string): Promise<LookupAddress>;
|
||||||
|
/**
|
||||||
|
* Resolves the given `address` and `port` into a host name and service using
|
||||||
|
* the operating system's underlying `getnameinfo` implementation.
|
||||||
|
*
|
||||||
|
* If `address` is not a valid IP address, a `TypeError` will be thrown.
|
||||||
|
* The `port` will be coerced to a number. If it is not a legal port, a `TypeError` will be thrown.
|
||||||
|
*
|
||||||
|
* On error, the `Promise` is rejected with an [`Error`](https://nodejs.org/docs/latest-v20.x/api/errors.html#class-error) object, where `err.code` is the error code.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import dnsPromises from 'node:dns';
|
||||||
|
* dnsPromises.lookupService('127.0.0.1', 22).then((result) => {
|
||||||
|
* console.log(result.hostname, result.service);
|
||||||
|
* // Prints: localhost ssh
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function lookupService(
|
||||||
|
address: string,
|
||||||
|
port: number,
|
||||||
|
): Promise<{
|
||||||
|
hostname: string;
|
||||||
|
service: string;
|
||||||
|
}>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve a host name (e.g. `'nodejs.org'`) into an array
|
||||||
|
* of the resource records. When successful, the `Promise` is resolved with an
|
||||||
|
* array of resource records. The type and structure of individual results vary
|
||||||
|
* based on `rrtype`:
|
||||||
|
*
|
||||||
|
* <omitted>
|
||||||
|
*
|
||||||
|
* On error, the `Promise` is rejected with an [`Error`](https://nodejs.org/docs/latest-v20.x/api/errors.html#class-error) object, where `err.code`
|
||||||
|
* is one of the [DNS error codes](https://nodejs.org/docs/latest-v20.x/api/dns.html#error-codes).
|
||||||
|
* @since v10.6.0
|
||||||
|
* @param hostname Host name to resolve.
|
||||||
|
* @param [rrtype='A'] Resource record type.
|
||||||
|
*/
|
||||||
|
function resolve(hostname: string): Promise<string[]>;
|
||||||
|
function resolve(hostname: string, rrtype: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise<string[]>;
|
||||||
|
function resolve(hostname: string, rrtype: "ANY"): Promise<AnyRecord[]>;
|
||||||
|
function resolve(hostname: string, rrtype: "CAA"): Promise<CaaRecord[]>;
|
||||||
|
function resolve(hostname: string, rrtype: "MX"): Promise<MxRecord[]>;
|
||||||
|
function resolve(hostname: string, rrtype: "NAPTR"): Promise<NaptrRecord[]>;
|
||||||
|
function resolve(hostname: string, rrtype: "SOA"): Promise<SoaRecord>;
|
||||||
|
function resolve(hostname: string, rrtype: "SRV"): Promise<SrvRecord[]>;
|
||||||
|
function resolve(hostname: string, rrtype: "TLSA"): Promise<TlsaRecord[]>;
|
||||||
|
function resolve(hostname: string, rrtype: "TXT"): Promise<string[][]>;
|
||||||
|
function resolve(hostname: string, rrtype: string): Promise<
|
||||||
|
| string[]
|
||||||
|
| CaaRecord[]
|
||||||
|
| MxRecord[]
|
||||||
|
| NaptrRecord[]
|
||||||
|
| SoaRecord
|
||||||
|
| SrvRecord[]
|
||||||
|
| TlsaRecord[]
|
||||||
|
| string[][]
|
||||||
|
| AnyRecord[]
|
||||||
|
>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve IPv4 addresses (`A` records) for the `hostname`. On success, the `Promise` is resolved with an array of IPv4
|
||||||
|
* addresses (e.g. `['74.125.79.104', '74.125.79.105', '74.125.79.106']`).
|
||||||
|
* @since v10.6.0
|
||||||
|
* @param hostname Host name to resolve.
|
||||||
|
*/
|
||||||
|
function resolve4(hostname: string): Promise<string[]>;
|
||||||
|
function resolve4(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
|
||||||
|
function resolve4(hostname: string, options: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the `hostname`. On success, the `Promise` is resolved with an array of IPv6
|
||||||
|
* addresses.
|
||||||
|
* @since v10.6.0
|
||||||
|
* @param hostname Host name to resolve.
|
||||||
|
*/
|
||||||
|
function resolve6(hostname: string): Promise<string[]>;
|
||||||
|
function resolve6(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
|
||||||
|
function resolve6(hostname: string, options: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query).
|
||||||
|
* On success, the `Promise` is resolved with an array containing various types of
|
||||||
|
* records. Each object has a property `type` that indicates the type of the
|
||||||
|
* current record. And depending on the `type`, additional properties will be
|
||||||
|
* present on the object:
|
||||||
|
*
|
||||||
|
* <omitted>
|
||||||
|
*
|
||||||
|
* Here is an example of the result object:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* [ { type: 'A', address: '127.0.0.1', ttl: 299 },
|
||||||
|
* { type: 'CNAME', value: 'example.com' },
|
||||||
|
* { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 },
|
||||||
|
* { type: 'NS', value: 'ns1.example.com' },
|
||||||
|
* { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] },
|
||||||
|
* { type: 'SOA',
|
||||||
|
* nsname: 'ns1.example.com',
|
||||||
|
* hostmaster: 'admin.example.com',
|
||||||
|
* serial: 156696742,
|
||||||
|
* refresh: 900,
|
||||||
|
* retry: 900,
|
||||||
|
* expire: 1800,
|
||||||
|
* minttl: 60 } ]
|
||||||
|
* ```
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function resolveAny(hostname: string): Promise<AnyRecord[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve `CAA` records for the `hostname`. On success,
|
||||||
|
* the `Promise` is resolved with an array of objects containing available
|
||||||
|
* certification authority authorization records available for the `hostname` (e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'},{critical: 128, issue: 'pki.example.com'}]`).
|
||||||
|
* @since v15.0.0, v14.17.0
|
||||||
|
*/
|
||||||
|
function resolveCaa(hostname: string): Promise<CaaRecord[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve `CNAME` records for the `hostname`. On success,
|
||||||
|
* the `Promise` is resolved with an array of canonical name records available for
|
||||||
|
* the `hostname` (e.g. `['bar.example.com']`).
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function resolveCname(hostname: string): Promise<string[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve mail exchange records (`MX` records) for the `hostname`. On success, the `Promise` is resolved with an array of objects
|
||||||
|
* containing both a `priority` and `exchange` property (e.g.`[{priority: 10, exchange: 'mx.example.com'}, ...]`).
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function resolveMx(hostname: string): Promise<MxRecord[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve regular expression-based records (`NAPTR` records) for the `hostname`. On success, the `Promise` is resolved with an array
|
||||||
|
* of objects with the following properties:
|
||||||
|
*
|
||||||
|
* * `flags`
|
||||||
|
* * `service`
|
||||||
|
* * `regexp`
|
||||||
|
* * `replacement`
|
||||||
|
* * `order`
|
||||||
|
* * `preference`
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* flags: 's',
|
||||||
|
* service: 'SIP+D2U',
|
||||||
|
* regexp: '',
|
||||||
|
* replacement: '_sip._udp.example.com',
|
||||||
|
* order: 30,
|
||||||
|
* preference: 100
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function resolveNaptr(hostname: string): Promise<NaptrRecord[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve name server records (`NS` records) for the `hostname`. On success, the `Promise` is resolved with an array of name server
|
||||||
|
* records available for `hostname` (e.g.`['ns1.example.com', 'ns2.example.com']`).
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function resolveNs(hostname: string): Promise<string[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve pointer records (`PTR` records) for the `hostname`. On success, the `Promise` is resolved with an array of strings
|
||||||
|
* containing the reply records.
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function resolvePtr(hostname: string): Promise<string[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve a start of authority record (`SOA` record) for
|
||||||
|
* the `hostname`. On success, the `Promise` is resolved with an object with the
|
||||||
|
* following properties:
|
||||||
|
*
|
||||||
|
* * `nsname`
|
||||||
|
* * `hostmaster`
|
||||||
|
* * `serial`
|
||||||
|
* * `refresh`
|
||||||
|
* * `retry`
|
||||||
|
* * `expire`
|
||||||
|
* * `minttl`
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* nsname: 'ns.example.com',
|
||||||
|
* hostmaster: 'root.example.com',
|
||||||
|
* serial: 2013101809,
|
||||||
|
* refresh: 10000,
|
||||||
|
* retry: 2400,
|
||||||
|
* expire: 604800,
|
||||||
|
* minttl: 3600
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function resolveSoa(hostname: string): Promise<SoaRecord>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve service records (`SRV` records) for the `hostname`. On success, the `Promise` is resolved with an array of objects with
|
||||||
|
* the following properties:
|
||||||
|
*
|
||||||
|
* * `priority`
|
||||||
|
* * `weight`
|
||||||
|
* * `port`
|
||||||
|
* * `name`
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* priority: 10,
|
||||||
|
* weight: 5,
|
||||||
|
* port: 21223,
|
||||||
|
* name: 'service.example.com'
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function resolveSrv(hostname: string): Promise<SrvRecord[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve certificate associations (`TLSA` records) for
|
||||||
|
* the `hostname`. On success, the `Promise` is resolved with an array of objectsAdd commentMore actions
|
||||||
|
* with these properties:
|
||||||
|
*
|
||||||
|
* * `certUsage`
|
||||||
|
* * `selector`
|
||||||
|
* * `match`
|
||||||
|
* * `data`
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* {
|
||||||
|
* certUsage: 3,
|
||||||
|
* selector: 1,
|
||||||
|
* match: 1,
|
||||||
|
* data: [ArrayBuffer]
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v23.9.0, v22.15.0
|
||||||
|
*/
|
||||||
|
function resolveTlsa(hostname: string): Promise<TlsaRecord[]>;
|
||||||
|
/**
|
||||||
|
* Uses the DNS protocol to resolve text queries (`TXT` records) for the `hostname`. On success, the `Promise` is resolved with a two-dimensional array
|
||||||
|
* of the text records available for `hostname` (e.g.`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of
|
||||||
|
* one record. Depending on the use case, these could be either joined together or
|
||||||
|
* treated separately.
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function resolveTxt(hostname: string): Promise<string[][]>;
|
||||||
|
/**
|
||||||
|
* Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an
|
||||||
|
* array of host names.
|
||||||
|
*
|
||||||
|
* On error, the `Promise` is rejected with an [`Error`](https://nodejs.org/docs/latest-v20.x/api/errors.html#class-error) object, where `err.code`
|
||||||
|
* is one of the [DNS error codes](https://nodejs.org/docs/latest-v20.x/api/dns.html#error-codes).
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
function reverse(ip: string): Promise<string[]>;
|
||||||
|
/**
|
||||||
|
* Get the default value for `verbatim` in {@link lookup} and [dnsPromises.lookup()](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromiseslookuphostname-options).
|
||||||
|
* The value could be:
|
||||||
|
*
|
||||||
|
* * `ipv4first`: for `verbatim` defaulting to `false`.
|
||||||
|
* * `verbatim`: for `verbatim` defaulting to `true`.
|
||||||
|
* @since v20.1.0
|
||||||
|
*/
|
||||||
|
function getDefaultResultOrder(): "ipv4first" | "verbatim";
|
||||||
|
/**
|
||||||
|
* Sets the IP address and port of servers to be used when performing DNS
|
||||||
|
* resolution. The `servers` argument is an array of [RFC 5952](https://tools.ietf.org/html/rfc5952#section-6) formatted
|
||||||
|
* addresses. If the port is the IANA default DNS port (53) it can be omitted.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* dnsPromises.setServers([
|
||||||
|
* '4.4.4.4',
|
||||||
|
* '[2001:4860:4860::8888]',
|
||||||
|
* '4.4.4.4:1053',
|
||||||
|
* '[2001:4860:4860::8888]:1053',
|
||||||
|
* ]);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* An error will be thrown if an invalid address is provided.
|
||||||
|
*
|
||||||
|
* The `dnsPromises.setServers()` method must not be called while a DNS query is in
|
||||||
|
* progress.
|
||||||
|
*
|
||||||
|
* This method works much like [resolve.conf](https://man7.org/linux/man-pages/man5/resolv.conf.5.html).
|
||||||
|
* That is, if attempting to resolve with the first server provided results in a `NOTFOUND` error, the `resolve()` method will _not_ attempt to resolve with
|
||||||
|
* subsequent servers provided. Fallback DNS servers will only be used if the
|
||||||
|
* earlier ones time out or result in some other error.
|
||||||
|
* @since v10.6.0
|
||||||
|
* @param servers array of `RFC 5952` formatted addresses
|
||||||
|
*/
|
||||||
|
function setServers(servers: readonly string[]): void;
|
||||||
|
/**
|
||||||
|
* Set the default value of `order` in `dns.lookup()` and `{@link lookup}`. The value could be:
|
||||||
|
*
|
||||||
|
* * `ipv4first`: sets default `order` to `ipv4first`.
|
||||||
|
* * `ipv6first`: sets default `order` to `ipv6first`.
|
||||||
|
* * `verbatim`: sets default `order` to `verbatim`.
|
||||||
|
*
|
||||||
|
* The default is `verbatim` and [dnsPromises.setDefaultResultOrder()](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromisessetdefaultresultorderorder)
|
||||||
|
* have higher priority than [`--dns-result-order`](https://nodejs.org/docs/latest-v20.x/api/cli.html#--dns-result-orderorder).
|
||||||
|
* When using [worker threads](https://nodejs.org/docs/latest-v20.x/api/worker_threads.html), [`dnsPromises.setDefaultResultOrder()`](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromisessetdefaultresultorderorder)
|
||||||
|
* from the main thread won't affect the default dns orders in workers.
|
||||||
|
* @since v16.4.0, v14.18.0
|
||||||
|
* @param order must be `'ipv4first'`, `'ipv6first'` or `'verbatim'`.
|
||||||
|
*/
|
||||||
|
function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void;
|
||||||
|
// Error codes
|
||||||
|
const NODATA: "ENODATA";
|
||||||
|
const FORMERR: "EFORMERR";
|
||||||
|
const SERVFAIL: "ESERVFAIL";
|
||||||
|
const NOTFOUND: "ENOTFOUND";
|
||||||
|
const NOTIMP: "ENOTIMP";
|
||||||
|
const REFUSED: "EREFUSED";
|
||||||
|
const BADQUERY: "EBADQUERY";
|
||||||
|
const BADNAME: "EBADNAME";
|
||||||
|
const BADFAMILY: "EBADFAMILY";
|
||||||
|
const BADRESP: "EBADRESP";
|
||||||
|
const CONNREFUSED: "ECONNREFUSED";
|
||||||
|
const TIMEOUT: "ETIMEOUT";
|
||||||
|
const EOF: "EOF";
|
||||||
|
const FILE: "EFILE";
|
||||||
|
const NOMEM: "ENOMEM";
|
||||||
|
const DESTRUCTION: "EDESTRUCTION";
|
||||||
|
const BADSTR: "EBADSTR";
|
||||||
|
const BADFLAGS: "EBADFLAGS";
|
||||||
|
const NONAME: "ENONAME";
|
||||||
|
const BADHINTS: "EBADHINTS";
|
||||||
|
const NOTINITIALIZED: "ENOTINITIALIZED";
|
||||||
|
const LOADIPHLPAPI: "ELOADIPHLPAPI";
|
||||||
|
const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS";
|
||||||
|
const CANCELLED: "ECANCELLED";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An independent resolver for DNS requests.
|
||||||
|
*
|
||||||
|
* Creating a new resolver uses the default server settings. Setting
|
||||||
|
* the servers used for a resolver using [`resolver.setServers()`](https://nodejs.org/docs/latest-v20.x/api/dns.html#dnspromisessetserversservers) does not affect
|
||||||
|
* other resolvers:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { promises } from 'node:dns';
|
||||||
|
* const resolver = new promises.Resolver();
|
||||||
|
* resolver.setServers(['4.4.4.4']);
|
||||||
|
*
|
||||||
|
* // This request will use the server at 4.4.4.4, independent of global settings.
|
||||||
|
* resolver.resolve4('example.org').then((addresses) => {
|
||||||
|
* // ...
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* // Alternatively, the same code can be written using async-await style.
|
||||||
|
* (async function() {
|
||||||
|
* const addresses = await resolver.resolve4('example.org');
|
||||||
|
* })();
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The following methods from the `dnsPromises` API are available:
|
||||||
|
*
|
||||||
|
* * `resolver.getServers()`
|
||||||
|
* * `resolver.resolve()`
|
||||||
|
* * `resolver.resolve4()`
|
||||||
|
* * `resolver.resolve6()`
|
||||||
|
* * `resolver.resolveAny()`
|
||||||
|
* * `resolver.resolveCaa()`
|
||||||
|
* * `resolver.resolveCname()`
|
||||||
|
* * `resolver.resolveMx()`
|
||||||
|
* * `resolver.resolveNaptr()`
|
||||||
|
* * `resolver.resolveNs()`
|
||||||
|
* * `resolver.resolvePtr()`
|
||||||
|
* * `resolver.resolveSoa()`
|
||||||
|
* * `resolver.resolveSrv()`
|
||||||
|
* * `resolver.resolveTxt()`
|
||||||
|
* * `resolver.reverse()`
|
||||||
|
* * `resolver.setServers()`
|
||||||
|
* @since v10.6.0
|
||||||
|
*/
|
||||||
|
class Resolver {
|
||||||
|
constructor(options?: ResolverOptions);
|
||||||
|
/**
|
||||||
|
* Cancel all outstanding DNS queries made by this resolver. The corresponding
|
||||||
|
* callbacks will be called with an error with code `ECANCELLED`.
|
||||||
|
* @since v8.3.0
|
||||||
|
*/
|
||||||
|
cancel(): void;
|
||||||
|
getServers: typeof getServers;
|
||||||
|
resolve: typeof resolve;
|
||||||
|
resolve4: typeof resolve4;
|
||||||
|
resolve6: typeof resolve6;
|
||||||
|
resolveAny: typeof resolveAny;
|
||||||
|
resolveCaa: typeof resolveCaa;
|
||||||
|
resolveCname: typeof resolveCname;
|
||||||
|
resolveMx: typeof resolveMx;
|
||||||
|
resolveNaptr: typeof resolveNaptr;
|
||||||
|
resolveNs: typeof resolveNs;
|
||||||
|
resolvePtr: typeof resolvePtr;
|
||||||
|
resolveSoa: typeof resolveSoa;
|
||||||
|
resolveSrv: typeof resolveSrv;
|
||||||
|
resolveTlsa: typeof resolveTlsa;
|
||||||
|
resolveTxt: typeof resolveTxt;
|
||||||
|
reverse: typeof reverse;
|
||||||
|
/**
|
||||||
|
* The resolver instance will send its requests from the specified IP address.
|
||||||
|
* This allows programs to specify outbound interfaces when used on multi-homed
|
||||||
|
* systems.
|
||||||
|
*
|
||||||
|
* If a v4 or v6 address is not specified, it is set to the default and the
|
||||||
|
* operating system will choose a local address automatically.
|
||||||
|
*
|
||||||
|
* The resolver will use the v4 local address when making requests to IPv4 DNS
|
||||||
|
* servers, and the v6 local address when making requests to IPv6 DNS servers.
|
||||||
|
* The `rrtype` of resolution requests has no impact on the local address used.
|
||||||
|
* @since v15.1.0, v14.17.0
|
||||||
|
* @param [ipv4='0.0.0.0'] A string representation of an IPv4 address.
|
||||||
|
* @param [ipv6='::0'] A string representation of an IPv6 address.
|
||||||
|
*/
|
||||||
|
setLocalAddress(ipv4?: string, ipv6?: string): void;
|
||||||
|
setServers: typeof setServers;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
declare module "node:dns/promises" {
|
||||||
|
export * from "dns/promises";
|
||||||
|
}
|
||||||
170
node_modules/@types/node/domain.d.ts
generated
vendored
Normal file
170
node_modules/@types/node/domain.d.ts
generated
vendored
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
/**
|
||||||
|
* **This module is pending deprecation.** Once a replacement API has been
|
||||||
|
* finalized, this module will be fully deprecated. Most developers should
|
||||||
|
* **not** have cause to use this module. Users who absolutely must have
|
||||||
|
* the functionality that domains provide may rely on it for the time being
|
||||||
|
* but should expect to have to migrate to a different solution
|
||||||
|
* in the future.
|
||||||
|
*
|
||||||
|
* Domains provide a way to handle multiple different IO operations as a
|
||||||
|
* single group. If any of the event emitters or callbacks registered to a
|
||||||
|
* domain emit an `'error'` event, or throw an error, then the domain object
|
||||||
|
* will be notified, rather than losing the context of the error in the `process.on('uncaughtException')` handler, or causing the program to
|
||||||
|
* exit immediately with an error code.
|
||||||
|
* @deprecated Since v1.4.2 - Deprecated
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/domain.js)
|
||||||
|
*/
|
||||||
|
declare module "domain" {
|
||||||
|
import EventEmitter = require("node:events");
|
||||||
|
/**
|
||||||
|
* The `Domain` class encapsulates the functionality of routing errors and
|
||||||
|
* uncaught exceptions to the active `Domain` object.
|
||||||
|
*
|
||||||
|
* To handle the errors that it catches, listen to its `'error'` event.
|
||||||
|
*/
|
||||||
|
class Domain extends EventEmitter {
|
||||||
|
/**
|
||||||
|
* An array of timers and event emitters that have been explicitly added
|
||||||
|
* to the domain.
|
||||||
|
*/
|
||||||
|
members: Array<EventEmitter | NodeJS.Timer>;
|
||||||
|
/**
|
||||||
|
* The `enter()` method is plumbing used by the `run()`, `bind()`, and `intercept()` methods to set the active domain. It sets `domain.active` and `process.domain` to the domain, and implicitly
|
||||||
|
* pushes the domain onto the domain
|
||||||
|
* stack managed by the domain module (see {@link exit} for details on the
|
||||||
|
* domain stack). The call to `enter()` delimits the beginning of a chain of
|
||||||
|
* asynchronous calls and I/O operations bound to a domain.
|
||||||
|
*
|
||||||
|
* Calling `enter()` changes only the active domain, and does not alter the domain
|
||||||
|
* itself. `enter()` and `exit()` can be called an arbitrary number of times on a
|
||||||
|
* single domain.
|
||||||
|
*/
|
||||||
|
enter(): void;
|
||||||
|
/**
|
||||||
|
* The `exit()` method exits the current domain, popping it off the domain stack.
|
||||||
|
* Any time execution is going to switch to the context of a different chain of
|
||||||
|
* asynchronous calls, it's important to ensure that the current domain is exited.
|
||||||
|
* The call to `exit()` delimits either the end of or an interruption to the chain
|
||||||
|
* of asynchronous calls and I/O operations bound to a domain.
|
||||||
|
*
|
||||||
|
* If there are multiple, nested domains bound to the current execution context, `exit()` will exit any domains nested within this domain.
|
||||||
|
*
|
||||||
|
* Calling `exit()` changes only the active domain, and does not alter the domain
|
||||||
|
* itself. `enter()` and `exit()` can be called an arbitrary number of times on a
|
||||||
|
* single domain.
|
||||||
|
*/
|
||||||
|
exit(): void;
|
||||||
|
/**
|
||||||
|
* Run the supplied function in the context of the domain, implicitly
|
||||||
|
* binding all event emitters, timers, and low-level requests that are
|
||||||
|
* created in that context. Optionally, arguments can be passed to
|
||||||
|
* the function.
|
||||||
|
*
|
||||||
|
* This is the most basic way to use a domain.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import domain from 'node:domain';
|
||||||
|
* import fs from 'node:fs';
|
||||||
|
* const d = domain.create();
|
||||||
|
* d.on('error', (er) => {
|
||||||
|
* console.error('Caught error!', er);
|
||||||
|
* });
|
||||||
|
* d.run(() => {
|
||||||
|
* process.nextTick(() => {
|
||||||
|
* setTimeout(() => { // Simulating some various async stuff
|
||||||
|
* fs.open('non-existent file', 'r', (er, fd) => {
|
||||||
|
* if (er) throw er;
|
||||||
|
* // proceed...
|
||||||
|
* });
|
||||||
|
* }, 100);
|
||||||
|
* });
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* In this example, the `d.on('error')` handler will be triggered, rather
|
||||||
|
* than crashing the program.
|
||||||
|
*/
|
||||||
|
run<T>(fn: (...args: any[]) => T, ...args: any[]): T;
|
||||||
|
/**
|
||||||
|
* Explicitly adds an emitter to the domain. If any event handlers called by
|
||||||
|
* the emitter throw an error, or if the emitter emits an `'error'` event, it
|
||||||
|
* will be routed to the domain's `'error'` event, just like with implicit
|
||||||
|
* binding.
|
||||||
|
*
|
||||||
|
* This also works with timers that are returned from `setInterval()` and `setTimeout()`. If their callback function throws, it will be caught by
|
||||||
|
* the domain `'error'` handler.
|
||||||
|
*
|
||||||
|
* If the Timer or `EventEmitter` was already bound to a domain, it is removed
|
||||||
|
* from that one, and bound to this one instead.
|
||||||
|
* @param emitter emitter or timer to be added to the domain
|
||||||
|
*/
|
||||||
|
add(emitter: EventEmitter | NodeJS.Timer): void;
|
||||||
|
/**
|
||||||
|
* The opposite of {@link add}. Removes domain handling from the
|
||||||
|
* specified emitter.
|
||||||
|
* @param emitter emitter or timer to be removed from the domain
|
||||||
|
*/
|
||||||
|
remove(emitter: EventEmitter | NodeJS.Timer): void;
|
||||||
|
/**
|
||||||
|
* The returned function will be a wrapper around the supplied callback
|
||||||
|
* function. When the returned function is called, any errors that are
|
||||||
|
* thrown will be routed to the domain's `'error'` event.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const d = domain.create();
|
||||||
|
*
|
||||||
|
* function readSomeFile(filename, cb) {
|
||||||
|
* fs.readFile(filename, 'utf8', d.bind((er, data) => {
|
||||||
|
* // If this throws, it will also be passed to the domain.
|
||||||
|
* return cb(er, data ? JSON.parse(data) : null);
|
||||||
|
* }));
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* d.on('error', (er) => {
|
||||||
|
* // An error occurred somewhere. If we throw it now, it will crash the program
|
||||||
|
* // with the normal line number and stack message.
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @param callback The callback function
|
||||||
|
* @return The bound function
|
||||||
|
*/
|
||||||
|
bind<T extends Function>(callback: T): T;
|
||||||
|
/**
|
||||||
|
* This method is almost identical to {@link bind}. However, in
|
||||||
|
* addition to catching thrown errors, it will also intercept `Error` objects sent as the first argument to the function.
|
||||||
|
*
|
||||||
|
* In this way, the common `if (err) return callback(err);` pattern can be replaced
|
||||||
|
* with a single error handler in a single place.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const d = domain.create();
|
||||||
|
*
|
||||||
|
* function readSomeFile(filename, cb) {
|
||||||
|
* fs.readFile(filename, 'utf8', d.intercept((data) => {
|
||||||
|
* // Note, the first argument is never passed to the
|
||||||
|
* // callback since it is assumed to be the 'Error' argument
|
||||||
|
* // and thus intercepted by the domain.
|
||||||
|
*
|
||||||
|
* // If this throws, it will also be passed to the domain
|
||||||
|
* // so the error-handling logic can be moved to the 'error'
|
||||||
|
* // event on the domain instead of being repeated throughout
|
||||||
|
* // the program.
|
||||||
|
* return cb(null, JSON.parse(data));
|
||||||
|
* }));
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* d.on('error', (er) => {
|
||||||
|
* // An error occurred somewhere. If we throw it now, it will crash the program
|
||||||
|
* // with the normal line number and stack message.
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @param callback The callback function
|
||||||
|
* @return The intercepted function
|
||||||
|
*/
|
||||||
|
intercept<T extends Function>(callback: T): T;
|
||||||
|
}
|
||||||
|
function create(): Domain;
|
||||||
|
}
|
||||||
|
declare module "node:domain" {
|
||||||
|
export * from "domain";
|
||||||
|
}
|
||||||
976
node_modules/@types/node/events.d.ts
generated
vendored
Normal file
976
node_modules/@types/node/events.d.ts
generated
vendored
Normal file
@@ -0,0 +1,976 @@
|
|||||||
|
/**
|
||||||
|
* Much of the Node.js core API is built around an idiomatic asynchronous
|
||||||
|
* event-driven architecture in which certain kinds of objects (called "emitters")
|
||||||
|
* emit named events that cause `Function` objects ("listeners") to be called.
|
||||||
|
*
|
||||||
|
* For instance: a `net.Server` object emits an event each time a peer
|
||||||
|
* connects to it; a `fs.ReadStream` emits an event when the file is opened;
|
||||||
|
* a `stream` emits an event whenever data is available to be read.
|
||||||
|
*
|
||||||
|
* All objects that emit events are instances of the `EventEmitter` class. These
|
||||||
|
* objects expose an `eventEmitter.on()` function that allows one or more
|
||||||
|
* functions to be attached to named events emitted by the object. Typically,
|
||||||
|
* event names are camel-cased strings but any valid JavaScript property key
|
||||||
|
* can be used.
|
||||||
|
*
|
||||||
|
* When the `EventEmitter` object emits an event, all of the functions attached
|
||||||
|
* to that specific event are called _synchronously_. Any values returned by the
|
||||||
|
* called listeners are _ignored_ and discarded.
|
||||||
|
*
|
||||||
|
* The following example shows a simple `EventEmitter` instance with a single
|
||||||
|
* listener. The `eventEmitter.on()` method is used to register listeners, while
|
||||||
|
* the `eventEmitter.emit()` method is used to trigger the event.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
*
|
||||||
|
* class MyEmitter extends EventEmitter {}
|
||||||
|
*
|
||||||
|
* const myEmitter = new MyEmitter();
|
||||||
|
* myEmitter.on('event', () => {
|
||||||
|
* console.log('an event occurred!');
|
||||||
|
* });
|
||||||
|
* myEmitter.emit('event');
|
||||||
|
* ```
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/events.js)
|
||||||
|
*/
|
||||||
|
declare module "events" {
|
||||||
|
import { AsyncResource, AsyncResourceOptions } from "node:async_hooks";
|
||||||
|
interface EventEmitterOptions {
|
||||||
|
/**
|
||||||
|
* Enables automatic capturing of promise rejection.
|
||||||
|
*/
|
||||||
|
captureRejections?: boolean | undefined;
|
||||||
|
}
|
||||||
|
interface StaticEventEmitterOptions {
|
||||||
|
/**
|
||||||
|
* Can be used to cancel awaiting events.
|
||||||
|
*/
|
||||||
|
signal?: AbortSignal | undefined;
|
||||||
|
}
|
||||||
|
interface StaticEventEmitterIteratorOptions extends StaticEventEmitterOptions {
|
||||||
|
/**
|
||||||
|
* Names of events that will end the iteration.
|
||||||
|
*/
|
||||||
|
close?: string[] | undefined;
|
||||||
|
/**
|
||||||
|
* The high watermark. The emitter is paused every time the size of events being buffered is higher than it.
|
||||||
|
* Supported only on emitters implementing `pause()` and `resume()` methods.
|
||||||
|
* @default Number.MAX_SAFE_INTEGER
|
||||||
|
*/
|
||||||
|
highWaterMark?: number | undefined;
|
||||||
|
/**
|
||||||
|
* The low watermark. The emitter is resumed every time the size of events being buffered is lower than it.
|
||||||
|
* Supported only on emitters implementing `pause()` and `resume()` methods.
|
||||||
|
* @default 1
|
||||||
|
*/
|
||||||
|
lowWaterMark?: number | undefined;
|
||||||
|
}
|
||||||
|
interface EventEmitter<T extends EventMap<T> = DefaultEventMap> extends NodeJS.EventEmitter<T> {}
|
||||||
|
type EventMap<T> = Record<keyof T, any[]> | DefaultEventMap;
|
||||||
|
type DefaultEventMap = [never];
|
||||||
|
type AnyRest = [...args: any[]];
|
||||||
|
type Args<K, T> = T extends DefaultEventMap ? AnyRest : (
|
||||||
|
K extends keyof T ? T[K] : never
|
||||||
|
);
|
||||||
|
type Key<K, T> = T extends DefaultEventMap ? string | symbol : K | keyof T;
|
||||||
|
type Key2<K, T> = T extends DefaultEventMap ? string | symbol : K & keyof T;
|
||||||
|
type Listener<K, T, F> = T extends DefaultEventMap ? F : (
|
||||||
|
K extends keyof T ? (
|
||||||
|
T[K] extends unknown[] ? (...args: T[K]) => void : never
|
||||||
|
)
|
||||||
|
: never
|
||||||
|
);
|
||||||
|
type Listener1<K, T> = Listener<K, T, (...args: any[]) => void>;
|
||||||
|
type Listener2<K, T> = Listener<K, T, Function>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The `EventEmitter` class is defined and exposed by the `node:events` module:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* All `EventEmitter`s emit the event `'newListener'` when new listeners are
|
||||||
|
* added and `'removeListener'` when existing listeners are removed.
|
||||||
|
*
|
||||||
|
* It supports the following option:
|
||||||
|
* @since v0.1.26
|
||||||
|
*/
|
||||||
|
class EventEmitter<T extends EventMap<T> = DefaultEventMap> {
|
||||||
|
constructor(options?: EventEmitterOptions);
|
||||||
|
|
||||||
|
[EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given
|
||||||
|
* event or that is rejected if the `EventEmitter` emits `'error'` while waiting.
|
||||||
|
* The `Promise` will resolve with an array of all the arguments emitted to the
|
||||||
|
* given event.
|
||||||
|
*
|
||||||
|
* This method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event
|
||||||
|
* semantics and does not listen to the `'error'` event.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { once, EventEmitter } from 'node:events';
|
||||||
|
* import process from 'node:process';
|
||||||
|
*
|
||||||
|
* const ee = new EventEmitter();
|
||||||
|
*
|
||||||
|
* process.nextTick(() => {
|
||||||
|
* ee.emit('myevent', 42);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* const [value] = await once(ee, 'myevent');
|
||||||
|
* console.log(value);
|
||||||
|
*
|
||||||
|
* const err = new Error('kaboom');
|
||||||
|
* process.nextTick(() => {
|
||||||
|
* ee.emit('error', err);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* try {
|
||||||
|
* await once(ee, 'myevent');
|
||||||
|
* } catch (err) {
|
||||||
|
* console.error('error happened', err);
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The special handling of the `'error'` event is only used when `events.once()` is used to wait for another event. If `events.once()` is used to wait for the
|
||||||
|
* '`error'` event itself, then it is treated as any other kind of event without
|
||||||
|
* special handling:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter, once } from 'node:events';
|
||||||
|
*
|
||||||
|
* const ee = new EventEmitter();
|
||||||
|
*
|
||||||
|
* once(ee, 'error')
|
||||||
|
* .then(([err]) => console.log('ok', err.message))
|
||||||
|
* .catch((err) => console.error('error', err.message));
|
||||||
|
*
|
||||||
|
* ee.emit('error', new Error('boom'));
|
||||||
|
*
|
||||||
|
* // Prints: ok boom
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* An `AbortSignal` can be used to cancel waiting for the event:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter, once } from 'node:events';
|
||||||
|
*
|
||||||
|
* const ee = new EventEmitter();
|
||||||
|
* const ac = new AbortController();
|
||||||
|
*
|
||||||
|
* async function foo(emitter, event, signal) {
|
||||||
|
* try {
|
||||||
|
* await once(emitter, event, { signal });
|
||||||
|
* console.log('event emitted!');
|
||||||
|
* } catch (error) {
|
||||||
|
* if (error.name === 'AbortError') {
|
||||||
|
* console.error('Waiting for the event was canceled!');
|
||||||
|
* } else {
|
||||||
|
* console.error('There was an error', error.message);
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* foo(ee, 'foo', ac.signal);
|
||||||
|
* ac.abort(); // Abort waiting for the event
|
||||||
|
* ee.emit('foo'); // Prints: Waiting for the event was canceled!
|
||||||
|
* ```
|
||||||
|
* @since v11.13.0, v10.16.0
|
||||||
|
*/
|
||||||
|
static once(
|
||||||
|
emitter: NodeJS.EventEmitter,
|
||||||
|
eventName: string | symbol,
|
||||||
|
options?: StaticEventEmitterOptions,
|
||||||
|
): Promise<any[]>;
|
||||||
|
static once(emitter: EventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise<any[]>;
|
||||||
|
/**
|
||||||
|
* ```js
|
||||||
|
* import { on, EventEmitter } from 'node:events';
|
||||||
|
* import process from 'node:process';
|
||||||
|
*
|
||||||
|
* const ee = new EventEmitter();
|
||||||
|
*
|
||||||
|
* // Emit later on
|
||||||
|
* process.nextTick(() => {
|
||||||
|
* ee.emit('foo', 'bar');
|
||||||
|
* ee.emit('foo', 42);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* for await (const event of on(ee, 'foo')) {
|
||||||
|
* // The execution of this inner block is synchronous and it
|
||||||
|
* // processes one event at a time (even with await). Do not use
|
||||||
|
* // if concurrent execution is required.
|
||||||
|
* console.log(event); // prints ['bar'] [42]
|
||||||
|
* }
|
||||||
|
* // Unreachable here
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Returns an `AsyncIterator` that iterates `eventName` events. It will throw
|
||||||
|
* if the `EventEmitter` emits `'error'`. It removes all listeners when
|
||||||
|
* exiting the loop. The `value` returned by each iteration is an array
|
||||||
|
* composed of the emitted event arguments.
|
||||||
|
*
|
||||||
|
* An `AbortSignal` can be used to cancel waiting on events:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { on, EventEmitter } from 'node:events';
|
||||||
|
* import process from 'node:process';
|
||||||
|
*
|
||||||
|
* const ac = new AbortController();
|
||||||
|
*
|
||||||
|
* (async () => {
|
||||||
|
* const ee = new EventEmitter();
|
||||||
|
*
|
||||||
|
* // Emit later on
|
||||||
|
* process.nextTick(() => {
|
||||||
|
* ee.emit('foo', 'bar');
|
||||||
|
* ee.emit('foo', 42);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* for await (const event of on(ee, 'foo', { signal: ac.signal })) {
|
||||||
|
* // The execution of this inner block is synchronous and it
|
||||||
|
* // processes one event at a time (even with await). Do not use
|
||||||
|
* // if concurrent execution is required.
|
||||||
|
* console.log(event); // prints ['bar'] [42]
|
||||||
|
* }
|
||||||
|
* // Unreachable here
|
||||||
|
* })();
|
||||||
|
*
|
||||||
|
* process.nextTick(() => ac.abort());
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Use the `close` option to specify an array of event names that will end the iteration:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { on, EventEmitter } from 'node:events';
|
||||||
|
* import process from 'node:process';
|
||||||
|
*
|
||||||
|
* const ee = new EventEmitter();
|
||||||
|
*
|
||||||
|
* // Emit later on
|
||||||
|
* process.nextTick(() => {
|
||||||
|
* ee.emit('foo', 'bar');
|
||||||
|
* ee.emit('foo', 42);
|
||||||
|
* ee.emit('close');
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* for await (const event of on(ee, 'foo', { close: ['close'] })) {
|
||||||
|
* console.log(event); // prints ['bar'] [42]
|
||||||
|
* }
|
||||||
|
* // the loop will exit after 'close' is emitted
|
||||||
|
* console.log('done'); // prints 'done'
|
||||||
|
* ```
|
||||||
|
* @since v13.6.0, v12.16.0
|
||||||
|
* @return An `AsyncIterator` that iterates `eventName` events emitted by the `emitter`
|
||||||
|
*/
|
||||||
|
static on(
|
||||||
|
emitter: NodeJS.EventEmitter,
|
||||||
|
eventName: string | symbol,
|
||||||
|
options?: StaticEventEmitterIteratorOptions,
|
||||||
|
): NodeJS.AsyncIterator<any[]>;
|
||||||
|
static on(
|
||||||
|
emitter: EventTarget,
|
||||||
|
eventName: string,
|
||||||
|
options?: StaticEventEmitterIteratorOptions,
|
||||||
|
): NodeJS.AsyncIterator<any[]>;
|
||||||
|
/**
|
||||||
|
* A class method that returns the number of listeners for the given `eventName` registered on the given `emitter`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter, listenerCount } from 'node:events';
|
||||||
|
*
|
||||||
|
* const myEmitter = new EventEmitter();
|
||||||
|
* myEmitter.on('event', () => {});
|
||||||
|
* myEmitter.on('event', () => {});
|
||||||
|
* console.log(listenerCount(myEmitter, 'event'));
|
||||||
|
* // Prints: 2
|
||||||
|
* ```
|
||||||
|
* @since v0.9.12
|
||||||
|
* @deprecated Since v3.2.0 - Use `listenerCount` instead.
|
||||||
|
* @param emitter The emitter to query
|
||||||
|
* @param eventName The event name
|
||||||
|
*/
|
||||||
|
static listenerCount(emitter: NodeJS.EventEmitter, eventName: string | symbol): number;
|
||||||
|
/**
|
||||||
|
* Returns a copy of the array of listeners for the event named `eventName`.
|
||||||
|
*
|
||||||
|
* For `EventEmitter`s this behaves exactly the same as calling `.listeners` on
|
||||||
|
* the emitter.
|
||||||
|
*
|
||||||
|
* For `EventTarget`s this is the only way to get the event listeners for the
|
||||||
|
* event target. This is useful for debugging and diagnostic purposes.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { getEventListeners, EventEmitter } from 'node:events';
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* const ee = new EventEmitter();
|
||||||
|
* const listener = () => console.log('Events are fun');
|
||||||
|
* ee.on('foo', listener);
|
||||||
|
* console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
|
||||||
|
* }
|
||||||
|
* {
|
||||||
|
* const et = new EventTarget();
|
||||||
|
* const listener = () => console.log('Events are fun');
|
||||||
|
* et.addEventListener('foo', listener);
|
||||||
|
* console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v15.2.0, v14.17.0
|
||||||
|
*/
|
||||||
|
static getEventListeners(emitter: EventTarget | NodeJS.EventEmitter, name: string | symbol): Function[];
|
||||||
|
/**
|
||||||
|
* Returns the currently set max amount of listeners.
|
||||||
|
*
|
||||||
|
* For `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on
|
||||||
|
* the emitter.
|
||||||
|
*
|
||||||
|
* For `EventTarget`s this is the only way to get the max event listeners for the
|
||||||
|
* event target. If the number of event handlers on a single EventTarget exceeds
|
||||||
|
* the max set, the EventTarget will print a warning.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* const ee = new EventEmitter();
|
||||||
|
* console.log(getMaxListeners(ee)); // 10
|
||||||
|
* setMaxListeners(11, ee);
|
||||||
|
* console.log(getMaxListeners(ee)); // 11
|
||||||
|
* }
|
||||||
|
* {
|
||||||
|
* const et = new EventTarget();
|
||||||
|
* console.log(getMaxListeners(et)); // 10
|
||||||
|
* setMaxListeners(11, et);
|
||||||
|
* console.log(getMaxListeners(et)); // 11
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v19.9.0
|
||||||
|
*/
|
||||||
|
static getMaxListeners(emitter: EventTarget | NodeJS.EventEmitter): number;
|
||||||
|
/**
|
||||||
|
* ```js
|
||||||
|
* import { setMaxListeners, EventEmitter } from 'node:events';
|
||||||
|
*
|
||||||
|
* const target = new EventTarget();
|
||||||
|
* const emitter = new EventEmitter();
|
||||||
|
*
|
||||||
|
* setMaxListeners(5, target, emitter);
|
||||||
|
* ```
|
||||||
|
* @since v15.4.0
|
||||||
|
* @param n A non-negative number. The maximum number of listeners per `EventTarget` event.
|
||||||
|
* @param eventTargets Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, `n` is set as the default max for all newly created {EventTarget} and {EventEmitter}
|
||||||
|
* objects.
|
||||||
|
*/
|
||||||
|
static setMaxListeners(n?: number, ...eventTargets: Array<EventTarget | NodeJS.EventEmitter>): void;
|
||||||
|
/**
|
||||||
|
* Listens once to the `abort` event on the provided `signal`.
|
||||||
|
*
|
||||||
|
* Listening to the `abort` event on abort signals is unsafe and may
|
||||||
|
* lead to resource leaks since another third party with the signal can
|
||||||
|
* call `e.stopImmediatePropagation()`. Unfortunately Node.js cannot change
|
||||||
|
* this since it would violate the web standard. Additionally, the original
|
||||||
|
* API makes it easy to forget to remove listeners.
|
||||||
|
*
|
||||||
|
* This API allows safely using `AbortSignal`s in Node.js APIs by solving these
|
||||||
|
* two issues by listening to the event such that `stopImmediatePropagation` does
|
||||||
|
* not prevent the listener from running.
|
||||||
|
*
|
||||||
|
* Returns a disposable so that it may be unsubscribed from more easily.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { addAbortListener } from 'node:events';
|
||||||
|
*
|
||||||
|
* function example(signal) {
|
||||||
|
* let disposable;
|
||||||
|
* try {
|
||||||
|
* signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
|
||||||
|
* disposable = addAbortListener(signal, (e) => {
|
||||||
|
* // Do something when signal is aborted.
|
||||||
|
* });
|
||||||
|
* } finally {
|
||||||
|
* disposable?.[Symbol.dispose]();
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
* @since v20.5.0
|
||||||
|
* @return Disposable that removes the `abort` listener.
|
||||||
|
*/
|
||||||
|
static addAbortListener(signal: AbortSignal, resource: (event: Event) => void): Disposable;
|
||||||
|
/**
|
||||||
|
* This symbol shall be used to install a listener for only monitoring `'error'` events. Listeners installed using this symbol are called before the regular `'error'` listeners are called.
|
||||||
|
*
|
||||||
|
* Installing a listener using this symbol does not change the behavior once an `'error'` event is emitted. Therefore, the process will still crash if no
|
||||||
|
* regular `'error'` listener is installed.
|
||||||
|
* @since v13.6.0, v12.17.0
|
||||||
|
*/
|
||||||
|
static readonly errorMonitor: unique symbol;
|
||||||
|
/**
|
||||||
|
* Value: `Symbol.for('nodejs.rejection')`
|
||||||
|
*
|
||||||
|
* See how to write a custom `rejection handler`.
|
||||||
|
* @since v13.4.0, v12.16.0
|
||||||
|
*/
|
||||||
|
static readonly captureRejectionSymbol: unique symbol;
|
||||||
|
/**
|
||||||
|
* Value: [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
|
||||||
|
*
|
||||||
|
* Change the default `captureRejections` option on all new `EventEmitter` objects.
|
||||||
|
* @since v13.4.0, v12.16.0
|
||||||
|
*/
|
||||||
|
static captureRejections: boolean;
|
||||||
|
/**
|
||||||
|
* By default, a maximum of `10` listeners can be registered for any single
|
||||||
|
* event. This limit can be changed for individual `EventEmitter` instances
|
||||||
|
* using the `emitter.setMaxListeners(n)` method. To change the default
|
||||||
|
* for _all_`EventEmitter` instances, the `events.defaultMaxListeners` property
|
||||||
|
* can be used. If this value is not a positive number, a `RangeError` is thrown.
|
||||||
|
*
|
||||||
|
* Take caution when setting the `events.defaultMaxListeners` because the
|
||||||
|
* change affects _all_ `EventEmitter` instances, including those created before
|
||||||
|
* the change is made. However, calling `emitter.setMaxListeners(n)` still has
|
||||||
|
* precedence over `events.defaultMaxListeners`.
|
||||||
|
*
|
||||||
|
* This is not a hard limit. The `EventEmitter` instance will allow
|
||||||
|
* more listeners to be added but will output a trace warning to stderr indicating
|
||||||
|
* that a "possible EventEmitter memory leak" has been detected. For any single
|
||||||
|
* `EventEmitter`, the `emitter.getMaxListeners()` and `emitter.setMaxListeners()` methods can be used to
|
||||||
|
* temporarily avoid this warning:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
* const emitter = new EventEmitter();
|
||||||
|
* emitter.setMaxListeners(emitter.getMaxListeners() + 1);
|
||||||
|
* emitter.once('event', () => {
|
||||||
|
* // do stuff
|
||||||
|
* emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The `--trace-warnings` command-line flag can be used to display the
|
||||||
|
* stack trace for such warnings.
|
||||||
|
*
|
||||||
|
* The emitted warning can be inspected with `process.on('warning')` and will
|
||||||
|
* have the additional `emitter`, `type`, and `count` properties, referring to
|
||||||
|
* the event emitter instance, the event's name and the number of attached
|
||||||
|
* listeners, respectively.
|
||||||
|
* Its `name` property is set to `'MaxListenersExceededWarning'`.
|
||||||
|
* @since v0.11.2
|
||||||
|
*/
|
||||||
|
static defaultMaxListeners: number;
|
||||||
|
}
|
||||||
|
import internal = require("node:events");
|
||||||
|
namespace EventEmitter {
|
||||||
|
// Should just be `export { EventEmitter }`, but that doesn't work in TypeScript 3.4
|
||||||
|
export { internal as EventEmitter };
|
||||||
|
export interface Abortable {
|
||||||
|
/**
|
||||||
|
* When provided the corresponding `AbortController` can be used to cancel an asynchronous action.
|
||||||
|
*/
|
||||||
|
signal?: AbortSignal | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface EventEmitterReferencingAsyncResource extends AsyncResource {
|
||||||
|
readonly eventEmitter: EventEmitterAsyncResource;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface EventEmitterAsyncResourceOptions extends AsyncResourceOptions, EventEmitterOptions {
|
||||||
|
/**
|
||||||
|
* The type of async event, this is required when instantiating `EventEmitterAsyncResource`
|
||||||
|
* directly rather than as a child class.
|
||||||
|
* @default new.target.name if instantiated as a child class.
|
||||||
|
*/
|
||||||
|
name?: string | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Integrates `EventEmitter` with `AsyncResource` for `EventEmitter`s that
|
||||||
|
* require manual async tracking. Specifically, all events emitted by instances
|
||||||
|
* of `events.EventEmitterAsyncResource` will run within its `async context`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitterAsyncResource, EventEmitter } from 'node:events';
|
||||||
|
* import { notStrictEqual, strictEqual } from 'node:assert';
|
||||||
|
* import { executionAsyncId, triggerAsyncId } from 'node:async_hooks';
|
||||||
|
*
|
||||||
|
* // Async tracking tooling will identify this as 'Q'.
|
||||||
|
* const ee1 = new EventEmitterAsyncResource({ name: 'Q' });
|
||||||
|
*
|
||||||
|
* // 'foo' listeners will run in the EventEmitters async context.
|
||||||
|
* ee1.on('foo', () => {
|
||||||
|
* strictEqual(executionAsyncId(), ee1.asyncId);
|
||||||
|
* strictEqual(triggerAsyncId(), ee1.triggerAsyncId);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* const ee2 = new EventEmitter();
|
||||||
|
*
|
||||||
|
* // 'foo' listeners on ordinary EventEmitters that do not track async
|
||||||
|
* // context, however, run in the same async context as the emit().
|
||||||
|
* ee2.on('foo', () => {
|
||||||
|
* notStrictEqual(executionAsyncId(), ee2.asyncId);
|
||||||
|
* notStrictEqual(triggerAsyncId(), ee2.triggerAsyncId);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* Promise.resolve().then(() => {
|
||||||
|
* ee1.emit('foo');
|
||||||
|
* ee2.emit('foo');
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The `EventEmitterAsyncResource` class has the same methods and takes the
|
||||||
|
* same options as `EventEmitter` and `AsyncResource` themselves.
|
||||||
|
* @since v17.4.0, v16.14.0
|
||||||
|
*/
|
||||||
|
export class EventEmitterAsyncResource extends EventEmitter {
|
||||||
|
/**
|
||||||
|
* @param options Only optional in child class.
|
||||||
|
*/
|
||||||
|
constructor(options?: EventEmitterAsyncResourceOptions);
|
||||||
|
/**
|
||||||
|
* Call all `destroy` hooks. This should only ever be called once. An error will
|
||||||
|
* be thrown if it is called more than once. This **must** be manually called. If
|
||||||
|
* the resource is left to be collected by the GC then the `destroy` hooks will
|
||||||
|
* never be called.
|
||||||
|
*/
|
||||||
|
emitDestroy(): void;
|
||||||
|
/**
|
||||||
|
* The unique `asyncId` assigned to the resource.
|
||||||
|
*/
|
||||||
|
readonly asyncId: number;
|
||||||
|
/**
|
||||||
|
* The same triggerAsyncId that is passed to the AsyncResource constructor.
|
||||||
|
*/
|
||||||
|
readonly triggerAsyncId: number;
|
||||||
|
/**
|
||||||
|
* The returned `AsyncResource` object has an additional `eventEmitter` property
|
||||||
|
* that provides a reference to this `EventEmitterAsyncResource`.
|
||||||
|
*/
|
||||||
|
readonly asyncResource: EventEmitterReferencingAsyncResource;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* The `NodeEventTarget` is a Node.js-specific extension to `EventTarget`
|
||||||
|
* that emulates a subset of the `EventEmitter` API.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
export interface NodeEventTarget extends EventTarget {
|
||||||
|
/**
|
||||||
|
* Node.js-specific extension to the `EventTarget` class that emulates the
|
||||||
|
* equivalent `EventEmitter` API. The only difference between `addListener()` and
|
||||||
|
* `addEventListener()` is that `addListener()` will return a reference to the
|
||||||
|
* `EventTarget`.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
addListener(type: string, listener: (arg: any) => void): this;
|
||||||
|
/**
|
||||||
|
* Node.js-specific extension to the `EventTarget` class that dispatches the
|
||||||
|
* `arg` to the list of handlers for `type`.
|
||||||
|
* @since v15.2.0
|
||||||
|
* @returns `true` if event listeners registered for the `type` exist,
|
||||||
|
* otherwise `false`.
|
||||||
|
*/
|
||||||
|
emit(type: string, arg: any): boolean;
|
||||||
|
/**
|
||||||
|
* Node.js-specific extension to the `EventTarget` class that returns an array
|
||||||
|
* of event `type` names for which event listeners are registered.
|
||||||
|
* @since 14.5.0
|
||||||
|
*/
|
||||||
|
eventNames(): string[];
|
||||||
|
/**
|
||||||
|
* Node.js-specific extension to the `EventTarget` class that returns the number
|
||||||
|
* of event listeners registered for the `type`.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
listenerCount(type: string): number;
|
||||||
|
/**
|
||||||
|
* Node.js-specific extension to the `EventTarget` class that sets the number
|
||||||
|
* of max event listeners as `n`.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
setMaxListeners(n: number): void;
|
||||||
|
/**
|
||||||
|
* Node.js-specific extension to the `EventTarget` class that returns the number
|
||||||
|
* of max event listeners.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
getMaxListeners(): number;
|
||||||
|
/**
|
||||||
|
* Node.js-specific alias for `eventTarget.removeEventListener()`.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
off(type: string, listener: (arg: any) => void, options?: EventListenerOptions): this;
|
||||||
|
/**
|
||||||
|
* Node.js-specific alias for `eventTarget.addEventListener()`.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
on(type: string, listener: (arg: any) => void): this;
|
||||||
|
/**
|
||||||
|
* Node.js-specific extension to the `EventTarget` class that adds a `once`
|
||||||
|
* listener for the given event `type`. This is equivalent to calling `on`
|
||||||
|
* with the `once` option set to `true`.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
once(type: string, listener: (arg: any) => void): this;
|
||||||
|
/**
|
||||||
|
* Node.js-specific extension to the `EventTarget` class. If `type` is specified,
|
||||||
|
* removes all registered listeners for `type`, otherwise removes all registered
|
||||||
|
* listeners.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
removeAllListeners(type?: string): this;
|
||||||
|
/**
|
||||||
|
* Node.js-specific extension to the `EventTarget` class that removes the
|
||||||
|
* `listener` for the given `type`. The only difference between `removeListener()`
|
||||||
|
* and `removeEventListener()` is that `removeListener()` will return a reference
|
||||||
|
* to the `EventTarget`.
|
||||||
|
* @since v14.5.0
|
||||||
|
*/
|
||||||
|
removeListener(type: string, listener: (arg: any) => void, options?: EventListenerOptions): this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
global {
|
||||||
|
namespace NodeJS {
|
||||||
|
interface EventEmitter<T extends EventMap<T> = DefaultEventMap> {
|
||||||
|
[EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: Key<K, T>, ...args: Args<K, T>): void;
|
||||||
|
/**
|
||||||
|
* Alias for `emitter.on(eventName, listener)`.
|
||||||
|
* @since v0.1.26
|
||||||
|
*/
|
||||||
|
addListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
|
||||||
|
/**
|
||||||
|
* Adds the `listener` function to the end of the listeners array for the event
|
||||||
|
* named `eventName`. No checks are made to see if the `listener` has already
|
||||||
|
* been added. Multiple calls passing the same combination of `eventName` and
|
||||||
|
* `listener` will result in the `listener` being added, and called, multiple times.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* server.on('connection', (stream) => {
|
||||||
|
* console.log('someone connected!');
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
||||||
|
*
|
||||||
|
* By default, event listeners are invoked in the order they are added. The `emitter.prependListener()` method can be used as an alternative to add the
|
||||||
|
* event listener to the beginning of the listeners array.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
* const myEE = new EventEmitter();
|
||||||
|
* myEE.on('foo', () => console.log('a'));
|
||||||
|
* myEE.prependListener('foo', () => console.log('b'));
|
||||||
|
* myEE.emit('foo');
|
||||||
|
* // Prints:
|
||||||
|
* // b
|
||||||
|
* // a
|
||||||
|
* ```
|
||||||
|
* @since v0.1.101
|
||||||
|
* @param eventName The name of the event.
|
||||||
|
* @param listener The callback function
|
||||||
|
*/
|
||||||
|
on<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
|
||||||
|
/**
|
||||||
|
* Adds a **one-time** `listener` function for the event named `eventName`. The
|
||||||
|
* next time `eventName` is triggered, this listener is removed and then invoked.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* server.once('connection', (stream) => {
|
||||||
|
* console.log('Ah, we have our first user!');
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
||||||
|
*
|
||||||
|
* By default, event listeners are invoked in the order they are added. The `emitter.prependOnceListener()` method can be used as an alternative to add the
|
||||||
|
* event listener to the beginning of the listeners array.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
* const myEE = new EventEmitter();
|
||||||
|
* myEE.once('foo', () => console.log('a'));
|
||||||
|
* myEE.prependOnceListener('foo', () => console.log('b'));
|
||||||
|
* myEE.emit('foo');
|
||||||
|
* // Prints:
|
||||||
|
* // b
|
||||||
|
* // a
|
||||||
|
* ```
|
||||||
|
* @since v0.3.0
|
||||||
|
* @param eventName The name of the event.
|
||||||
|
* @param listener The callback function
|
||||||
|
*/
|
||||||
|
once<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
|
||||||
|
/**
|
||||||
|
* Removes the specified `listener` from the listener array for the event named `eventName`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const callback = (stream) => {
|
||||||
|
* console.log('someone connected!');
|
||||||
|
* };
|
||||||
|
* server.on('connection', callback);
|
||||||
|
* // ...
|
||||||
|
* server.removeListener('connection', callback);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* `removeListener()` will remove, at most, one instance of a listener from the
|
||||||
|
* listener array. If any single listener has been added multiple times to the
|
||||||
|
* listener array for the specified `eventName`, then `removeListener()` must be
|
||||||
|
* called multiple times to remove each instance.
|
||||||
|
*
|
||||||
|
* Once an event is emitted, all listeners attached to it at the
|
||||||
|
* time of emitting are called in order. This implies that any `removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution
|
||||||
|
* will not remove them from`emit()` in progress. Subsequent events behave as expected.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
* class MyEmitter extends EventEmitter {}
|
||||||
|
* const myEmitter = new MyEmitter();
|
||||||
|
*
|
||||||
|
* const callbackA = () => {
|
||||||
|
* console.log('A');
|
||||||
|
* myEmitter.removeListener('event', callbackB);
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* const callbackB = () => {
|
||||||
|
* console.log('B');
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* myEmitter.on('event', callbackA);
|
||||||
|
*
|
||||||
|
* myEmitter.on('event', callbackB);
|
||||||
|
*
|
||||||
|
* // callbackA removes listener callbackB but it will still be called.
|
||||||
|
* // Internal listener array at time of emit [callbackA, callbackB]
|
||||||
|
* myEmitter.emit('event');
|
||||||
|
* // Prints:
|
||||||
|
* // A
|
||||||
|
* // B
|
||||||
|
*
|
||||||
|
* // callbackB is now removed.
|
||||||
|
* // Internal listener array [callbackA]
|
||||||
|
* myEmitter.emit('event');
|
||||||
|
* // Prints:
|
||||||
|
* // A
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Because listeners are managed using an internal array, calling this will
|
||||||
|
* change the position indices of any listener registered _after_ the listener
|
||||||
|
* being removed. This will not impact the order in which listeners are called,
|
||||||
|
* but it means that any copies of the listener array as returned by
|
||||||
|
* the `emitter.listeners()` method will need to be recreated.
|
||||||
|
*
|
||||||
|
* When a single function has been added as a handler multiple times for a single
|
||||||
|
* event (as in the example below), `removeListener()` will remove the most
|
||||||
|
* recently added instance. In the example the `once('ping')` listener is removed:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
* const ee = new EventEmitter();
|
||||||
|
*
|
||||||
|
* function pong() {
|
||||||
|
* console.log('pong');
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* ee.on('ping', pong);
|
||||||
|
* ee.once('ping', pong);
|
||||||
|
* ee.removeListener('ping', pong);
|
||||||
|
*
|
||||||
|
* ee.emit('ping');
|
||||||
|
* ee.emit('ping');
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
||||||
|
* @since v0.1.26
|
||||||
|
*/
|
||||||
|
removeListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
|
||||||
|
/**
|
||||||
|
* Alias for `emitter.removeListener()`.
|
||||||
|
* @since v10.0.0
|
||||||
|
*/
|
||||||
|
off<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
|
||||||
|
/**
|
||||||
|
* Removes all listeners, or those of the specified `eventName`.
|
||||||
|
*
|
||||||
|
* It is bad practice to remove listeners added elsewhere in the code,
|
||||||
|
* particularly when the `EventEmitter` instance was created by some other
|
||||||
|
* component or module (e.g. sockets or file streams).
|
||||||
|
*
|
||||||
|
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
||||||
|
* @since v0.1.26
|
||||||
|
*/
|
||||||
|
removeAllListeners(eventName?: Key<unknown, T>): this;
|
||||||
|
/**
|
||||||
|
* By default `EventEmitter`s will print a warning if more than `10` listeners are
|
||||||
|
* added for a particular event. This is a useful default that helps finding
|
||||||
|
* memory leaks. The `emitter.setMaxListeners()` method allows the limit to be
|
||||||
|
* modified for this specific `EventEmitter` instance. The value can be set to `Infinity` (or `0`) to indicate an unlimited number of listeners.
|
||||||
|
*
|
||||||
|
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
||||||
|
* @since v0.3.5
|
||||||
|
*/
|
||||||
|
setMaxListeners(n: number): this;
|
||||||
|
/**
|
||||||
|
* Returns the current max listener value for the `EventEmitter` which is either
|
||||||
|
* set by `emitter.setMaxListeners(n)` or defaults to {@link EventEmitter.defaultMaxListeners}.
|
||||||
|
* @since v1.0.0
|
||||||
|
*/
|
||||||
|
getMaxListeners(): number;
|
||||||
|
/**
|
||||||
|
* Returns a copy of the array of listeners for the event named `eventName`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* server.on('connection', (stream) => {
|
||||||
|
* console.log('someone connected!');
|
||||||
|
* });
|
||||||
|
* console.log(util.inspect(server.listeners('connection')));
|
||||||
|
* // Prints: [ [Function] ]
|
||||||
|
* ```
|
||||||
|
* @since v0.1.26
|
||||||
|
*/
|
||||||
|
listeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
|
||||||
|
/**
|
||||||
|
* Returns a copy of the array of listeners for the event named `eventName`,
|
||||||
|
* including any wrappers (such as those created by `.once()`).
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
* const emitter = new EventEmitter();
|
||||||
|
* emitter.once('log', () => console.log('log once'));
|
||||||
|
*
|
||||||
|
* // Returns a new Array with a function `onceWrapper` which has a property
|
||||||
|
* // `listener` which contains the original listener bound above
|
||||||
|
* const listeners = emitter.rawListeners('log');
|
||||||
|
* const logFnWrapper = listeners[0];
|
||||||
|
*
|
||||||
|
* // Logs "log once" to the console and does not unbind the `once` event
|
||||||
|
* logFnWrapper.listener();
|
||||||
|
*
|
||||||
|
* // Logs "log once" to the console and removes the listener
|
||||||
|
* logFnWrapper();
|
||||||
|
*
|
||||||
|
* emitter.on('log', () => console.log('log persistently'));
|
||||||
|
* // Will return a new Array with a single function bound by `.on()` above
|
||||||
|
* const newListeners = emitter.rawListeners('log');
|
||||||
|
*
|
||||||
|
* // Logs "log persistently" twice
|
||||||
|
* newListeners[0]();
|
||||||
|
* emitter.emit('log');
|
||||||
|
* ```
|
||||||
|
* @since v9.4.0
|
||||||
|
*/
|
||||||
|
rawListeners<K>(eventName: Key<K, T>): Array<Listener2<K, T>>;
|
||||||
|
/**
|
||||||
|
* Synchronously calls each of the listeners registered for the event named `eventName`, in the order they were registered, passing the supplied arguments
|
||||||
|
* to each.
|
||||||
|
*
|
||||||
|
* Returns `true` if the event had listeners, `false` otherwise.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
* const myEmitter = new EventEmitter();
|
||||||
|
*
|
||||||
|
* // First listener
|
||||||
|
* myEmitter.on('event', function firstListener() {
|
||||||
|
* console.log('Helloooo! first listener');
|
||||||
|
* });
|
||||||
|
* // Second listener
|
||||||
|
* myEmitter.on('event', function secondListener(arg1, arg2) {
|
||||||
|
* console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
|
||||||
|
* });
|
||||||
|
* // Third listener
|
||||||
|
* myEmitter.on('event', function thirdListener(...args) {
|
||||||
|
* const parameters = args.join(', ');
|
||||||
|
* console.log(`event with parameters ${parameters} in third listener`);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* console.log(myEmitter.listeners('event'));
|
||||||
|
*
|
||||||
|
* myEmitter.emit('event', 1, 2, 3, 4, 5);
|
||||||
|
*
|
||||||
|
* // Prints:
|
||||||
|
* // [
|
||||||
|
* // [Function: firstListener],
|
||||||
|
* // [Function: secondListener],
|
||||||
|
* // [Function: thirdListener]
|
||||||
|
* // ]
|
||||||
|
* // Helloooo! first listener
|
||||||
|
* // event with parameters 1, 2 in second listener
|
||||||
|
* // event with parameters 1, 2, 3, 4, 5 in third listener
|
||||||
|
* ```
|
||||||
|
* @since v0.1.26
|
||||||
|
*/
|
||||||
|
emit<K>(eventName: Key<K, T>, ...args: Args<K, T>): boolean;
|
||||||
|
/**
|
||||||
|
* Returns the number of listeners listening for the event named `eventName`.
|
||||||
|
* If `listener` is provided, it will return how many times the listener is found
|
||||||
|
* in the list of the listeners of the event.
|
||||||
|
* @since v3.2.0
|
||||||
|
* @param eventName The name of the event being listened for
|
||||||
|
* @param listener The event handler function
|
||||||
|
*/
|
||||||
|
listenerCount<K>(eventName: Key<K, T>, listener?: Listener2<K, T>): number;
|
||||||
|
/**
|
||||||
|
* Adds the `listener` function to the _beginning_ of the listeners array for the
|
||||||
|
* event named `eventName`. No checks are made to see if the `listener` has
|
||||||
|
* already been added. Multiple calls passing the same combination of `eventName`
|
||||||
|
* and `listener` will result in the `listener` being added, and called, multiple times.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* server.prependListener('connection', (stream) => {
|
||||||
|
* console.log('someone connected!');
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
||||||
|
* @since v6.0.0
|
||||||
|
* @param eventName The name of the event.
|
||||||
|
* @param listener The callback function
|
||||||
|
*/
|
||||||
|
prependListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
|
||||||
|
/**
|
||||||
|
* Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this
|
||||||
|
* listener is removed, and then invoked.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* server.prependOnceListener('connection', (stream) => {
|
||||||
|
* console.log('Ah, we have our first user!');
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Returns a reference to the `EventEmitter`, so that calls can be chained.
|
||||||
|
* @since v6.0.0
|
||||||
|
* @param eventName The name of the event.
|
||||||
|
* @param listener The callback function
|
||||||
|
*/
|
||||||
|
prependOnceListener<K>(eventName: Key<K, T>, listener: Listener1<K, T>): this;
|
||||||
|
/**
|
||||||
|
* Returns an array listing the events for which the emitter has registered
|
||||||
|
* listeners. The values in the array are strings or `Symbol`s.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import { EventEmitter } from 'node:events';
|
||||||
|
*
|
||||||
|
* const myEE = new EventEmitter();
|
||||||
|
* myEE.on('foo', () => {});
|
||||||
|
* myEE.on('bar', () => {});
|
||||||
|
*
|
||||||
|
* const sym = Symbol('symbol');
|
||||||
|
* myEE.on(sym, () => {});
|
||||||
|
*
|
||||||
|
* console.log(myEE.eventNames());
|
||||||
|
* // Prints: [ 'foo', 'bar', Symbol(symbol) ]
|
||||||
|
* ```
|
||||||
|
* @since v6.0.0
|
||||||
|
*/
|
||||||
|
eventNames(): Array<(string | symbol) & Key2<unknown, T>>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export = EventEmitter;
|
||||||
|
}
|
||||||
|
declare module "node:events" {
|
||||||
|
import events = require("events");
|
||||||
|
export = events;
|
||||||
|
}
|
||||||
4714
node_modules/@types/node/fs.d.ts
generated
vendored
Normal file
4714
node_modules/@types/node/fs.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1317
node_modules/@types/node/fs/promises.d.ts
generated
vendored
Normal file
1317
node_modules/@types/node/fs/promises.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
170
node_modules/@types/node/globals.d.ts
generated
vendored
Normal file
170
node_modules/@types/node/globals.d.ts
generated
vendored
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
declare var global: typeof globalThis;
|
||||||
|
|
||||||
|
declare var process: NodeJS.Process;
|
||||||
|
declare var console: Console;
|
||||||
|
|
||||||
|
interface ErrorConstructor {
|
||||||
|
/**
|
||||||
|
* Creates a `.stack` property on `targetObject`, which when accessed returns
|
||||||
|
* a string representing the location in the code at which
|
||||||
|
* `Error.captureStackTrace()` was called.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const myObject = {};
|
||||||
|
* Error.captureStackTrace(myObject);
|
||||||
|
* myObject.stack; // Similar to `new Error().stack`
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The first line of the trace will be prefixed with
|
||||||
|
* `${myObject.name}: ${myObject.message}`.
|
||||||
|
*
|
||||||
|
* The optional `constructorOpt` argument accepts a function. If given, all frames
|
||||||
|
* above `constructorOpt`, including `constructorOpt`, will be omitted from the
|
||||||
|
* generated stack trace.
|
||||||
|
*
|
||||||
|
* The `constructorOpt` argument is useful for hiding implementation
|
||||||
|
* details of error generation from the user. For instance:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* function a() {
|
||||||
|
* b();
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* function b() {
|
||||||
|
* c();
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* function c() {
|
||||||
|
* // Create an error without stack trace to avoid calculating the stack trace twice.
|
||||||
|
* const { stackTraceLimit } = Error;
|
||||||
|
* Error.stackTraceLimit = 0;
|
||||||
|
* const error = new Error();
|
||||||
|
* Error.stackTraceLimit = stackTraceLimit;
|
||||||
|
*
|
||||||
|
* // Capture the stack trace above function b
|
||||||
|
* Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
|
||||||
|
* throw error;
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* a();
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
||||||
|
/**
|
||||||
|
* @see https://v8.dev/docs/stack-trace-api#customizing-stack-traces
|
||||||
|
*/
|
||||||
|
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
||||||
|
/**
|
||||||
|
* The `Error.stackTraceLimit` property specifies the number of stack frames
|
||||||
|
* collected by a stack trace (whether generated by `new Error().stack` or
|
||||||
|
* `Error.captureStackTrace(obj)`).
|
||||||
|
*
|
||||||
|
* The default value is `10` but may be set to any valid JavaScript number. Changes
|
||||||
|
* will affect any stack trace captured _after_ the value has been changed.
|
||||||
|
*
|
||||||
|
* If set to a non-number value, or set to a negative number, stack traces will
|
||||||
|
* not capture any frames.
|
||||||
|
*/
|
||||||
|
stackTraceLimit: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable this API with the `--expose-gc` CLI flag.
|
||||||
|
*/
|
||||||
|
declare var gc: NodeJS.GCFunction | undefined;
|
||||||
|
|
||||||
|
declare namespace NodeJS {
|
||||||
|
interface CallSite {
|
||||||
|
getColumnNumber(): number | null;
|
||||||
|
getEnclosingColumnNumber(): number | null;
|
||||||
|
getEnclosingLineNumber(): number | null;
|
||||||
|
getEvalOrigin(): string | undefined;
|
||||||
|
getFileName(): string | null;
|
||||||
|
getFunction(): Function | undefined;
|
||||||
|
getFunctionName(): string | null;
|
||||||
|
getLineNumber(): number | null;
|
||||||
|
getMethodName(): string | null;
|
||||||
|
getPosition(): number;
|
||||||
|
getPromiseIndex(): number | null;
|
||||||
|
getScriptHash(): string;
|
||||||
|
getScriptNameOrSourceURL(): string | null;
|
||||||
|
getThis(): unknown;
|
||||||
|
getTypeName(): string | null;
|
||||||
|
isAsync(): boolean;
|
||||||
|
isConstructor(): boolean;
|
||||||
|
isEval(): boolean;
|
||||||
|
isNative(): boolean;
|
||||||
|
isPromiseAll(): boolean;
|
||||||
|
isToplevel(): boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ErrnoException extends Error {
|
||||||
|
errno?: number | undefined;
|
||||||
|
code?: string | undefined;
|
||||||
|
path?: string | undefined;
|
||||||
|
syscall?: string | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ReadableStream extends EventEmitter {
|
||||||
|
readable: boolean;
|
||||||
|
read(size?: number): string | Buffer;
|
||||||
|
setEncoding(encoding: BufferEncoding): this;
|
||||||
|
pause(): this;
|
||||||
|
resume(): this;
|
||||||
|
isPaused(): boolean;
|
||||||
|
pipe<T extends WritableStream>(destination: T, options?: { end?: boolean | undefined }): T;
|
||||||
|
unpipe(destination?: WritableStream): this;
|
||||||
|
unshift(chunk: string | Uint8Array, encoding?: BufferEncoding): void;
|
||||||
|
wrap(oldStream: ReadableStream): this;
|
||||||
|
[Symbol.asyncIterator](): AsyncIterableIterator<string | Buffer>;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface WritableStream extends EventEmitter {
|
||||||
|
writable: boolean;
|
||||||
|
write(buffer: Uint8Array | string, cb?: (err?: Error | null) => void): boolean;
|
||||||
|
write(str: string, encoding?: BufferEncoding, cb?: (err?: Error | null) => void): boolean;
|
||||||
|
end(cb?: () => void): this;
|
||||||
|
end(data: string | Uint8Array, cb?: () => void): this;
|
||||||
|
end(str: string, encoding?: BufferEncoding, cb?: () => void): this;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ReadWriteStream extends ReadableStream, WritableStream {}
|
||||||
|
|
||||||
|
interface RefCounted {
|
||||||
|
ref(): this;
|
||||||
|
unref(): this;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Dict<T> {
|
||||||
|
[key: string]: T | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ReadOnlyDict<T> {
|
||||||
|
readonly [key: string]: T | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
type PartialOptions<T> = { [K in keyof T]?: T[K] | undefined };
|
||||||
|
|
||||||
|
interface GCFunction {
|
||||||
|
(minor?: boolean): void;
|
||||||
|
(options: NodeJS.GCOptions & { execution: "async" }): Promise<void>;
|
||||||
|
(options: NodeJS.GCOptions): void;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GCOptions {
|
||||||
|
execution?: "sync" | "async" | undefined;
|
||||||
|
flavor?: "regular" | "last-resort" | undefined;
|
||||||
|
type?: "major-snapshot" | "major" | "minor" | undefined;
|
||||||
|
filename?: string | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** An iterable iterator returned by the Node.js API. */
|
||||||
|
interface Iterator<T, TReturn = undefined, TNext = any> extends IteratorObject<T, TReturn, TNext> {
|
||||||
|
[Symbol.iterator](): NodeJS.Iterator<T, TReturn, TNext>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** An async iterable iterator returned by the Node.js API. */
|
||||||
|
interface AsyncIterator<T, TReturn = undefined, TNext = any> extends AsyncIteratorObject<T, TReturn, TNext> {
|
||||||
|
[Symbol.asyncIterator](): NodeJS.AsyncIterator<T, TReturn, TNext>;
|
||||||
|
}
|
||||||
|
}
|
||||||
41
node_modules/@types/node/globals.typedarray.d.ts
generated
vendored
Normal file
41
node_modules/@types/node/globals.typedarray.d.ts
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
export {}; // Make this a module
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
namespace NodeJS {
|
||||||
|
type TypedArray<TArrayBuffer extends ArrayBufferLike = ArrayBufferLike> =
|
||||||
|
| Uint8Array<TArrayBuffer>
|
||||||
|
| Uint8ClampedArray<TArrayBuffer>
|
||||||
|
| Uint16Array<TArrayBuffer>
|
||||||
|
| Uint32Array<TArrayBuffer>
|
||||||
|
| Int8Array<TArrayBuffer>
|
||||||
|
| Int16Array<TArrayBuffer>
|
||||||
|
| Int32Array<TArrayBuffer>
|
||||||
|
| BigUint64Array<TArrayBuffer>
|
||||||
|
| BigInt64Array<TArrayBuffer>
|
||||||
|
| Float16Array<TArrayBuffer>
|
||||||
|
| Float32Array<TArrayBuffer>
|
||||||
|
| Float64Array<TArrayBuffer>;
|
||||||
|
type ArrayBufferView<TArrayBuffer extends ArrayBufferLike = ArrayBufferLike> =
|
||||||
|
| TypedArray<TArrayBuffer>
|
||||||
|
| DataView<TArrayBuffer>;
|
||||||
|
|
||||||
|
// The following aliases are required to allow use of non-shared ArrayBufferViews in @types/node
|
||||||
|
// while maintaining compatibility with TS <=5.6.
|
||||||
|
// TODO: remove once @types/node no longer supports TS 5.6, and replace with native types.
|
||||||
|
type NonSharedUint8Array = Uint8Array<ArrayBuffer>;
|
||||||
|
type NonSharedUint8ClampedArray = Uint8ClampedArray<ArrayBuffer>;
|
||||||
|
type NonSharedUint16Array = Uint16Array<ArrayBuffer>;
|
||||||
|
type NonSharedUint32Array = Uint32Array<ArrayBuffer>;
|
||||||
|
type NonSharedInt8Array = Int8Array<ArrayBuffer>;
|
||||||
|
type NonSharedInt16Array = Int16Array<ArrayBuffer>;
|
||||||
|
type NonSharedInt32Array = Int32Array<ArrayBuffer>;
|
||||||
|
type NonSharedBigUint64Array = BigUint64Array<ArrayBuffer>;
|
||||||
|
type NonSharedBigInt64Array = BigInt64Array<ArrayBuffer>;
|
||||||
|
type NonSharedFloat16Array = Float16Array<ArrayBuffer>;
|
||||||
|
type NonSharedFloat32Array = Float32Array<ArrayBuffer>;
|
||||||
|
type NonSharedFloat64Array = Float64Array<ArrayBuffer>;
|
||||||
|
type NonSharedDataView = DataView<ArrayBuffer>;
|
||||||
|
type NonSharedTypedArray = TypedArray<ArrayBuffer>;
|
||||||
|
type NonSharedArrayBufferView = ArrayBufferView<ArrayBuffer>;
|
||||||
|
}
|
||||||
|
}
|
||||||
2134
node_modules/@types/node/http.d.ts
generated
vendored
Normal file
2134
node_modules/@types/node/http.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2756
node_modules/@types/node/http2.d.ts
generated
vendored
Normal file
2756
node_modules/@types/node/http2.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
579
node_modules/@types/node/https.d.ts
generated
vendored
Normal file
579
node_modules/@types/node/https.d.ts
generated
vendored
Normal file
@@ -0,0 +1,579 @@
|
|||||||
|
/**
|
||||||
|
* HTTPS is the HTTP protocol over TLS/SSL. In Node.js this is implemented as a
|
||||||
|
* separate module.
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/https.js)
|
||||||
|
*/
|
||||||
|
declare module "https" {
|
||||||
|
import { NonSharedBuffer } from "node:buffer";
|
||||||
|
import { Duplex } from "node:stream";
|
||||||
|
import * as tls from "node:tls";
|
||||||
|
import * as http from "node:http";
|
||||||
|
import { URL } from "node:url";
|
||||||
|
interface ServerOptions<
|
||||||
|
Request extends typeof http.IncomingMessage = typeof http.IncomingMessage,
|
||||||
|
Response extends typeof http.ServerResponse<InstanceType<Request>> = typeof http.ServerResponse,
|
||||||
|
> extends http.ServerOptions<Request, Response>, tls.TlsOptions {}
|
||||||
|
interface RequestOptions extends http.RequestOptions, tls.SecureContextOptions {
|
||||||
|
checkServerIdentity?:
|
||||||
|
| ((hostname: string, cert: tls.DetailedPeerCertificate) => Error | undefined)
|
||||||
|
| undefined;
|
||||||
|
rejectUnauthorized?: boolean | undefined; // Defaults to true
|
||||||
|
servername?: string | undefined; // SNI TLS Extension
|
||||||
|
}
|
||||||
|
interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions {
|
||||||
|
maxCachedSessions?: number | undefined;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* An `Agent` object for HTTPS similar to `http.Agent`. See {@link request} for more information.
|
||||||
|
* @since v0.4.5
|
||||||
|
*/
|
||||||
|
class Agent extends http.Agent {
|
||||||
|
constructor(options?: AgentOptions);
|
||||||
|
options: AgentOptions;
|
||||||
|
createConnection(
|
||||||
|
options: RequestOptions,
|
||||||
|
callback?: (err: Error | null, stream: Duplex) => void,
|
||||||
|
): Duplex | null | undefined;
|
||||||
|
getName(options?: RequestOptions): string;
|
||||||
|
}
|
||||||
|
interface Server<
|
||||||
|
Request extends typeof http.IncomingMessage = typeof http.IncomingMessage,
|
||||||
|
Response extends typeof http.ServerResponse<InstanceType<Request>> = typeof http.ServerResponse,
|
||||||
|
> extends http.Server<Request, Response> {}
|
||||||
|
/**
|
||||||
|
* See `http.Server` for more information.
|
||||||
|
* @since v0.3.4
|
||||||
|
*/
|
||||||
|
class Server<
|
||||||
|
Request extends typeof http.IncomingMessage = typeof http.IncomingMessage,
|
||||||
|
Response extends typeof http.ServerResponse<InstanceType<Request>> = typeof http.ServerResponse,
|
||||||
|
> extends tls.Server {
|
||||||
|
constructor(requestListener?: http.RequestListener<Request, Response>);
|
||||||
|
constructor(
|
||||||
|
options: ServerOptions<Request, Response>,
|
||||||
|
requestListener?: http.RequestListener<Request, Response>,
|
||||||
|
);
|
||||||
|
/**
|
||||||
|
* Closes all connections connected to this server.
|
||||||
|
* @since v18.2.0
|
||||||
|
*/
|
||||||
|
closeAllConnections(): void;
|
||||||
|
/**
|
||||||
|
* Closes all connections connected to this server which are not sending a request or waiting for a response.
|
||||||
|
* @since v18.2.0
|
||||||
|
*/
|
||||||
|
closeIdleConnections(): void;
|
||||||
|
addListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
addListener(event: "keylog", listener: (line: NonSharedBuffer, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
addListener(
|
||||||
|
event: "newSession",
|
||||||
|
listener: (sessionId: NonSharedBuffer, sessionData: NonSharedBuffer, callback: () => void) => void,
|
||||||
|
): this;
|
||||||
|
addListener(
|
||||||
|
event: "OCSPRequest",
|
||||||
|
listener: (
|
||||||
|
certificate: NonSharedBuffer,
|
||||||
|
issuer: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, resp: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
addListener(
|
||||||
|
event: "resumeSession",
|
||||||
|
listener: (
|
||||||
|
sessionId: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, sessionData: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
addListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
addListener(event: "close", listener: () => void): this;
|
||||||
|
addListener(event: "connection", listener: (socket: Duplex) => void): this;
|
||||||
|
addListener(event: "error", listener: (err: Error) => void): this;
|
||||||
|
addListener(event: "listening", listener: () => void): this;
|
||||||
|
addListener(event: "checkContinue", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
addListener(event: "checkExpectation", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
addListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this;
|
||||||
|
addListener(
|
||||||
|
event: "connect",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
addListener(event: "request", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
addListener(
|
||||||
|
event: "upgrade",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
emit(event: string, ...args: any[]): boolean;
|
||||||
|
emit(event: "keylog", line: NonSharedBuffer, tlsSocket: tls.TLSSocket): boolean;
|
||||||
|
emit(
|
||||||
|
event: "newSession",
|
||||||
|
sessionId: NonSharedBuffer,
|
||||||
|
sessionData: NonSharedBuffer,
|
||||||
|
callback: () => void,
|
||||||
|
): boolean;
|
||||||
|
emit(
|
||||||
|
event: "OCSPRequest",
|
||||||
|
certificate: NonSharedBuffer,
|
||||||
|
issuer: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, resp: Buffer | null) => void,
|
||||||
|
): boolean;
|
||||||
|
emit(
|
||||||
|
event: "resumeSession",
|
||||||
|
sessionId: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, sessionData: Buffer | null) => void,
|
||||||
|
): boolean;
|
||||||
|
emit(event: "secureConnection", tlsSocket: tls.TLSSocket): boolean;
|
||||||
|
emit(event: "tlsClientError", err: Error, tlsSocket: tls.TLSSocket): boolean;
|
||||||
|
emit(event: "close"): boolean;
|
||||||
|
emit(event: "connection", socket: Duplex): boolean;
|
||||||
|
emit(event: "error", err: Error): boolean;
|
||||||
|
emit(event: "listening"): boolean;
|
||||||
|
emit(
|
||||||
|
event: "checkContinue",
|
||||||
|
req: InstanceType<Request>,
|
||||||
|
res: InstanceType<Response>,
|
||||||
|
): boolean;
|
||||||
|
emit(
|
||||||
|
event: "checkExpectation",
|
||||||
|
req: InstanceType<Request>,
|
||||||
|
res: InstanceType<Response>,
|
||||||
|
): boolean;
|
||||||
|
emit(event: "clientError", err: Error, socket: Duplex): boolean;
|
||||||
|
emit(event: "connect", req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer): boolean;
|
||||||
|
emit(
|
||||||
|
event: "request",
|
||||||
|
req: InstanceType<Request>,
|
||||||
|
res: InstanceType<Response>,
|
||||||
|
): boolean;
|
||||||
|
emit(event: "upgrade", req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer): boolean;
|
||||||
|
on(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
on(event: "keylog", listener: (line: NonSharedBuffer, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
on(
|
||||||
|
event: "newSession",
|
||||||
|
listener: (sessionId: NonSharedBuffer, sessionData: NonSharedBuffer, callback: () => void) => void,
|
||||||
|
): this;
|
||||||
|
on(
|
||||||
|
event: "OCSPRequest",
|
||||||
|
listener: (
|
||||||
|
certificate: NonSharedBuffer,
|
||||||
|
issuer: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, resp: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
on(
|
||||||
|
event: "resumeSession",
|
||||||
|
listener: (
|
||||||
|
sessionId: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, sessionData: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
on(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
on(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
on(event: "close", listener: () => void): this;
|
||||||
|
on(event: "connection", listener: (socket: Duplex) => void): this;
|
||||||
|
on(event: "error", listener: (err: Error) => void): this;
|
||||||
|
on(event: "listening", listener: () => void): this;
|
||||||
|
on(event: "checkContinue", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
on(event: "checkExpectation", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
on(event: "clientError", listener: (err: Error, socket: Duplex) => void): this;
|
||||||
|
on(
|
||||||
|
event: "connect",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
on(event: "request", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
on(
|
||||||
|
event: "upgrade",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
once(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
once(event: "keylog", listener: (line: NonSharedBuffer, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
once(
|
||||||
|
event: "newSession",
|
||||||
|
listener: (sessionId: NonSharedBuffer, sessionData: NonSharedBuffer, callback: () => void) => void,
|
||||||
|
): this;
|
||||||
|
once(
|
||||||
|
event: "OCSPRequest",
|
||||||
|
listener: (
|
||||||
|
certificate: NonSharedBuffer,
|
||||||
|
issuer: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, resp: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
once(
|
||||||
|
event: "resumeSession",
|
||||||
|
listener: (
|
||||||
|
sessionId: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, sessionData: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
once(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
once(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
once(event: "close", listener: () => void): this;
|
||||||
|
once(event: "connection", listener: (socket: Duplex) => void): this;
|
||||||
|
once(event: "error", listener: (err: Error) => void): this;
|
||||||
|
once(event: "listening", listener: () => void): this;
|
||||||
|
once(event: "checkContinue", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
once(event: "checkExpectation", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
once(event: "clientError", listener: (err: Error, socket: Duplex) => void): this;
|
||||||
|
once(
|
||||||
|
event: "connect",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
once(event: "request", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
once(
|
||||||
|
event: "upgrade",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
prependListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
prependListener(event: "keylog", listener: (line: NonSharedBuffer, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
prependListener(
|
||||||
|
event: "newSession",
|
||||||
|
listener: (sessionId: NonSharedBuffer, sessionData: NonSharedBuffer, callback: () => void) => void,
|
||||||
|
): this;
|
||||||
|
prependListener(
|
||||||
|
event: "OCSPRequest",
|
||||||
|
listener: (
|
||||||
|
certificate: NonSharedBuffer,
|
||||||
|
issuer: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, resp: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
prependListener(
|
||||||
|
event: "resumeSession",
|
||||||
|
listener: (
|
||||||
|
sessionId: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, sessionData: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
prependListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
prependListener(event: "close", listener: () => void): this;
|
||||||
|
prependListener(event: "connection", listener: (socket: Duplex) => void): this;
|
||||||
|
prependListener(event: "error", listener: (err: Error) => void): this;
|
||||||
|
prependListener(event: "listening", listener: () => void): this;
|
||||||
|
prependListener(event: "checkContinue", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
prependListener(event: "checkExpectation", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
prependListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this;
|
||||||
|
prependListener(
|
||||||
|
event: "connect",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
prependListener(event: "request", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
prependListener(
|
||||||
|
event: "upgrade",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
|
||||||
|
prependOnceListener(event: "keylog", listener: (line: NonSharedBuffer, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
prependOnceListener(
|
||||||
|
event: "newSession",
|
||||||
|
listener: (sessionId: NonSharedBuffer, sessionData: NonSharedBuffer, callback: () => void) => void,
|
||||||
|
): this;
|
||||||
|
prependOnceListener(
|
||||||
|
event: "OCSPRequest",
|
||||||
|
listener: (
|
||||||
|
certificate: NonSharedBuffer,
|
||||||
|
issuer: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, resp: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
prependOnceListener(
|
||||||
|
event: "resumeSession",
|
||||||
|
listener: (
|
||||||
|
sessionId: NonSharedBuffer,
|
||||||
|
callback: (err: Error | null, sessionData: Buffer | null) => void,
|
||||||
|
) => void,
|
||||||
|
): this;
|
||||||
|
prependOnceListener(event: "secureConnection", listener: (tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: tls.TLSSocket) => void): this;
|
||||||
|
prependOnceListener(event: "close", listener: () => void): this;
|
||||||
|
prependOnceListener(event: "connection", listener: (socket: Duplex) => void): this;
|
||||||
|
prependOnceListener(event: "error", listener: (err: Error) => void): this;
|
||||||
|
prependOnceListener(event: "listening", listener: () => void): this;
|
||||||
|
prependOnceListener(event: "checkContinue", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
prependOnceListener(event: "checkExpectation", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
prependOnceListener(event: "clientError", listener: (err: Error, socket: Duplex) => void): this;
|
||||||
|
prependOnceListener(
|
||||||
|
event: "connect",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
prependOnceListener(event: "request", listener: http.RequestListener<Request, Response>): this;
|
||||||
|
prependOnceListener(
|
||||||
|
event: "upgrade",
|
||||||
|
listener: (req: InstanceType<Request>, socket: Duplex, head: NonSharedBuffer) => void,
|
||||||
|
): this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* ```js
|
||||||
|
* // curl -k https://localhost:8000/
|
||||||
|
* import https from 'node:https';
|
||||||
|
* import fs from 'node:fs';
|
||||||
|
*
|
||||||
|
* const options = {
|
||||||
|
* key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
|
||||||
|
* cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'),
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* https.createServer(options, (req, res) => {
|
||||||
|
* res.writeHead(200);
|
||||||
|
* res.end('hello world\n');
|
||||||
|
* }).listen(8000);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Or
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import https from 'node:https';
|
||||||
|
* import fs from 'node:fs';
|
||||||
|
*
|
||||||
|
* const options = {
|
||||||
|
* pfx: fs.readFileSync('test/fixtures/test_cert.pfx'),
|
||||||
|
* passphrase: 'sample',
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* https.createServer(options, (req, res) => {
|
||||||
|
* res.writeHead(200);
|
||||||
|
* res.end('hello world\n');
|
||||||
|
* }).listen(8000);
|
||||||
|
* ```
|
||||||
|
* @since v0.3.4
|
||||||
|
* @param options Accepts `options` from `createServer`, `createSecureContext` and `createServer`.
|
||||||
|
* @param requestListener A listener to be added to the `'request'` event.
|
||||||
|
*/
|
||||||
|
function createServer<
|
||||||
|
Request extends typeof http.IncomingMessage = typeof http.IncomingMessage,
|
||||||
|
Response extends typeof http.ServerResponse<InstanceType<Request>> = typeof http.ServerResponse,
|
||||||
|
>(requestListener?: http.RequestListener<Request, Response>): Server<Request, Response>;
|
||||||
|
function createServer<
|
||||||
|
Request extends typeof http.IncomingMessage = typeof http.IncomingMessage,
|
||||||
|
Response extends typeof http.ServerResponse<InstanceType<Request>> = typeof http.ServerResponse,
|
||||||
|
>(
|
||||||
|
options: ServerOptions<Request, Response>,
|
||||||
|
requestListener?: http.RequestListener<Request, Response>,
|
||||||
|
): Server<Request, Response>;
|
||||||
|
/**
|
||||||
|
* Makes a request to a secure web server.
|
||||||
|
*
|
||||||
|
* The following additional `options` from `tls.connect()` are also accepted: `ca`, `cert`, `ciphers`, `clientCertEngine`, `crl`, `dhparam`, `ecdhCurve`, `honorCipherOrder`, `key`, `passphrase`,
|
||||||
|
* `pfx`, `rejectUnauthorized`, `secureOptions`, `secureProtocol`, `servername`, `sessionIdContext`, `highWaterMark`.
|
||||||
|
*
|
||||||
|
* `options` can be an object, a string, or a `URL` object. If `options` is a
|
||||||
|
* string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object.
|
||||||
|
*
|
||||||
|
* `https.request()` returns an instance of the `http.ClientRequest` class. The `ClientRequest` instance is a writable stream. If one needs to
|
||||||
|
* upload a file with a POST request, then write to the `ClientRequest` object.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import https from 'node:https';
|
||||||
|
*
|
||||||
|
* const options = {
|
||||||
|
* hostname: 'encrypted.google.com',
|
||||||
|
* port: 443,
|
||||||
|
* path: '/',
|
||||||
|
* method: 'GET',
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* const req = https.request(options, (res) => {
|
||||||
|
* console.log('statusCode:', res.statusCode);
|
||||||
|
* console.log('headers:', res.headers);
|
||||||
|
*
|
||||||
|
* res.on('data', (d) => {
|
||||||
|
* process.stdout.write(d);
|
||||||
|
* });
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* req.on('error', (e) => {
|
||||||
|
* console.error(e);
|
||||||
|
* });
|
||||||
|
* req.end();
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Example using options from `tls.connect()`:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const options = {
|
||||||
|
* hostname: 'encrypted.google.com',
|
||||||
|
* port: 443,
|
||||||
|
* path: '/',
|
||||||
|
* method: 'GET',
|
||||||
|
* key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
|
||||||
|
* cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'),
|
||||||
|
* };
|
||||||
|
* options.agent = new https.Agent(options);
|
||||||
|
*
|
||||||
|
* const req = https.request(options, (res) => {
|
||||||
|
* // ...
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Alternatively, opt out of connection pooling by not using an `Agent`.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const options = {
|
||||||
|
* hostname: 'encrypted.google.com',
|
||||||
|
* port: 443,
|
||||||
|
* path: '/',
|
||||||
|
* method: 'GET',
|
||||||
|
* key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
|
||||||
|
* cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'),
|
||||||
|
* agent: false,
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* const req = https.request(options, (res) => {
|
||||||
|
* // ...
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Example using a `URL` as `options`:
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const options = new URL('https://abc:xyz@example.com');
|
||||||
|
*
|
||||||
|
* const req = https.request(options, (res) => {
|
||||||
|
* // ...
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Example pinning on certificate fingerprint, or the public key (similar to`pin-sha256`):
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import tls from 'node:tls';
|
||||||
|
* import https from 'node:https';
|
||||||
|
* import crypto from 'node:crypto';
|
||||||
|
*
|
||||||
|
* function sha256(s) {
|
||||||
|
* return crypto.createHash('sha256').update(s).digest('base64');
|
||||||
|
* }
|
||||||
|
* const options = {
|
||||||
|
* hostname: 'github.com',
|
||||||
|
* port: 443,
|
||||||
|
* path: '/',
|
||||||
|
* method: 'GET',
|
||||||
|
* checkServerIdentity: function(host, cert) {
|
||||||
|
* // Make sure the certificate is issued to the host we are connected to
|
||||||
|
* const err = tls.checkServerIdentity(host, cert);
|
||||||
|
* if (err) {
|
||||||
|
* return err;
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* // Pin the public key, similar to HPKP pin-sha256 pinning
|
||||||
|
* const pubkey256 = 'pL1+qb9HTMRZJmuC/bB/ZI9d302BYrrqiVuRyW+DGrU=';
|
||||||
|
* if (sha256(cert.pubkey) !== pubkey256) {
|
||||||
|
* const msg = 'Certificate verification error: ' +
|
||||||
|
* `The public key of '${cert.subject.CN}' ` +
|
||||||
|
* 'does not match our pinned fingerprint';
|
||||||
|
* return new Error(msg);
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* // Pin the exact certificate, rather than the pub key
|
||||||
|
* const cert256 = '25:FE:39:32:D9:63:8C:8A:FC:A1:9A:29:87:' +
|
||||||
|
* 'D8:3E:4C:1D:98:DB:71:E4:1A:48:03:98:EA:22:6A:BD:8B:93:16';
|
||||||
|
* if (cert.fingerprint256 !== cert256) {
|
||||||
|
* const msg = 'Certificate verification error: ' +
|
||||||
|
* `The certificate of '${cert.subject.CN}' ` +
|
||||||
|
* 'does not match our pinned fingerprint';
|
||||||
|
* return new Error(msg);
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* // This loop is informational only.
|
||||||
|
* // Print the certificate and public key fingerprints of all certs in the
|
||||||
|
* // chain. Its common to pin the public key of the issuer on the public
|
||||||
|
* // internet, while pinning the public key of the service in sensitive
|
||||||
|
* // environments.
|
||||||
|
* do {
|
||||||
|
* console.log('Subject Common Name:', cert.subject.CN);
|
||||||
|
* console.log(' Certificate SHA256 fingerprint:', cert.fingerprint256);
|
||||||
|
*
|
||||||
|
* hash = crypto.createHash('sha256');
|
||||||
|
* console.log(' Public key ping-sha256:', sha256(cert.pubkey));
|
||||||
|
*
|
||||||
|
* lastprint256 = cert.fingerprint256;
|
||||||
|
* cert = cert.issuerCertificate;
|
||||||
|
* } while (cert.fingerprint256 !== lastprint256);
|
||||||
|
*
|
||||||
|
* },
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* options.agent = new https.Agent(options);
|
||||||
|
* const req = https.request(options, (res) => {
|
||||||
|
* console.log('All OK. Server matched our pinned cert or public key');
|
||||||
|
* console.log('statusCode:', res.statusCode);
|
||||||
|
* // Print the HPKP values
|
||||||
|
* console.log('headers:', res.headers['public-key-pins']);
|
||||||
|
*
|
||||||
|
* res.on('data', (d) => {});
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* req.on('error', (e) => {
|
||||||
|
* console.error(e.message);
|
||||||
|
* });
|
||||||
|
* req.end();
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Outputs for example:
|
||||||
|
*
|
||||||
|
* ```text
|
||||||
|
* Subject Common Name: github.com
|
||||||
|
* Certificate SHA256 fingerprint: 25:FE:39:32:D9:63:8C:8A:FC:A1:9A:29:87:D8:3E:4C:1D:98:DB:71:E4:1A:48:03:98:EA:22:6A:BD:8B:93:16
|
||||||
|
* Public key ping-sha256: pL1+qb9HTMRZJmuC/bB/ZI9d302BYrrqiVuRyW+DGrU=
|
||||||
|
* Subject Common Name: DigiCert SHA2 Extended Validation Server CA
|
||||||
|
* Certificate SHA256 fingerprint: 40:3E:06:2A:26:53:05:91:13:28:5B:AF:80:A0:D4:AE:42:2C:84:8C:9F:78:FA:D0:1F:C9:4B:C5:B8:7F:EF:1A
|
||||||
|
* Public key ping-sha256: RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho=
|
||||||
|
* Subject Common Name: DigiCert High Assurance EV Root CA
|
||||||
|
* Certificate SHA256 fingerprint: 74:31:E5:F4:C3:C1:CE:46:90:77:4F:0B:61:E0:54:40:88:3B:A9:A0:1E:D0:0B:A6:AB:D7:80:6E:D3:B1:18:CF
|
||||||
|
* Public key ping-sha256: WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18=
|
||||||
|
* All OK. Server matched our pinned cert or public key
|
||||||
|
* statusCode: 200
|
||||||
|
* headers: max-age=0; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho=";
|
||||||
|
* pin-sha256="k2v657xBsOVe1PQRwOsHsw3bsGT2VzIqz5K+59sNQws="; pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="IQBnNBEiFuhj+8x6X8XLgh01V9Ic5/V3IRQLNFFc7v4=";
|
||||||
|
* pin-sha256="iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0="; pin-sha256="LvRiGEjRqfzurezaWuj8Wie2gyHMrW5Q06LspMnox7A="; includeSubDomains
|
||||||
|
* ```
|
||||||
|
* @since v0.3.6
|
||||||
|
* @param options Accepts all `options` from `request`, with some differences in default values:
|
||||||
|
*/
|
||||||
|
function request(
|
||||||
|
options: RequestOptions | string | URL,
|
||||||
|
callback?: (res: http.IncomingMessage) => void,
|
||||||
|
): http.ClientRequest;
|
||||||
|
function request(
|
||||||
|
url: string | URL,
|
||||||
|
options: RequestOptions,
|
||||||
|
callback?: (res: http.IncomingMessage) => void,
|
||||||
|
): http.ClientRequest;
|
||||||
|
/**
|
||||||
|
* Like `http.get()` but for HTTPS.
|
||||||
|
*
|
||||||
|
* `options` can be an object, a string, or a `URL` object. If `options` is a
|
||||||
|
* string, it is automatically parsed with `new URL()`. If it is a `URL` object, it will be automatically converted to an ordinary `options` object.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* import https from 'node:https';
|
||||||
|
*
|
||||||
|
* https.get('https://encrypted.google.com/', (res) => {
|
||||||
|
* console.log('statusCode:', res.statusCode);
|
||||||
|
* console.log('headers:', res.headers);
|
||||||
|
*
|
||||||
|
* res.on('data', (d) => {
|
||||||
|
* process.stdout.write(d);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* }).on('error', (e) => {
|
||||||
|
* console.error(e);
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
* @since v0.3.6
|
||||||
|
* @param options Accepts the same `options` as {@link request}, with the `method` always set to `GET`.
|
||||||
|
*/
|
||||||
|
function get(
|
||||||
|
options: RequestOptions | string | URL,
|
||||||
|
callback?: (res: http.IncomingMessage) => void,
|
||||||
|
): http.ClientRequest;
|
||||||
|
function get(
|
||||||
|
url: string | URL,
|
||||||
|
options: RequestOptions,
|
||||||
|
callback?: (res: http.IncomingMessage) => void,
|
||||||
|
): http.ClientRequest;
|
||||||
|
let globalAgent: Agent;
|
||||||
|
}
|
||||||
|
declare module "node:https" {
|
||||||
|
export * from "https";
|
||||||
|
}
|
||||||
101
node_modules/@types/node/index.d.ts
generated
vendored
Normal file
101
node_modules/@types/node/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
/**
|
||||||
|
* License for programmatically and manually incorporated
|
||||||
|
* documentation aka. `JSDoc` from https://github.com/nodejs/node/tree/master/doc
|
||||||
|
*
|
||||||
|
* Copyright Node.js contributors. All rights reserved.
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
* deal in the Software without restriction, including without limitation the
|
||||||
|
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
* IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// NOTE: These definitions support Node.js and TypeScript 5.8+.
|
||||||
|
|
||||||
|
// Reference required TypeScript libraries:
|
||||||
|
/// <reference lib="es2020" />
|
||||||
|
/// <reference lib="esnext.disposable" />
|
||||||
|
/// <reference lib="esnext.float16" />
|
||||||
|
|
||||||
|
// Iterator definitions required for compatibility with TypeScript <5.6:
|
||||||
|
/// <reference path="compatibility/iterators.d.ts" />
|
||||||
|
|
||||||
|
// Definitions for Node.js modules specific to TypeScript 5.7+:
|
||||||
|
/// <reference path="globals.typedarray.d.ts" />
|
||||||
|
/// <reference path="buffer.buffer.d.ts" />
|
||||||
|
|
||||||
|
// Definitions for Node.js modules that are not specific to any version of TypeScript:
|
||||||
|
/// <reference path="globals.d.ts" />
|
||||||
|
/// <reference path="web-globals/abortcontroller.d.ts" />
|
||||||
|
/// <reference path="web-globals/crypto.d.ts" />
|
||||||
|
/// <reference path="web-globals/domexception.d.ts" />
|
||||||
|
/// <reference path="web-globals/events.d.ts" />
|
||||||
|
/// <reference path="web-globals/fetch.d.ts" />
|
||||||
|
/// <reference path="web-globals/navigator.d.ts" />
|
||||||
|
/// <reference path="web-globals/storage.d.ts" />
|
||||||
|
/// <reference path="web-globals/streams.d.ts" />
|
||||||
|
/// <reference path="assert.d.ts" />
|
||||||
|
/// <reference path="assert/strict.d.ts" />
|
||||||
|
/// <reference path="async_hooks.d.ts" />
|
||||||
|
/// <reference path="buffer.d.ts" />
|
||||||
|
/// <reference path="child_process.d.ts" />
|
||||||
|
/// <reference path="cluster.d.ts" />
|
||||||
|
/// <reference path="console.d.ts" />
|
||||||
|
/// <reference path="constants.d.ts" />
|
||||||
|
/// <reference path="crypto.d.ts" />
|
||||||
|
/// <reference path="dgram.d.ts" />
|
||||||
|
/// <reference path="diagnostics_channel.d.ts" />
|
||||||
|
/// <reference path="dns.d.ts" />
|
||||||
|
/// <reference path="dns/promises.d.ts" />
|
||||||
|
/// <reference path="domain.d.ts" />
|
||||||
|
/// <reference path="events.d.ts" />
|
||||||
|
/// <reference path="fs.d.ts" />
|
||||||
|
/// <reference path="fs/promises.d.ts" />
|
||||||
|
/// <reference path="http.d.ts" />
|
||||||
|
/// <reference path="http2.d.ts" />
|
||||||
|
/// <reference path="https.d.ts" />
|
||||||
|
/// <reference path="inspector.d.ts" />
|
||||||
|
/// <reference path="inspector.generated.d.ts" />
|
||||||
|
/// <reference path="module.d.ts" />
|
||||||
|
/// <reference path="net.d.ts" />
|
||||||
|
/// <reference path="os.d.ts" />
|
||||||
|
/// <reference path="path.d.ts" />
|
||||||
|
/// <reference path="perf_hooks.d.ts" />
|
||||||
|
/// <reference path="process.d.ts" />
|
||||||
|
/// <reference path="punycode.d.ts" />
|
||||||
|
/// <reference path="querystring.d.ts" />
|
||||||
|
/// <reference path="readline.d.ts" />
|
||||||
|
/// <reference path="readline/promises.d.ts" />
|
||||||
|
/// <reference path="repl.d.ts" />
|
||||||
|
/// <reference path="sea.d.ts" />
|
||||||
|
/// <reference path="sqlite.d.ts" />
|
||||||
|
/// <reference path="stream.d.ts" />
|
||||||
|
/// <reference path="stream/promises.d.ts" />
|
||||||
|
/// <reference path="stream/consumers.d.ts" />
|
||||||
|
/// <reference path="stream/web.d.ts" />
|
||||||
|
/// <reference path="string_decoder.d.ts" />
|
||||||
|
/// <reference path="test.d.ts" />
|
||||||
|
/// <reference path="timers.d.ts" />
|
||||||
|
/// <reference path="timers/promises.d.ts" />
|
||||||
|
/// <reference path="tls.d.ts" />
|
||||||
|
/// <reference path="trace_events.d.ts" />
|
||||||
|
/// <reference path="tty.d.ts" />
|
||||||
|
/// <reference path="url.d.ts" />
|
||||||
|
/// <reference path="util.d.ts" />
|
||||||
|
/// <reference path="v8.d.ts" />
|
||||||
|
/// <reference path="vm.d.ts" />
|
||||||
|
/// <reference path="wasi.d.ts" />
|
||||||
|
/// <reference path="worker_threads.d.ts" />
|
||||||
|
/// <reference path="zlib.d.ts" />
|
||||||
277
node_modules/@types/node/inspector.d.ts
generated
vendored
Normal file
277
node_modules/@types/node/inspector.d.ts
generated
vendored
Normal file
@@ -0,0 +1,277 @@
|
|||||||
|
/**
|
||||||
|
* The `node:inspector` module provides an API for interacting with the V8
|
||||||
|
* inspector.
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/inspector.js)
|
||||||
|
*/
|
||||||
|
declare module "inspector" {
|
||||||
|
import EventEmitter = require("node:events");
|
||||||
|
/**
|
||||||
|
* The `inspector.Session` is used for dispatching messages to the V8 inspector
|
||||||
|
* back-end and receiving message responses and notifications.
|
||||||
|
*/
|
||||||
|
class Session extends EventEmitter {
|
||||||
|
/**
|
||||||
|
* Create a new instance of the inspector.Session class.
|
||||||
|
* The inspector session needs to be connected through `session.connect()` before the messages can be dispatched to the inspector backend.
|
||||||
|
*/
|
||||||
|
constructor();
|
||||||
|
/**
|
||||||
|
* Connects a session to the inspector back-end.
|
||||||
|
*/
|
||||||
|
connect(): void;
|
||||||
|
/**
|
||||||
|
* Connects a session to the inspector back-end.
|
||||||
|
* An exception will be thrown if this API was not called on a Worker thread.
|
||||||
|
* @since v12.11.0
|
||||||
|
*/
|
||||||
|
connectToMainThread(): void;
|
||||||
|
/**
|
||||||
|
* Immediately close the session. All pending message callbacks will be called with an error.
|
||||||
|
* `session.connect()` will need to be called to be able to send messages again.
|
||||||
|
* Reconnected session will lose all inspector state, such as enabled agents or configured breakpoints.
|
||||||
|
*/
|
||||||
|
disconnect(): void;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Activate inspector on host and port. Equivalent to `node --inspect=[[host:]port]`, but can be done programmatically after node has
|
||||||
|
* started.
|
||||||
|
*
|
||||||
|
* If wait is `true`, will block until a client has connected to the inspect port
|
||||||
|
* and flow control has been passed to the debugger client.
|
||||||
|
*
|
||||||
|
* See the [security warning](https://nodejs.org/docs/latest-v24.x/api/cli.html#warning-binding-inspector-to-a-public-ipport-combination-is-insecure)
|
||||||
|
* regarding the `host` parameter usage.
|
||||||
|
* @param port Port to listen on for inspector connections. Defaults to what was specified on the CLI.
|
||||||
|
* @param host Host to listen on for inspector connections. Defaults to what was specified on the CLI.
|
||||||
|
* @param wait Block until a client has connected. Defaults to what was specified on the CLI.
|
||||||
|
* @returns Disposable that calls `inspector.close()`.
|
||||||
|
*/
|
||||||
|
function open(port?: number, host?: string, wait?: boolean): Disposable;
|
||||||
|
/**
|
||||||
|
* Deactivate the inspector. Blocks until there are no active connections.
|
||||||
|
*/
|
||||||
|
function close(): void;
|
||||||
|
/**
|
||||||
|
* Return the URL of the active inspector, or `undefined` if there is none.
|
||||||
|
*
|
||||||
|
* ```console
|
||||||
|
* $ node --inspect -p 'inspector.url()'
|
||||||
|
* Debugger listening on ws://127.0.0.1:9229/166e272e-7a30-4d09-97ce-f1c012b43c34
|
||||||
|
* For help, see: https://nodejs.org/en/docs/inspector
|
||||||
|
* ws://127.0.0.1:9229/166e272e-7a30-4d09-97ce-f1c012b43c34
|
||||||
|
*
|
||||||
|
* $ node --inspect=localhost:3000 -p 'inspector.url()'
|
||||||
|
* Debugger listening on ws://localhost:3000/51cf8d0e-3c36-4c59-8efd-54519839e56a
|
||||||
|
* For help, see: https://nodejs.org/en/docs/inspector
|
||||||
|
* ws://localhost:3000/51cf8d0e-3c36-4c59-8efd-54519839e56a
|
||||||
|
*
|
||||||
|
* $ node -p 'inspector.url()'
|
||||||
|
* undefined
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
function url(): string | undefined;
|
||||||
|
/**
|
||||||
|
* Blocks until a client (existing or connected later) has sent `Runtime.runIfWaitingForDebugger` command.
|
||||||
|
*
|
||||||
|
* An exception will be thrown if there is no active inspector.
|
||||||
|
* @since v12.7.0
|
||||||
|
*/
|
||||||
|
function waitForDebugger(): void;
|
||||||
|
// These methods are exposed by the V8 inspector console API (inspector/v8-console.h).
|
||||||
|
// The method signatures differ from those of the Node.js console, and are deliberately
|
||||||
|
// typed permissively.
|
||||||
|
interface InspectorConsole {
|
||||||
|
debug(...data: any[]): void;
|
||||||
|
error(...data: any[]): void;
|
||||||
|
info(...data: any[]): void;
|
||||||
|
log(...data: any[]): void;
|
||||||
|
warn(...data: any[]): void;
|
||||||
|
dir(...data: any[]): void;
|
||||||
|
dirxml(...data: any[]): void;
|
||||||
|
table(...data: any[]): void;
|
||||||
|
trace(...data: any[]): void;
|
||||||
|
group(...data: any[]): void;
|
||||||
|
groupCollapsed(...data: any[]): void;
|
||||||
|
groupEnd(...data: any[]): void;
|
||||||
|
clear(...data: any[]): void;
|
||||||
|
count(label?: any): void;
|
||||||
|
countReset(label?: any): void;
|
||||||
|
assert(value?: any, ...data: any[]): void;
|
||||||
|
profile(label?: any): void;
|
||||||
|
profileEnd(label?: any): void;
|
||||||
|
time(label?: any): void;
|
||||||
|
timeLog(label?: any): void;
|
||||||
|
timeStamp(label?: any): void;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* An object to send messages to the remote inspector console.
|
||||||
|
* @since v11.0.0
|
||||||
|
*/
|
||||||
|
const console: InspectorConsole;
|
||||||
|
// DevTools protocol event broadcast methods
|
||||||
|
namespace Network {
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-network-inspection` flag enabled.
|
||||||
|
*
|
||||||
|
* Broadcasts the `Network.requestWillBeSent` event to connected frontends. This event indicates that
|
||||||
|
* the application is about to send an HTTP request.
|
||||||
|
* @since v22.6.0
|
||||||
|
*/
|
||||||
|
function requestWillBeSent(params: RequestWillBeSentEventDataType): void;
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-network-inspection` flag enabled.
|
||||||
|
*
|
||||||
|
* Broadcasts the `Network.dataReceived` event to connected frontends, or buffers the data if
|
||||||
|
* `Network.streamResourceContent` command was not invoked for the given request yet.
|
||||||
|
*
|
||||||
|
* Also enables `Network.getResponseBody` command to retrieve the response data.
|
||||||
|
* @since v24.2.0
|
||||||
|
*/
|
||||||
|
function dataReceived(params: DataReceivedEventDataType): void;
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-network-inspection` flag enabled.
|
||||||
|
*
|
||||||
|
* Enables `Network.getRequestPostData` command to retrieve the request data.
|
||||||
|
* @since v24.3.0
|
||||||
|
*/
|
||||||
|
function dataSent(params: unknown): void;
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-network-inspection` flag enabled.
|
||||||
|
*
|
||||||
|
* Broadcasts the `Network.responseReceived` event to connected frontends. This event indicates that
|
||||||
|
* HTTP response is available.
|
||||||
|
* @since v22.6.0
|
||||||
|
*/
|
||||||
|
function responseReceived(params: ResponseReceivedEventDataType): void;
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-network-inspection` flag enabled.
|
||||||
|
*
|
||||||
|
* Broadcasts the `Network.loadingFinished` event to connected frontends. This event indicates that
|
||||||
|
* HTTP request has finished loading.
|
||||||
|
* @since v22.6.0
|
||||||
|
*/
|
||||||
|
function loadingFinished(params: LoadingFinishedEventDataType): void;
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-network-inspection` flag enabled.
|
||||||
|
*
|
||||||
|
* Broadcasts the `Network.loadingFailed` event to connected frontends. This event indicates that
|
||||||
|
* HTTP request has failed to load.
|
||||||
|
* @since v22.7.0
|
||||||
|
*/
|
||||||
|
function loadingFailed(params: LoadingFailedEventDataType): void;
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-network-inspection` flag enabled.
|
||||||
|
*
|
||||||
|
* Broadcasts the `Network.webSocketCreated` event to connected frontends. This event indicates that
|
||||||
|
* a WebSocket connection has been initiated.
|
||||||
|
* @since v24.7.0
|
||||||
|
*/
|
||||||
|
function webSocketCreated(params: WebSocketCreatedEventDataType): void;
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-network-inspection` flag enabled.
|
||||||
|
*
|
||||||
|
* Broadcasts the `Network.webSocketHandshakeResponseReceived` event to connected frontends.
|
||||||
|
* This event indicates that the WebSocket handshake response has been received.
|
||||||
|
* @since v24.7.0
|
||||||
|
*/
|
||||||
|
function webSocketHandshakeResponseReceived(params: WebSocketHandshakeResponseReceivedEventDataType): void;
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-network-inspection` flag enabled.
|
||||||
|
*
|
||||||
|
* Broadcasts the `Network.webSocketClosed` event to connected frontends.
|
||||||
|
* This event indicates that a WebSocket connection has been closed.
|
||||||
|
* @since v24.7.0
|
||||||
|
*/
|
||||||
|
function webSocketClosed(params: WebSocketClosedEventDataType): void;
|
||||||
|
}
|
||||||
|
namespace NetworkResources {
|
||||||
|
/**
|
||||||
|
* This feature is only available with the `--experimental-inspector-network-resource` flag enabled.
|
||||||
|
*
|
||||||
|
* The inspector.NetworkResources.put method is used to provide a response for a loadNetworkResource
|
||||||
|
* request issued via the Chrome DevTools Protocol (CDP).
|
||||||
|
* This is typically triggered when a source map is specified by URL, and a DevTools frontend—such as
|
||||||
|
* Chrome—requests the resource to retrieve the source map.
|
||||||
|
*
|
||||||
|
* This method allows developers to predefine the resource content to be served in response to such CDP requests.
|
||||||
|
*
|
||||||
|
* ```js
|
||||||
|
* const inspector = require('node:inspector');
|
||||||
|
* // By preemptively calling put to register the resource, a source map can be resolved when
|
||||||
|
* // a loadNetworkResource request is made from the frontend.
|
||||||
|
* async function setNetworkResources() {
|
||||||
|
* const mapUrl = 'http://localhost:3000/dist/app.js.map';
|
||||||
|
* const tsUrl = 'http://localhost:3000/src/app.ts';
|
||||||
|
* const distAppJsMap = await fetch(mapUrl).then((res) => res.text());
|
||||||
|
* const srcAppTs = await fetch(tsUrl).then((res) => res.text());
|
||||||
|
* inspector.NetworkResources.put(mapUrl, distAppJsMap);
|
||||||
|
* inspector.NetworkResources.put(tsUrl, srcAppTs);
|
||||||
|
* };
|
||||||
|
* setNetworkResources().then(() => {
|
||||||
|
* require('./dist/app');
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* For more details, see the official CDP documentation: [Network.loadNetworkResource](https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-loadNetworkResource)
|
||||||
|
* @since v24.5.0
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
function put(url: string, data: string): void;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The `node:inspector` module provides an API for interacting with the V8
|
||||||
|
* inspector.
|
||||||
|
*/
|
||||||
|
declare module "node:inspector" {
|
||||||
|
export * from "inspector";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The `node:inspector/promises` module provides an API for interacting with the V8
|
||||||
|
* inspector.
|
||||||
|
* @see [source](https://github.com/nodejs/node/blob/v24.x/lib/inspector/promises.js)
|
||||||
|
* @since v19.0.0
|
||||||
|
*/
|
||||||
|
declare module "inspector/promises" {
|
||||||
|
import EventEmitter = require("node:events");
|
||||||
|
export { close, console, NetworkResources, open, url, waitForDebugger } from "inspector";
|
||||||
|
/**
|
||||||
|
* The `inspector.Session` is used for dispatching messages to the V8 inspector
|
||||||
|
* back-end and receiving message responses and notifications.
|
||||||
|
* @since v19.0.0
|
||||||
|
*/
|
||||||
|
export class Session extends EventEmitter {
|
||||||
|
/**
|
||||||
|
* Create a new instance of the inspector.Session class.
|
||||||
|
* The inspector session needs to be connected through `session.connect()` before the messages can be dispatched to the inspector backend.
|
||||||
|
*/
|
||||||
|
constructor();
|
||||||
|
/**
|
||||||
|
* Connects a session to the inspector back-end.
|
||||||
|
*/
|
||||||
|
connect(): void;
|
||||||
|
/**
|
||||||
|
* Connects a session to the inspector back-end.
|
||||||
|
* An exception will be thrown if this API was not called on a Worker thread.
|
||||||
|
* @since v12.11.0
|
||||||
|
*/
|
||||||
|
connectToMainThread(): void;
|
||||||
|
/**
|
||||||
|
* Immediately close the session. All pending message callbacks will be called with an error.
|
||||||
|
* `session.connect()` will need to be called to be able to send messages again.
|
||||||
|
* Reconnected session will lose all inspector state, such as enabled agents or configured breakpoints.
|
||||||
|
*/
|
||||||
|
disconnect(): void;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The `node:inspector/promises` module provides an API for interacting with the V8
|
||||||
|
* inspector.
|
||||||
|
* @since v19.0.0
|
||||||
|
*/
|
||||||
|
declare module "node:inspector/promises" {
|
||||||
|
export * from "inspector/promises";
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user