mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
Merge branch 'main' into claude/sqlite-dynamic-loading-linux
This commit is contained in:
24
packages/bun-types/globals.d.ts
vendored
24
packages/bun-types/globals.d.ts
vendored
@@ -1564,6 +1564,12 @@ declare var AbortController: Bun.__internal.UseLibDomIfAvailable<
|
||||
}
|
||||
>;
|
||||
|
||||
interface AbortSignal extends EventTarget {
|
||||
readonly aborted: boolean;
|
||||
onabort: ((this: AbortSignal, ev: Event) => any) | null;
|
||||
readonly reason: any;
|
||||
throwIfAborted(): void;
|
||||
}
|
||||
declare var AbortSignal: Bun.__internal.UseLibDomIfAvailable<
|
||||
"AbortSignal",
|
||||
{
|
||||
@@ -1948,3 +1954,21 @@ declare namespace fetch {
|
||||
): void;
|
||||
}
|
||||
//#endregion
|
||||
|
||||
interface RegExpConstructor {
|
||||
/**
|
||||
* Escapes any potential regex syntax characters in a string, and returns a
|
||||
* new string that can be safely used as a literal pattern for the RegExp()
|
||||
* constructor.
|
||||
*
|
||||
* [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/escape)
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* const re = new RegExp(RegExp.escape("foo.bar"));
|
||||
* re.test("foo.bar"); // true
|
||||
* re.test("foo!bar"); // false
|
||||
* ```
|
||||
*/
|
||||
escape(string: string): string;
|
||||
}
|
||||
|
||||
@@ -1301,11 +1301,15 @@ export const expiredTls = Object.freeze({
|
||||
passphrase: "1234",
|
||||
});
|
||||
|
||||
// ❯ openssl x509 -enddate -noout -in
|
||||
// notAfter=Sep 5 23:27:34 2025 GMT
|
||||
// openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
|
||||
// -keyout localhost.key \
|
||||
// -out localhost.crt \
|
||||
// -subj "/C=US/ST=CA/L=San Francisco/O=Oven/OU=Team Bun/CN=server-bun" \
|
||||
// -addext "subjectAltName = DNS:localhost,IP:127.0.0.1,IP:::1"
|
||||
// notAfter=Sep 4 03:00:49 2035 GMT
|
||||
export const tls = Object.freeze({
|
||||
cert: "-----BEGIN CERTIFICATE-----\nMIIDrzCCApegAwIBAgIUHaenuNcUAu0tjDZGpc7fK4EX78gwDQYJKoZIhvcNAQEL\nBQAwaTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJh\nbmNpc2NvMQ0wCwYDVQQKDARPdmVuMREwDwYDVQQLDAhUZWFtIEJ1bjETMBEGA1UE\nAwwKc2VydmVyLWJ1bjAeFw0yMzA5MDYyMzI3MzRaFw0yNTA5MDUyMzI3MzRaMGkx\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNj\nbzENMAsGA1UECgwET3ZlbjERMA8GA1UECwwIVGVhbSBCdW4xEzARBgNVBAMMCnNl\ncnZlci1idW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+7odzr3yI\nYewRNRGIubF5hzT7Bym2dDab4yhaKf5drL+rcA0J15BM8QJ9iSmL1ovg7x35Q2MB\nKw3rl/Yyy3aJS8whZTUze522El72iZbdNbS+oH6GxB2gcZB6hmUehPjHIUH4icwP\ndwVUeR6fB7vkfDddLXe0Tb4qsO1EK8H0mr5PiQSXfj39Yc1QHY7/gZ/xeSrt/6yn\n0oH9HbjF2XLSL2j6cQPKEayartHN0SwzwLi0eWSzcziVPSQV7c6Lg9UuIHbKlgOF\nzDpcp1p1lRqv2yrT25im/dS6oy9XX+p7EfZxqeqpXX2fr5WKxgnzxI3sW93PG8FU\nIDHtnUsoHX3RAgMBAAGjTzBNMCwGA1UdEQQlMCOCCWxvY2FsaG9zdIcEfwAAAYcQ\nAAAAAAAAAAAAAAAAAAAAATAdBgNVHQ4EFgQUF3y/su4J/8ScpK+rM2LwTct6EQow\nDQYJKoZIhvcNAQELBQADggEBAGWGWp59Bmrk3Gt0bidFLEbvlOgGPWCT9ZrJUjgc\nhY44E+/t4gIBdoKOSwxo1tjtz7WsC2IYReLTXh1vTsgEitk0Bf4y7P40+pBwwZwK\naeIF9+PC6ZoAkXGFRoyEalaPVQDBg/DPOMRG9OH0lKfen9OGkZxmmjRLJzbyfAhU\noI/hExIjV8vehcvaJXmkfybJDYOYkN4BCNqPQHNf87ZNdFCb9Zgxwp/Ou+47J5k4\n5plQ+K7trfKXG3ABMbOJXNt1b0sH8jnpAsyHY4DLEQqxKYADbXsr3YX/yy6c0eOo\nX2bHGD1+zGsb7lGyNyoZrCZ0233glrEM4UxmvldBcWwOWfk=\n-----END CERTIFICATE-----\n",
|
||||
key: "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+7odzr3yIYewR\nNRGIubF5hzT7Bym2dDab4yhaKf5drL+rcA0J15BM8QJ9iSmL1ovg7x35Q2MBKw3r\nl/Yyy3aJS8whZTUze522El72iZbdNbS+oH6GxB2gcZB6hmUehPjHIUH4icwPdwVU\neR6fB7vkfDddLXe0Tb4qsO1EK8H0mr5PiQSXfj39Yc1QHY7/gZ/xeSrt/6yn0oH9\nHbjF2XLSL2j6cQPKEayartHN0SwzwLi0eWSzcziVPSQV7c6Lg9UuIHbKlgOFzDpc\np1p1lRqv2yrT25im/dS6oy9XX+p7EfZxqeqpXX2fr5WKxgnzxI3sW93PG8FUIDHt\nnUsoHX3RAgMBAAECggEAAckMqkn+ER3c7YMsKRLc5bUE9ELe+ftUwfA6G+oXVorn\nE+uWCXGdNqI+TOZkQpurQBWn9IzTwv19QY+H740cxo0ozZVSPE4v4czIilv9XlVw\n3YCNa2uMxeqp76WMbz1xEhaFEgn6ASTVf3hxYJYKM0ljhPX8Vb8wWwlLONxr4w4X\nOnQAB5QE7i7LVRsQIpWKnGsALePeQjzhzUZDhz0UnTyGU6GfC+V+hN3RkC34A8oK\njR3/Wsjahev0Rpb+9Pbu3SgTrZTtQ+srlRrEsDG0wVqxkIk9ueSMOHlEtQ7zYZsk\nlX59Bb8LHNGQD5o+H1EDaC6OCsgzUAAJtDRZsPiZEQKBgQDs+YtVsc9RDMoC0x2y\nlVnP6IUDXt+2UXndZfJI3YS+wsfxiEkgK7G3AhjgB+C+DKEJzptVxP+212hHnXgr\n1gfW/x4g7OWBu4IxFmZ2J/Ojor+prhHJdCvD0VqnMzauzqLTe92aexiexXQGm+WW\nwRl3YZLmkft3rzs3ZPhc1G2X9QKBgQDOQq3rrxcvxSYaDZAb+6B/H7ZE4natMCiz\nLx/cWT8n+/CrJI2v3kDfdPl9yyXIOGrsqFgR3uhiUJnz+oeZFFHfYpslb8KvimHx\nKI+qcVDcprmYyXj2Lrf3fvj4pKorc+8TgOBDUpXIFhFDyM+0DmHLfq+7UqvjU9Hs\nkjER7baQ7QKBgQDTh508jU/FxWi9RL4Jnw9gaunwrEt9bxUc79dp+3J25V+c1k6Q\nDPDBr3mM4PtYKeXF30sBMKwiBf3rj0CpwI+W9ntqYIwtVbdNIfWsGtV8h9YWHG98\nJ9q5HLOS9EAnogPuS27walj7wL1k+NvjydJ1of+DGWQi3aQ6OkMIegap0QKBgBlR\nzCHLa5A8plG6an9U4z3Xubs5BZJ6//QHC+Uzu3IAFmob4Zy+Lr5/kITlpCyw6EdG\n3xDKiUJQXKW7kluzR92hMCRnVMHRvfYpoYEtydxcRxo/WS73SzQBjTSQmicdYzLE\ntkLtZ1+ZfeMRSpXy0gR198KKAnm0d2eQBqAJy0h9AoGBAM80zkd+LehBKq87Zoh7\ndtREVWslRD1C5HvFcAxYxBybcKzVpL89jIRGKB8SoZkF7edzhqvVzAMP0FFsEgCh\naClYGtO+uo+B91+5v2CCqowRJUGfbFOtCuSPR7+B3LDK8pkjK2SQ0mFPUfRA5z0z\nNVWtC0EYNBTRkqhYtqr3ZpUc\n-----END PRIVATE KEY-----\n",
|
||||
cert: "-----BEGIN CERTIFICATE-----\nMIID4jCCAsqgAwIBAgIUcaRq6J/YF++Bo01Zc+HeQvCbnWMwDQYJKoZIhvcNAQEL\nBQAwaTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJh\nbmNpc2NvMQ0wCwYDVQQKDARPdmVuMREwDwYDVQQLDAhUZWFtIEJ1bjETMBEGA1UE\nAwwKc2VydmVyLWJ1bjAeFw0yNTA5MDYwMzAwNDlaFw0zNTA5MDQwMzAwNDlaMGkx\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNj\nbzENMAsGA1UECgwET3ZlbjERMA8GA1UECwwIVGVhbSBCdW4xEzARBgNVBAMMCnNl\ncnZlci1idW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDlYzosgRgX\nHL6vMh1V0ERFhsvlZrtRojSw6tafr3SQBphU793/rGiYZlL/lJ9HIlLkx9JMbuTj\nNm5U2eRwHiTQIeWD4aCIESwPlkdaVYtC+IOj55bJN8xNa7h5GyJwF7PnPetAsKyE\n8DMBn1gKMhaIis7HHOUtk4/K3Y4peU44d04z0yPt6JtY5Sbvi1E7pGX6T/2c9sHs\ndIDeDctWnewpXXs8zkAla0KNWQfpDnpS53wxAfStTA4lSrA9daxC7hZopQlLxFIb\nJk+0BLbEsXtrJ54T5iguHk+2MDVAy4MOqP9XbKV7eGHk73l6+CSwmHyHBxh4ChxR\nQeT5BP0MUTn1AgMBAAGjgYEwfzAdBgNVHQ4EFgQUw7nEnh4uOdZVZUapQzdAUaVa\nAn0wHwYDVR0jBBgwFoAUw7nEnh4uOdZVZUapQzdAUaVaAn0wDwYDVR0TAQH/BAUw\nAwEB/zAsBgNVHREEJTAjgglsb2NhbGhvc3SHBH8AAAGHEAAAAAAAAAAAAAAAAAAA\nAAEwDQYJKoZIhvcNAQELBQADggEBAEA8r1fvDLMSCb8bkAURpFk8chn8pl5MChzT\nYUDaLdCCBjPXJkSXNdyuwS+T/ljAGyZbW5xuDccCNKltawO4CbyEXUEZbYr3w9eq\nj8uqymJPhFf0O1rKOI2han5GBCgHwG13QwKI+4uu7390nD+TlzLOhxFfvOG7OadH\nQNMNLNyldgF4Nb8vWdz0FtQiGUIrO7iq4LFhhd1lCxe0q+FAYSEYcc74WtF/Yo8V\nJQauXuXyoP5FqLzNt/yeNQhceyIXJGKCsjr5/bASBmVlCwgRfsD3jpG37L8YCJs1\nL4WEikcY4Lzb2NF9e94IyZdQsRqd9DFBF5zP013MSUiuhiow32k=\n-----END CERTIFICATE-----\n",
|
||||
key: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDlYzosgRgXHL6v\nMh1V0ERFhsvlZrtRojSw6tafr3SQBphU793/rGiYZlL/lJ9HIlLkx9JMbuTjNm5U\n2eRwHiTQIeWD4aCIESwPlkdaVYtC+IOj55bJN8xNa7h5GyJwF7PnPetAsKyE8DMB\nn1gKMhaIis7HHOUtk4/K3Y4peU44d04z0yPt6JtY5Sbvi1E7pGX6T/2c9sHsdIDe\nDctWnewpXXs8zkAla0KNWQfpDnpS53wxAfStTA4lSrA9daxC7hZopQlLxFIbJk+0\nBLbEsXtrJ54T5iguHk+2MDVAy4MOqP9XbKV7eGHk73l6+CSwmHyHBxh4ChxRQeT5\nBP0MUTn1AgMBAAECggEABtPvC5uVGr0DjQX2GxONsK8cOxoVec7U+C4pUMwBcXcM\nyjxwlHdujpi/IDXtjsm+A2rSPu2vGPdKDfMFanPvPxW/Ne99noc6U0VzHsR8lnP8\nwSB328nyJhzOeyZcXk9KTtgIPF7156gZsJLsZTNL+ej90i3xQWvKxCxXmrLuad5O\nz/TrgZkC6wC3fgj1d3e8bMljQ7tLxbshJMYVI5o6RFTxy84DLI+rlvPkf7XbiMPf\n2lsm4jcJKvfx+164HZJ9QVlx8ncqOHAnGvxb2xHHfqv4JAbz615t7yRvtaw4Paj5\n6kQSf0VWnsVzgxNJWvnUZym/i/Qf5nQafjChCyKOEQKBgQD9f4SkvJrp/mFKWLHd\nkDvRpSIIltfJsa5KShn1IHsQXFwc0YgyP4SKQb3Ckv+/9UFHK9EzM+WlPxZi7ZOS\nhsWhIfkI4c4ORpxUQ+hPi0K2k+HIY7eYyONqDAzw5PGkKBo3mSGMHDXYywSqexhB\nCCMHuHdMhwyHdz4PWYOK3C2VMQKBgQDnpsrHK7lM9aVb8wNhTokbK5IlTSzH/5oJ\nlAVu6G6H3tM5YQeoDXztbZClvrvKU8DU5UzwaC+8AEWQwaram29QIDpAI3nVQQ0k\ndmHHp/pCeADdRG2whaGcl418UJMMv8AUpWTRm+kVLTLqfTHBC0ji4NlCQMHCUCfd\nU8TeUi5QBQKBgQDvJNd7mboDOUmLG7VgMetc0Y4T0EnuKsMjrlhimau/OYJkZX84\n+BcPXwmnf4nqC3Lzs3B9/12L0MJLvZjUSHQ0mJoZOPxtF0vvasjEEbp0B3qe0wOn\nDQ0NRCUJNNKJbJOfE8VEKnDZ/lx+f/XXk9eINwvElDrLqUBQtr+TxjbyYQKBgAxQ\nlZ8Y9/TbajsFJDzcC/XhzxckjyjisbGoqNFIkfevJNN8EQgiD24f0Py+swUChtHK\njtiI8WCxMwGLCiYs9THxRKd8O1HW73fswy32BBvcfU9F//7OW9UTSXY+YlLfLrrq\nP/3UqAN0L6y/kxGMJAfLpEEdaC+IS1Y8yc531/ZxAoGASYiasDpePtmzXklDxk3h\njEw64QAdXK2p/xTMjSeTtcqJ7fvaEbg+Mfpxq0mdTjfbTdR9U/nzAkwS7OoZZ4Du\nueMVls0IVqcNnBtikG8wgdxN27b5JPXS+GzQ0zDSpWFfRPZiIh37BAXr0D1voluJ\nrEHkcals6p7hL98BoxjFIvA=\n-----END PRIVATE KEY-----\n",
|
||||
});
|
||||
|
||||
export const invalidTls = Object.freeze({
|
||||
|
||||
@@ -455,3 +455,9 @@ Bun.serve({
|
||||
cert,
|
||||
},
|
||||
});
|
||||
|
||||
const signal = AbortSignal.timeout(1000);
|
||||
expectType(signal).is<AbortSignal>();
|
||||
expectType(signal.aborted).is<boolean>();
|
||||
|
||||
expectType(RegExp.escape("foo.bar")).is<string>();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { Server, ServerWebSocket, Socket } from "bun";
|
||||
import { describe, expect, test } from "bun:test";
|
||||
import { bunEnv, bunExe, rejectUnauthorizedScope, tempDirWithFiles } from "harness";
|
||||
import { bunEnv, bunExe, rejectUnauthorizedScope, tempDirWithFiles, tls } from "harness";
|
||||
import path from "path";
|
||||
|
||||
describe("Server", () => {
|
||||
@@ -405,10 +405,7 @@ describe("Server", () => {
|
||||
|
||||
test("handshake failures should not impact future connections", async () => {
|
||||
using server = Bun.serve({
|
||||
tls: {
|
||||
cert: "-----BEGIN CERTIFICATE-----\nMIIDrzCCApegAwIBAgIUHaenuNcUAu0tjDZGpc7fK4EX78gwDQYJKoZIhvcNAQEL\nBQAwaTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJh\nbmNpc2NvMQ0wCwYDVQQKDARPdmVuMREwDwYDVQQLDAhUZWFtIEJ1bjETMBEGA1UE\nAwwKc2VydmVyLWJ1bjAeFw0yMzA5MDYyMzI3MzRaFw0yNTA5MDUyMzI3MzRaMGkx\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNj\nbzENMAsGA1UECgwET3ZlbjERMA8GA1UECwwIVGVhbSBCdW4xEzARBgNVBAMMCnNl\ncnZlci1idW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+7odzr3yI\nYewRNRGIubF5hzT7Bym2dDab4yhaKf5drL+rcA0J15BM8QJ9iSmL1ovg7x35Q2MB\nKw3rl/Yyy3aJS8whZTUze522El72iZbdNbS+oH6GxB2gcZB6hmUehPjHIUH4icwP\ndwVUeR6fB7vkfDddLXe0Tb4qsO1EK8H0mr5PiQSXfj39Yc1QHY7/gZ/xeSrt/6yn\n0oH9HbjF2XLSL2j6cQPKEayartHN0SwzwLi0eWSzcziVPSQV7c6Lg9UuIHbKlgOF\nzDpcp1p1lRqv2yrT25im/dS6oy9XX+p7EfZxqeqpXX2fr5WKxgnzxI3sW93PG8FU\nIDHtnUsoHX3RAgMBAAGjTzBNMCwGA1UdEQQlMCOCCWxvY2FsaG9zdIcEfwAAAYcQ\nAAAAAAAAAAAAAAAAAAAAATAdBgNVHQ4EFgQUF3y/su4J/8ScpK+rM2LwTct6EQow\nDQYJKoZIhvcNAQELBQADggEBAGWGWp59Bmrk3Gt0bidFLEbvlOgGPWCT9ZrJUjgc\nhY44E+/t4gIBdoKOSwxo1tjtz7WsC2IYReLTXh1vTsgEitk0Bf4y7P40+pBwwZwK\naeIF9+PC6ZoAkXGFRoyEalaPVQDBg/DPOMRG9OH0lKfen9OGkZxmmjRLJzbyfAhU\noI/hExIjV8vehcvaJXmkfybJDYOYkN4BCNqPQHNf87ZNdFCb9Zgxwp/Ou+47J5k4\n5plQ+K7trfKXG3ABMbOJXNt1b0sH8jnpAsyHY4DLEQqxKYADbXsr3YX/yy6c0eOo\nX2bHGD1+zGsb7lGyNyoZrCZ0233glrEM4UxmvldBcWwOWfk=\n-----END CERTIFICATE-----\n",
|
||||
key: "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+7odzr3yIYewR\nNRGIubF5hzT7Bym2dDab4yhaKf5drL+rcA0J15BM8QJ9iSmL1ovg7x35Q2MBKw3r\nl/Yyy3aJS8whZTUze522El72iZbdNbS+oH6GxB2gcZB6hmUehPjHIUH4icwPdwVU\neR6fB7vkfDddLXe0Tb4qsO1EK8H0mr5PiQSXfj39Yc1QHY7/gZ/xeSrt/6yn0oH9\nHbjF2XLSL2j6cQPKEayartHN0SwzwLi0eWSzcziVPSQV7c6Lg9UuIHbKlgOFzDpc\np1p1lRqv2yrT25im/dS6oy9XX+p7EfZxqeqpXX2fr5WKxgnzxI3sW93PG8FUIDHt\nnUsoHX3RAgMBAAECggEAAckMqkn+ER3c7YMsKRLc5bUE9ELe+ftUwfA6G+oXVorn\nE+uWCXGdNqI+TOZkQpurQBWn9IzTwv19QY+H740cxo0ozZVSPE4v4czIilv9XlVw\n3YCNa2uMxeqp76WMbz1xEhaFEgn6ASTVf3hxYJYKM0ljhPX8Vb8wWwlLONxr4w4X\nOnQAB5QE7i7LVRsQIpWKnGsALePeQjzhzUZDhz0UnTyGU6GfC+V+hN3RkC34A8oK\njR3/Wsjahev0Rpb+9Pbu3SgTrZTtQ+srlRrEsDG0wVqxkIk9ueSMOHlEtQ7zYZsk\nlX59Bb8LHNGQD5o+H1EDaC6OCsgzUAAJtDRZsPiZEQKBgQDs+YtVsc9RDMoC0x2y\nlVnP6IUDXt+2UXndZfJI3YS+wsfxiEkgK7G3AhjgB+C+DKEJzptVxP+212hHnXgr\n1gfW/x4g7OWBu4IxFmZ2J/Ojor+prhHJdCvD0VqnMzauzqLTe92aexiexXQGm+WW\nwRl3YZLmkft3rzs3ZPhc1G2X9QKBgQDOQq3rrxcvxSYaDZAb+6B/H7ZE4natMCiz\nLx/cWT8n+/CrJI2v3kDfdPl9yyXIOGrsqFgR3uhiUJnz+oeZFFHfYpslb8KvimHx\nKI+qcVDcprmYyXj2Lrf3fvj4pKorc+8TgOBDUpXIFhFDyM+0DmHLfq+7UqvjU9Hs\nkjER7baQ7QKBgQDTh508jU/FxWi9RL4Jnw9gaunwrEt9bxUc79dp+3J25V+c1k6Q\nDPDBr3mM4PtYKeXF30sBMKwiBf3rj0CpwI+W9ntqYIwtVbdNIfWsGtV8h9YWHG98\nJ9q5HLOS9EAnogPuS27walj7wL1k+NvjydJ1of+DGWQi3aQ6OkMIegap0QKBgBlR\nzCHLa5A8plG6an9U4z3Xubs5BZJ6//QHC+Uzu3IAFmob4Zy+Lr5/kITlpCyw6EdG\n3xDKiUJQXKW7kluzR92hMCRnVMHRvfYpoYEtydxcRxo/WS73SzQBjTSQmicdYzLE\ntkLtZ1+ZfeMRSpXy0gR198KKAnm0d2eQBqAJy0h9AoGBAM80zkd+LehBKq87Zoh7\ndtREVWslRD1C5HvFcAxYxBybcKzVpL89jIRGKB8SoZkF7edzhqvVzAMP0FFsEgCh\naClYGtO+uo+B91+5v2CCqowRJUGfbFOtCuSPR7+B3LDK8pkjK2SQ0mFPUfRA5z0z\nNVWtC0EYNBTRkqhYtqr3ZpUc\n-----END PRIVATE KEY-----\n",
|
||||
},
|
||||
tls,
|
||||
fetch() {
|
||||
return new Response("Hello");
|
||||
},
|
||||
|
||||
1
test/js/node/test/fixtures/.gitignore
vendored
1
test/js/node/test/fixtures/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!node_modules
|
||||
4
test/js/node/test/fixtures/.node_repl_history_multiline
vendored
Normal file
4
test/js/node/test/fixtures/.node_repl_history_multiline
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
20
test/js/node/test/fixtures/agent8-cert.pem
vendored
20
test/js/node/test/fixtures/agent8-cert.pem
vendored
@@ -1,20 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDUDCCAjgCAQMwDQYJKoZIhvcNAQELBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNV
|
||||
BAoMDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsMIlNlY3VyZSBEaWdpdGFsIENlcnRp
|
||||
ZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMMIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g
|
||||
QXV0aG9yaXR5MCAXDTE2MTAyMDIzNTk1OVoYDzIyOTYwNjE3MTQ0NjUyWjBdMQsw
|
||||
CQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExCzAJBgNVBAcMAlNGMQ8wDQYDVQQKDAZO
|
||||
T0RFSlMxDzANBgNVBAsMBmFnZW50ODESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN
|
||||
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8qCR7vlhx6Fr109bIS6dQUU2Iqwn
|
||||
4CbYXjxfKMPj4cdCB9l68cRDNystAgNzc7RPUoiz7+gdvY9o8QCL+hiZOArH5xpR
|
||||
lBq57hp9uXIMiZLKuZEZODWr2h1eE0rg8x4aqfWR0/JgPup3d9bOvD47pF7wGmFz
|
||||
mtWlpptjXA6y7mt0ZamYdNoWkoUabrQIheEV/zspbgTJ1mhFkVeGnch5DE/AfNvs
|
||||
M+cml5ZzQnm5FLKtp1CcHPaPDGUd5D3jNmNq55iZTEPQtcYErwHX9aLWQxrl8ZSq
|
||||
4Xo67HP6TjL0zTzzcoJz5H68+FDVoa/gVxwpv/Cka0ief0nNgl17V8aWIQIDAQAB
|
||||
MA0GCSqGSIb3DQEBCwUAA4IBAQB2z3MF4x/1WXcpzqEcyPyowEzczsCZLkhy0cG4
|
||||
eY0mt/+8+JbXdPDgrWNtfqCT2h4KMZu41kquRb63cUYy9DPwFrg8a09picvJWoBp
|
||||
PMXv0o/CttFLYkQ+o0kXTy5DvGUPw9FLoPVncTkGhhX/lOvHKReplhS6lot/5r0g
|
||||
nXlRaMAbzCDRxW5AAUK2p0WR4Ih84lI++1M2m6ac0q7efz3TGpyz0lukHYxNJak0
|
||||
dh7ToIpvQ54MZkxFgG0ej2HGtNBHVnCpMk9bhupDIJ65fybMtIXy8bhUuj4KX/hm
|
||||
tALVY3gVezswj90SGBMxeMwcE7z/jDUpkEAIP4FM3Y+yYfmS
|
||||
-----END CERTIFICATE-----
|
||||
27
test/js/node/test/fixtures/agent8-key.pem
vendored
27
test/js/node/test/fixtures/agent8-key.pem
vendored
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpgIBAAKCAQEA8qCR7vlhx6Fr109bIS6dQUU2Iqwn4CbYXjxfKMPj4cdCB9l6
|
||||
8cRDNystAgNzc7RPUoiz7+gdvY9o8QCL+hiZOArH5xpRlBq57hp9uXIMiZLKuZEZ
|
||||
ODWr2h1eE0rg8x4aqfWR0/JgPup3d9bOvD47pF7wGmFzmtWlpptjXA6y7mt0ZamY
|
||||
dNoWkoUabrQIheEV/zspbgTJ1mhFkVeGnch5DE/AfNvsM+cml5ZzQnm5FLKtp1Cc
|
||||
HPaPDGUd5D3jNmNq55iZTEPQtcYErwHX9aLWQxrl8ZSq4Xo67HP6TjL0zTzzcoJz
|
||||
5H68+FDVoa/gVxwpv/Cka0ief0nNgl17V8aWIQIDAQABAoIBAQC4ERcFXE5Q++Zr
|
||||
bvmsv8dveAls3nxV8kJdo6FxtMMSS2+NsvExr3pqxSedCm8xDU7MR4dy7v55C+5K
|
||||
P+bxsm2y9YLYkb/oAyqhN5m/8YUPbby8cRbX7OfWTkdLjZgA+Qqze+jJCWz47jn6
|
||||
QY2PhAsNVTUEXoAsq/7C2cnUUhZvBr4LfL4rPXrSCIbYsZBcZkR2fSYXLfhAJPND
|
||||
FtRNteiSmQyQovkTl4RCtCpw9iVK/JLwLVOIhKUODbDC2lIIYf3j6g8Uot1RnWzm
|
||||
cjyWiqsMz0eGLvdBae8HnJVVoyr3oe32Fm61qM/ONpvVydHZzULJJj16ApZgi1ag
|
||||
YpzqP2fNAoGBAP4wpoqUVUN6dXlsur73DVVHMRxUf5U1zDZmSUheDidz2qxbuq8Q
|
||||
kjsD3TZktqKcD5eQDWJxAOxsrOCjJmvhvt6PfYm96eSOMiLf1GksOSncJuA3gkse
|
||||
EV140os7kSuuzf4Hc6hF1ZTVyo7ecSulrnl7dTylHvUgBL7bhiRA62TTAoGBAPRa
|
||||
156aestNDqlbr857qiuzGnp7ZWtBy8mtjMFzjP8PhKXu+KVlW89tOloMvjskK1+3
|
||||
gFWYXz39Tt4C9tPebZ4yLcw66buGi8UUMXA+vDKTavDErmPHDIgyqx/cQwLcLr5D
|
||||
P9RrOF8/u3hHKEdnWFFDKe42JtvM1zGINCnnJlC7AoGBANsqoX4dNYMQBFgkysO7
|
||||
CjD8SDjwFm1VzHUfLpKKHlQgDWzNTqKBfEQMKeErZ1m/i6YX26KEYtJ3RXwO0CL2
|
||||
qvcE664nJJMfk9UD/waLzeHs40wyMFKKY1ifw5GvU5VBjHU6gZuWUviYeaVD4HpM
|
||||
yaoPK9+VU6Lw74aMixWZMB1nAoGBALXyeoEnp+1/iD5E/ihy3qhBaaLwBPmTeYnH
|
||||
h3p4bvFw/aWMxmppia5vN7bbrD5fVUilW5LgrXJ8DmCztlTWV6sm1AExkN7IdYSe
|
||||
350jqYDDUirLWMsE6Oj1SYSkvuT/THLxojKqT8RksVQDMBPS+OkxaKRugArEgSvp
|
||||
rmXRLy+HAoGBAPNJaegjDv4WWd4Q2IXacebHchBlGH1KhQd8pBWJbnRO/Zq0z65f
|
||||
Au7bMl6AxMfNDnSeh/UGhPNqBzoHvt9l3WgC/0T+tO00AhlhXxpQBw1OG6R9XhzQ
|
||||
iObkAkHkfUnpkP91/U9d42SvZisnhqZk5K5BIxOmlY5HsejOChu0DT8/
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -26,11 +26,15 @@ Error.stackTraceLimit = 0;
|
||||
|
||||
console.error('before');
|
||||
|
||||
// Invalidate elements protector to force slow-path.
|
||||
// The fast-path of JSON.stringify is iterative and won't throw.
|
||||
Array.prototype[2] = 'foo';
|
||||
|
||||
// Trigger stack overflow by stringifying a deeply nested array.
|
||||
let array = [];
|
||||
for (let i = 0; i < 100000; i++) {
|
||||
array = [ array ];
|
||||
}
|
||||
// eslint-disable-next-line no-sparse-arrays
|
||||
let array = [,];
|
||||
for (let i = 0; i < 10000; i++)
|
||||
array = [array];
|
||||
|
||||
JSON.stringify(array);
|
||||
|
||||
|
||||
3
test/js/node/test/fixtures/copy/utf/新建文件夹/experimental.json
vendored
Normal file
3
test/js/node/test/fixtures/copy/utf/新建文件夹/experimental.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"ofLife": 42
|
||||
}
|
||||
8
test/js/node/test/fixtures/dotenv/lines-with-only-spaces.env
vendored
Normal file
8
test/js/node/test/fixtures/dotenv/lines-with-only-spaces.env
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
EMPTY_LINE='value after an empty line'
|
||||
|
||||
SPACES_LINE='value after a line with just some spaces'
|
||||
|
||||
TABS_LINE='value after a line with just some tabs'
|
||||
|
||||
SPACES_TABS_LINE='value after a line with just some spaces and tabs'
|
||||
1
test/js/node/test/fixtures/dotenv/node-options-no-tranform.env
vendored
Normal file
1
test/js/node/test/fixtures/dotenv/node-options-no-tranform.env
vendored
Normal file
@@ -0,0 +1 @@
|
||||
NODE_OPTIONS="--no-experimental-strip-types"
|
||||
2
test/js/node/test/fixtures/dotenv/valid.env
vendored
2
test/js/node/test/fixtures/dotenv/valid.env
vendored
@@ -6,6 +6,8 @@ BASIC=basic
|
||||
|
||||
# previous line intentionally left blank
|
||||
AFTER_LINE=after_line
|
||||
A="B=C"
|
||||
B=C=D
|
||||
EMPTY=
|
||||
EMPTY_SINGLE_QUOTES=''
|
||||
EMPTY_DOUBLE_QUOTES=""
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
node:punycode:49
|
||||
node:punycode:54
|
||||
throw new RangeError(errors[type]);
|
||||
^
|
||||
|
||||
RangeError: Invalid input
|
||||
at error (node:punycode:49:8)
|
||||
at Object.decode (node:punycode:242:5)
|
||||
at error (node:punycode:54:8)
|
||||
at Object.decode (node:punycode:247:5)
|
||||
at Object.<anonymous> (*core_line_numbers.js:13:10)
|
||||
|
||||
Node.js *
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
throw new Error('Should include grayed stack trace')
|
||||
'use strict';
|
||||
throw new Error('Should include grayed stack trace');
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
*force_colors.js:1
|
||||
throw new Error('Should include grayed stack trace')
|
||||
*force_colors.js:2
|
||||
throw new Error('Should include grayed stack trace');
|
||||
^
|
||||
|
||||
Error: Should include grayed stack trace
|
||||
at Object.<anonymous> [90m(/[39mtest*force_colors.js:1:7[90m)[39m
|
||||
at Object.<anonymous> [90m(/[39mtest*force_colors.js:2:7[90m)[39m
|
||||
[90m at *[39m
|
||||
[90m at *[39m
|
||||
[90m at *[39m
|
||||
|
||||
@@ -6,4 +6,4 @@ eval(`
|
||||
|
||||
throw new Error('error in anonymous script');
|
||||
|
||||
`)
|
||||
`);
|
||||
|
||||
@@ -6,4 +6,4 @@ eval(`
|
||||
|
||||
throw new Error('error in named script');
|
||||
|
||||
//# sourceURL=evalscript.js`)
|
||||
//# sourceURL=evalscript.js`);
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
/* eslint-disable indent, no-tabs */
|
||||
/* eslint-disable @stylistic/js/indent, @stylistic/js/no-tabs */
|
||||
'use strict';
|
||||
require('../../common');
|
||||
|
||||
|
||||
BIN
test/js/node/test/fixtures/es-modules/dep.wasm
vendored
Normal file
BIN
test/js/node/test/fixtures/es-modules/dep.wasm
vendored
Normal file
Binary file not shown.
@@ -7,3 +7,4 @@ exports['\u{D83C}'] = 'no';
|
||||
exports['\u{D83C}\u{DF10}'] = 'yes';
|
||||
exports.package = 10; // reserved word
|
||||
Object.defineProperty(exports, 'z', { value: 'yes' });
|
||||
exports['module.exports'] = 5;
|
||||
|
||||
18
test/js/node/test/fixtures/es-modules/globals.js
vendored
Normal file
18
test/js/node/test/fixtures/es-modules/globals.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
// globals.js - Direct global exports for WebAssembly imports
|
||||
|
||||
// Immutable globals (simple values)
|
||||
const i32_value = 42;
|
||||
export { i32_value as '🚀i32_value' }
|
||||
export const i64_value = 9223372036854775807n; // Max i64 value
|
||||
export const f32_value = 3.14159;
|
||||
export const f64_value = 3.141592653589793;
|
||||
|
||||
// Mutable globals with WebAssembly.Global wrapper
|
||||
export const i32_mut_value = new WebAssembly.Global({ value: 'i32', mutable: true }, 100);
|
||||
export const i64_mut_value = new WebAssembly.Global({ value: 'i64', mutable: true }, 200n);
|
||||
export const f32_mut_value = new WebAssembly.Global({ value: 'f32', mutable: true }, 2.71828);
|
||||
export const f64_mut_value = new WebAssembly.Global({ value: 'f64', mutable: true }, 2.718281828459045);
|
||||
|
||||
export const externref_value = { hello: 'world' };
|
||||
export const externref_mut_value = new WebAssembly.Global({ value: 'externref', mutable: true }, { mutable: 'global' });
|
||||
export const null_externref_value = null;
|
||||
BIN
test/js/node/test/fixtures/es-modules/globals.wasm
vendored
Normal file
BIN
test/js/node/test/fixtures/es-modules/globals.wasm
vendored
Normal file
Binary file not shown.
1
test/js/node/test/fixtures/es-modules/import-meta-main.mjs
vendored
Normal file
1
test/js/node/test/fixtures/es-modules/import-meta-main.mjs
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export const isMain = import.meta.main;
|
||||
1
test/js/node/test/fixtures/es-modules/import-meta-main.ts
vendored
Normal file
1
test/js/node/test/fixtures/es-modules/import-meta-main.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export const isMain = import.meta.main;
|
||||
@@ -1 +0,0 @@
|
||||
import 'http://example.com/foo.js';
|
||||
2
test/js/node/test/fixtures/es-modules/require-module-instantiated/a.mjs
vendored
Normal file
2
test/js/node/test/fixtures/es-modules/require-module-instantiated/a.mjs
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export { default as b } from './b.cjs';
|
||||
export { default as c } from './c.mjs';
|
||||
1
test/js/node/test/fixtures/es-modules/require-module-instantiated/b.cjs
vendored
Normal file
1
test/js/node/test/fixtures/es-modules/require-module-instantiated/b.cjs
vendored
Normal file
@@ -0,0 +1 @@
|
||||
module.exports = require('./c.mjs');
|
||||
3
test/js/node/test/fixtures/es-modules/require-module-instantiated/c.mjs
vendored
Normal file
3
test/js/node/test/fixtures/es-modules/require-module-instantiated/c.mjs
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
const foo = 1;
|
||||
export default foo;
|
||||
export { foo as 'module.exports' };
|
||||
6
test/js/node/test/fixtures/es-modules/tla/unresolved-with-listener.mjs
vendored
Normal file
6
test/js/node/test/fixtures/es-modules/tla/unresolved-with-listener.mjs
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
process.on('exit', (exitCode) => {
|
||||
console.log(`the exit listener received code: ${exitCode}`);
|
||||
console.log(`process.exitCode inside the exist listener: ${process.exitCode}`);
|
||||
})
|
||||
|
||||
await new Promise(() => {});
|
||||
8
test/js/node/test/fixtures/es-modules/tla/unresolved-withexitcode-and-listener.mjs
vendored
Normal file
8
test/js/node/test/fixtures/es-modules/tla/unresolved-withexitcode-and-listener.mjs
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
process.on('exit', (exitCode) => {
|
||||
console.log(`the exit listener received code: ${exitCode}`);
|
||||
console.log(`process.exitCode inside the exist listener: ${process.exitCode}`);
|
||||
});
|
||||
|
||||
process.exitCode = 42;
|
||||
|
||||
await new Promise(() => {});
|
||||
@@ -1,2 +1,7 @@
|
||||
process.on('exit', (exitCode) => {
|
||||
console.log(`the exit listener received code: ${exitCode}`);
|
||||
});
|
||||
|
||||
process.exitCode = 42;
|
||||
|
||||
await new Promise(() => {});
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
process.on('exit', (exitCode) => {
|
||||
console.log(`the exit listener received code: ${exitCode}`);
|
||||
})
|
||||
|
||||
await new Promise(() => {});
|
||||
|
||||
BIN
test/js/node/test/fixtures/es-modules/top-level-wasm.wasm
vendored
Normal file
BIN
test/js/node/test/fixtures/es-modules/top-level-wasm.wasm
vendored
Normal file
Binary file not shown.
BIN
test/js/node/test/fixtures/es-modules/unimportable.wasm
vendored
Normal file
BIN
test/js/node/test/fixtures/es-modules/unimportable.wasm
vendored
Normal file
Binary file not shown.
11
test/js/node/test/fixtures/es-modules/wasm-function.js
vendored
Normal file
11
test/js/node/test/fixtures/es-modules/wasm-function.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
export function call1 (func, thisObj, arg0) {
|
||||
return func.call(thisObj, arg0);
|
||||
}
|
||||
|
||||
export function call2 (func, thisObj, arg0, arg1) {
|
||||
return func.call(thisObj, arg0, arg1);
|
||||
}
|
||||
|
||||
export function call3 (func, thisObj, arg0, arg1, arg2) {
|
||||
return func.call(thisObj, arg0, arg1, arg2);
|
||||
}
|
||||
3
test/js/node/test/fixtures/es-modules/wasm-object.js
vendored
Normal file
3
test/js/node/test/fixtures/es-modules/wasm-object.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export const { get: getProperty, set: setProperty } = Reflect;
|
||||
export const { create } = Object;
|
||||
export const global = globalThis;
|
||||
7
test/js/node/test/fixtures/es-modules/wasm-source-phase.js
vendored
Normal file
7
test/js/node/test/fixtures/es-modules/wasm-source-phase.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import source mod from './simple.wasm';
|
||||
|
||||
export function dyn (specifier) {
|
||||
return import.source(specifier);
|
||||
}
|
||||
|
||||
export { mod };
|
||||
6
test/js/node/test/fixtures/es-modules/wasm-string-constants.js
vendored
Normal file
6
test/js/node/test/fixtures/es-modules/wasm-string-constants.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
const console = 'console';
|
||||
const hello_world = 'hello world';
|
||||
const log = 'log';
|
||||
const prop = 'prop';
|
||||
|
||||
export { console, hello_world as 'hello world', log, prop }
|
||||
@@ -2,11 +2,7 @@
|
||||
[eval]:1
|
||||
with(this){__filename}
|
||||
^^^^
|
||||
x The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'.
|
||||
,----
|
||||
1 | with(this){__filename}
|
||||
: ^^^^
|
||||
`----
|
||||
The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'.
|
||||
|
||||
SyntaxError: Strict mode code may not include a with statement
|
||||
|
||||
@@ -40,7 +36,7 @@ Node.js *
|
||||
var ______________________________________________; throw 10
|
||||
^
|
||||
10
|
||||
(Use `node --trace-uncaught ...` to show where the exception was thrown)
|
||||
(Use `* --trace-uncaught ...` to show where the exception was thrown)
|
||||
|
||||
Node.js *
|
||||
|
||||
@@ -48,7 +44,7 @@ Node.js *
|
||||
var ______________________________________________; throw 10
|
||||
^
|
||||
10
|
||||
(Use `node --trace-uncaught ...` to show where the exception was thrown)
|
||||
(Use `* --trace-uncaught ...` to show where the exception was thrown)
|
||||
|
||||
Node.js *
|
||||
done
|
||||
|
||||
@@ -5,21 +5,21 @@ require('../../common');
|
||||
const spawnSync = require('child_process').spawnSync;
|
||||
|
||||
const queue = [
|
||||
'enum Foo{};',
|
||||
'throw new SyntaxError("hello")',
|
||||
'const foo;',
|
||||
'let x: number = 100;x;',
|
||||
'const foo: string = 10;',
|
||||
'function foo(){};foo<Number>(1);',
|
||||
'interface Foo{};const foo;',
|
||||
'function foo(){ await Promise.resolve(1)};',
|
||||
'enum Foo{};',
|
||||
'throw new SyntaxError("hello")',
|
||||
'const foo;',
|
||||
'let x: number = 100;x;',
|
||||
'const foo: string = 10;',
|
||||
'function foo(){};foo<Number>(1);',
|
||||
'interface Foo{};const foo;',
|
||||
'function foo(){ await Promise.resolve(1)};',
|
||||
];
|
||||
|
||||
for (const cmd of queue) {
|
||||
const args = ['--disable-warning=ExperimentalWarning', '-p', cmd];
|
||||
const result = spawnSync(process.execPath, args, {
|
||||
stdio: 'pipe'
|
||||
});
|
||||
process.stdout.write(result.stdout);
|
||||
process.stdout.write(result.stderr);
|
||||
const args = ['--disable-warning=ExperimentalWarning', '-p', cmd];
|
||||
const result = spawnSync(process.execPath, args, {
|
||||
stdio: 'pipe',
|
||||
});
|
||||
process.stdout.write(result.stdout);
|
||||
process.stdout.write(result.stderr);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
[eval]:1
|
||||
enum Foo{};
|
||||
^^^^
|
||||
x TypeScript enum is not supported in strip-only mode
|
||||
,----
|
||||
1 | enum Foo{};
|
||||
: ^^^^^^^^^^
|
||||
`----
|
||||
TypeScript enum is not supported in strip-only mode
|
||||
|
||||
SyntaxError: Unexpected reserved word
|
||||
|
||||
@@ -20,6 +16,7 @@ Node.js *
|
||||
[eval]:1
|
||||
const foo;
|
||||
^^^
|
||||
'const' declarations must be initialized
|
||||
|
||||
SyntaxError: Missing initializer in const declaration
|
||||
|
||||
@@ -28,20 +25,17 @@ Node.js *
|
||||
undefined
|
||||
false
|
||||
[eval]:1
|
||||
;const foo;
|
||||
^^^
|
||||
interface Foo{};const foo;
|
||||
^^^
|
||||
'const' declarations must be initialized
|
||||
|
||||
SyntaxError: Missing initializer in const declaration
|
||||
SyntaxError: Unexpected identifier 'Foo'
|
||||
|
||||
Node.js *
|
||||
[eval]:1
|
||||
function foo(){ await Promise.resolve(1)};
|
||||
^^^^^
|
||||
x await isn't allowed in non-async function
|
||||
,----
|
||||
1 | function foo(){ await Promise.resolve(1)};
|
||||
: ^^^^^^^
|
||||
`----
|
||||
await isn't allowed in non-async function
|
||||
|
||||
SyntaxError: await is only valid in async functions and the top level bodies of modules
|
||||
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
[stdin]:1
|
||||
with(this){__filename}
|
||||
^^^^
|
||||
x The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'.
|
||||
,----
|
||||
1 | with(this){__filename}
|
||||
: ^^^^
|
||||
`----
|
||||
The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'.
|
||||
|
||||
SyntaxError: Strict mode code may not include a with statement
|
||||
|
||||
@@ -40,7 +36,7 @@ Node.js *
|
||||
let ______________________________________________; throw 10
|
||||
^
|
||||
10
|
||||
(Use `node --trace-uncaught ...` to show where the exception was thrown)
|
||||
(Use `* --trace-uncaught ...` to show where the exception was thrown)
|
||||
|
||||
Node.js *
|
||||
|
||||
@@ -48,7 +44,7 @@ Node.js *
|
||||
let ______________________________________________; throw 10
|
||||
^
|
||||
10
|
||||
(Use `node --trace-uncaught ...` to show where the exception was thrown)
|
||||
(Use `* --trace-uncaught ...` to show where the exception was thrown)
|
||||
|
||||
Node.js *
|
||||
done
|
||||
|
||||
@@ -5,34 +5,34 @@ require('../../common');
|
||||
const spawn = require('child_process').spawn;
|
||||
|
||||
function run(cmd, strict, cb) {
|
||||
const args = ['--disable-warning=ExperimentalWarning'];
|
||||
if (strict) args.push('--use_strict');
|
||||
args.push('-p');
|
||||
const child = spawn(process.execPath, args);
|
||||
child.stdout.pipe(process.stdout);
|
||||
child.stderr.pipe(process.stdout);
|
||||
child.stdin.end(cmd);
|
||||
child.on('close', cb);
|
||||
const args = ['--disable-warning=ExperimentalWarning'];
|
||||
if (strict) args.push('--use_strict');
|
||||
args.push('-p');
|
||||
const child = spawn(process.execPath, args);
|
||||
child.stdout.pipe(process.stdout);
|
||||
child.stderr.pipe(process.stdout);
|
||||
child.stdin.end(cmd);
|
||||
child.on('close', cb);
|
||||
}
|
||||
|
||||
const queue =
|
||||
[
|
||||
'enum Foo{};',
|
||||
'throw new SyntaxError("hello")',
|
||||
'const foo;',
|
||||
'let x: number = 100;x;',
|
||||
'const foo: string = 10;',
|
||||
'function foo(){};foo<Number>(1);',
|
||||
'interface Foo{};const foo;',
|
||||
'function foo(){ await Promise.resolve(1)};',
|
||||
'enum Foo{};',
|
||||
'throw new SyntaxError("hello")',
|
||||
'const foo;',
|
||||
'let x: number = 100;x;',
|
||||
'const foo: string = 10;',
|
||||
'function foo(){};foo<Number>(1);',
|
||||
'interface Foo{};const foo;',
|
||||
'function foo(){ await Promise.resolve(1)};',
|
||||
];
|
||||
|
||||
function go() {
|
||||
const c = queue.shift();
|
||||
if (!c) return console.log('done');
|
||||
run(c, false, function () {
|
||||
run(c, true, go);
|
||||
});
|
||||
const c = queue.shift();
|
||||
if (!c) return console.log('done');
|
||||
run(c, false, function() {
|
||||
run(c, true, go);
|
||||
});
|
||||
}
|
||||
|
||||
go();
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
[stdin]:1
|
||||
enum Foo{};
|
||||
^^^^
|
||||
x TypeScript enum is not supported in strip-only mode
|
||||
,----
|
||||
1 | enum Foo{};
|
||||
: ^^^^^^^^^^
|
||||
`----
|
||||
TypeScript enum is not supported in strip-only mode
|
||||
|
||||
SyntaxError: Unexpected reserved word
|
||||
|
||||
@@ -13,11 +9,7 @@ Node.js *
|
||||
[stdin]:1
|
||||
enum Foo{};
|
||||
^^^^
|
||||
x TypeScript enum is not supported in strip-only mode
|
||||
,----
|
||||
1 | enum Foo{};
|
||||
: ^^^^^^^^^^
|
||||
`----
|
||||
TypeScript enum is not supported in strip-only mode
|
||||
|
||||
SyntaxError: Unexpected reserved word
|
||||
|
||||
@@ -39,6 +31,7 @@ Node.js *
|
||||
[stdin]:1
|
||||
const foo;
|
||||
^^^
|
||||
'const' declarations must be initialized
|
||||
|
||||
SyntaxError: Missing initializer in const declaration
|
||||
|
||||
@@ -46,6 +39,7 @@ Node.js *
|
||||
[stdin]:1
|
||||
const foo;
|
||||
^^^
|
||||
'const' declarations must be initialized
|
||||
|
||||
SyntaxError: Missing initializer in const declaration
|
||||
|
||||
@@ -57,27 +51,25 @@ undefined
|
||||
false
|
||||
false
|
||||
[stdin]:1
|
||||
;const foo;
|
||||
^^^
|
||||
interface Foo{};const foo;
|
||||
^^^
|
||||
'const' declarations must be initialized
|
||||
|
||||
SyntaxError: Missing initializer in const declaration
|
||||
SyntaxError: Unexpected identifier 'Foo'
|
||||
|
||||
Node.js *
|
||||
[stdin]:1
|
||||
;const foo;
|
||||
^^^
|
||||
interface Foo{};const foo;
|
||||
^^^^^^^^^
|
||||
'const' declarations must be initialized
|
||||
|
||||
SyntaxError: Missing initializer in const declaration
|
||||
SyntaxError: Unexpected strict mode reserved word
|
||||
|
||||
Node.js *
|
||||
[stdin]:1
|
||||
function foo(){ await Promise.resolve(1)};
|
||||
^^^^^
|
||||
x await isn't allowed in non-async function
|
||||
,----
|
||||
1 | function foo(){ await Promise.resolve(1)};
|
||||
: ^^^^^^^
|
||||
`----
|
||||
await isn't allowed in non-async function
|
||||
|
||||
SyntaxError: await is only valid in async functions and the top level bodies of modules
|
||||
|
||||
@@ -85,11 +77,7 @@ Node.js *
|
||||
[stdin]:1
|
||||
function foo(){ await Promise.resolve(1)};
|
||||
^^^^^
|
||||
x await isn't allowed in non-async function
|
||||
,----
|
||||
1 | function foo(){ await Promise.resolve(1)};
|
||||
: ^^^^^^^
|
||||
`----
|
||||
await isn't allowed in non-async function
|
||||
|
||||
SyntaxError: await is only valid in async functions and the top level bodies of modules
|
||||
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDjzCCAnegAwIBAgIJAIIPb0xPNcgKMA0GCSqGSIb3DQEBCwUAMH0xCzAJBgNV
|
||||
BAYTAklMMRYwFAYDVQQKDA1TdGFydENvbSBMdGQuMSswKQYDVQQLDCJTZWN1cmUg
|
||||
RGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQDDCBTdGFydENvbSBD
|
||||
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAgFw0xODExMTYxODQyMjFaGA8yMjkyMDgz
|
||||
MDE4NDIyMVowfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoMDVN0YXJ0Q29tIEx0ZC4x
|
||||
KzApBgNVBAsMIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxKTAn
|
||||
BgNVBAMMIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1mZ/bufFVPGxKagC8W7hpBephIFIZw9K
|
||||
bX6ska2PXZkyqRToU5UFgTYhdBwkCNJMwaYfTqLpc9y/goRpVlLSAFk/t4W6Z0w1
|
||||
b80T149XvmelAUQTBJR49kkYspN+Jw627pf8tmmSkG5qcHykB9gr/nvoTpXtlk2t
|
||||
um/SL3BQSqXmqffBM/6VpFvGAB2FNWGQUIxj55e/7p9Opjo8yS4s2lnbovV6OSJ/
|
||||
CnqEYt6Ur4kdLwVOLKlMKRG3H4q65UXfoVpE+XhFgKADAiMZySSGjBsbjF6ADPnP
|
||||
/zNklvYwcM0phtQivmkKEcSOvJNsZodszYhoiwie5OknOo7Mqz9jqQIDAQABoxAw
|
||||
DjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBrsLtF6MEMCWQF6YXP
|
||||
DLw4friQhYzoB7w1W+fgksOOIyLyRmUEEA9X0FSfNW2a6KLmMtSoNYn3y5cLkmGr
|
||||
+JE4U3ovvXDU8C3r09dynuHywcib4oFRaG8NKNqldUryO3abk+kbdxMvxQlA/NHb
|
||||
33ABKPX7UTnTr6CexZ5Qr0ss62w0ELwxC3eVugJrVtDOmFt/yZF75lc0OgifK4Nj
|
||||
dii7g+sQvzymIgdWLAIbbrc3r/NfymFgmTEMPY/M17QEIdr9YS1qAHmqA6vGvmBz
|
||||
v2fCr+xrOQRzq+HO1atOmz8gOdtYJwDfUl2CWgJ2r8iMRsOTE7QgEl/+zpOM3fe+
|
||||
JU1b
|
||||
-----END CERTIFICATE-----
|
||||
3
test/js/node/test/fixtures/fetch-and-log.mjs
vendored
Normal file
3
test/js/node/test/fixtures/fetch-and-log.mjs
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
const response = await fetch(process.env.FETCH_URL);
|
||||
const body = await response.text();
|
||||
console.log(body);
|
||||
165
test/js/node/test/fixtures/guess-hash-seed.js
vendored
165
test/js/node/test/fixtures/guess-hash-seed.js
vendored
@@ -1,165 +0,0 @@
|
||||
'use strict';
|
||||
function run_repeated(n, fn) {
|
||||
const res = [];
|
||||
for (let i = 0; i < n; i++) res.push(fn());
|
||||
return res;
|
||||
}
|
||||
|
||||
const INT_MAX = 0x7fffffff;
|
||||
|
||||
// from src/js/collection.js
|
||||
// key must be a signed 32-bit number!
|
||||
function ComputeIntegerHash(key/*, seed*/) {
|
||||
let hash = key;
|
||||
hash = hash ^ 0/*seed*/;
|
||||
hash = ~hash + (hash << 15); // hash = (hash << 15) - hash - 1;
|
||||
hash = hash ^ (hash >>> 12);
|
||||
hash = hash + (hash << 2);
|
||||
hash = hash ^ (hash >>> 4);
|
||||
hash = (hash * 2057) | 0; // hash = (hash + (hash << 3)) + (hash << 11);
|
||||
hash = hash ^ (hash >>> 16);
|
||||
return hash & 0x3fffffff;
|
||||
}
|
||||
|
||||
const kNofHashBitFields = 2;
|
||||
const kHashShift = kNofHashBitFields;
|
||||
const kHashBitMask = 0xffffffff >>> kHashShift;
|
||||
const kZeroHash = 27;
|
||||
|
||||
function string_to_array(str) {
|
||||
const res = new Array(str.length);
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
res[i] = str.charCodeAt(i);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
function gen_specialized_hasher(str) {
|
||||
const str_arr = string_to_array(str);
|
||||
return Function('seed', `
|
||||
var running_hash = seed;
|
||||
${str_arr.map((c) => `
|
||||
running_hash += ${c};
|
||||
running_hash &= 0xffffffff;
|
||||
running_hash += (running_hash << 10);
|
||||
running_hash &= 0xffffffff;
|
||||
running_hash ^= (running_hash >>> 6);
|
||||
running_hash &= 0xffffffff;
|
||||
`).join('')}
|
||||
running_hash += (running_hash << 3);
|
||||
running_hash &= 0xffffffff;
|
||||
running_hash ^= (running_hash >>> 11);
|
||||
running_hash &= 0xffffffff;
|
||||
running_hash += (running_hash << 15);
|
||||
running_hash &= 0xffffffff;
|
||||
if ((running_hash & ${kHashBitMask}) == 0) {
|
||||
return ${kZeroHash};
|
||||
}
|
||||
return running_hash;
|
||||
`);
|
||||
}
|
||||
|
||||
// adapted from HashToEntry
|
||||
function hash_to_bucket(hash, numBuckets) {
|
||||
return (hash & ((numBuckets) - 1));
|
||||
}
|
||||
|
||||
function time_set_lookup(set, value) {
|
||||
const t1 = process.hrtime();
|
||||
for (let i = 0; i < 100; i++) {
|
||||
set.has(value);
|
||||
}
|
||||
const t = process.hrtime(t1);
|
||||
const secs = t[0];
|
||||
const nanos = t[1];
|
||||
return secs * 1e9 + nanos;
|
||||
}
|
||||
|
||||
// Prevent optimization of SetHas().
|
||||
%NeverOptimizeFunction(time_set_lookup);
|
||||
|
||||
// Set with 256 buckets; bucket 0 full, others empty
|
||||
const tester_set_buckets = 256;
|
||||
const tester_set = new Set();
|
||||
let tester_set_treshold;
|
||||
(function() {
|
||||
// fill bucket 0 and find extra numbers mapping to bucket 0 and a different
|
||||
// bucket `capacity == numBuckets * 2`
|
||||
let needed = Math.floor(tester_set_buckets * 1.5) + 1;
|
||||
let positive_test_value;
|
||||
let negative_test_value;
|
||||
for (let i = 0; true; i++) {
|
||||
if (i > INT_MAX) throw new Error('i too high');
|
||||
if (hash_to_bucket(ComputeIntegerHash(i), tester_set_buckets) !== 0) {
|
||||
negative_test_value = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (let i = 0; needed > 0; i++) {
|
||||
if (i > INT_MAX) throw new Error('i too high');
|
||||
if (hash_to_bucket(ComputeIntegerHash(i), tester_set_buckets) === 0) {
|
||||
needed--;
|
||||
if (needed == 0) {
|
||||
positive_test_value = i;
|
||||
} else {
|
||||
tester_set.add(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// calibrate Set access times for accessing the full bucket / an empty bucket
|
||||
const pos_time =
|
||||
Math.min(...run_repeated(10000, time_set_lookup.bind(null, tester_set,
|
||||
positive_test_value)));
|
||||
const neg_time =
|
||||
Math.min(...run_repeated(10000, time_set_lookup.bind(null, tester_set,
|
||||
negative_test_value)));
|
||||
tester_set_treshold = (pos_time + neg_time) / 2;
|
||||
// console.log(`pos_time: ${pos_time}, neg_time: ${neg_time},`,
|
||||
// `threshold: ${tester_set_treshold}`);
|
||||
})();
|
||||
|
||||
// determine hash seed
|
||||
const slow_str_gen = (function*() {
|
||||
let strgen_i = 0;
|
||||
outer:
|
||||
while (1) {
|
||||
const str = `#${strgen_i++}`;
|
||||
for (let i = 0; i < 1000; i++) {
|
||||
if (time_set_lookup(tester_set, str) < tester_set_treshold)
|
||||
continue outer;
|
||||
}
|
||||
yield str;
|
||||
}
|
||||
})();
|
||||
|
||||
const first_slow_str = slow_str_gen.next().value;
|
||||
// console.log('first slow string:', first_slow_str);
|
||||
const first_slow_str_special_hasher = gen_specialized_hasher(first_slow_str);
|
||||
let seed_candidates = [];
|
||||
//var t_before_first_seed_brute = performance.now();
|
||||
for (let seed_candidate = 0; seed_candidate < 0x100000000; seed_candidate++) {
|
||||
if (hash_to_bucket(first_slow_str_special_hasher(seed_candidate),
|
||||
tester_set_buckets) == 0) {
|
||||
seed_candidates.push(seed_candidate);
|
||||
}
|
||||
}
|
||||
// console.log(`got ${seed_candidates.length} candidates`);
|
||||
// after ${performance.now()-t_before_first_seed_brute}
|
||||
while (seed_candidates.length > 1) {
|
||||
const slow_str = slow_str_gen.next().value;
|
||||
const special_hasher = gen_specialized_hasher(slow_str);
|
||||
const new_seed_candidates = [];
|
||||
for (const seed_candidate of seed_candidates) {
|
||||
if (hash_to_bucket(special_hasher(seed_candidate), tester_set_buckets) ==
|
||||
0) {
|
||||
new_seed_candidates.push(seed_candidate);
|
||||
}
|
||||
}
|
||||
seed_candidates = new_seed_candidates;
|
||||
// console.log(`reduced to ${seed_candidates.length} candidates`);
|
||||
}
|
||||
if (seed_candidates.length != 1)
|
||||
throw new Error('no candidates remaining');
|
||||
const seed = seed_candidates[0];
|
||||
console.log(seed);
|
||||
149
test/js/node/test/fixtures/icu-punycode-toascii.json
vendored
149
test/js/node/test/fixtures/icu-punycode-toascii.json
vendored
@@ -1,149 +0,0 @@
|
||||
[
|
||||
"This resource is focused on highlighting issues with UTS #46 ToASCII",
|
||||
{
|
||||
"comment": "Label with hyphens in 3rd and 4th position",
|
||||
"input": "aa--",
|
||||
"output": "aa--"
|
||||
},
|
||||
{
|
||||
"input": "a†--",
|
||||
"output": "xn--a---kp0a"
|
||||
},
|
||||
{
|
||||
"input": "ab--c",
|
||||
"output": "ab--c"
|
||||
},
|
||||
{
|
||||
"comment": "Label with leading hyphen",
|
||||
"input": "-x",
|
||||
"output": "-x"
|
||||
},
|
||||
{
|
||||
"input": "-†",
|
||||
"output": "xn----xhn"
|
||||
},
|
||||
{
|
||||
"input": "-x.xn--nxa",
|
||||
"output": "-x.xn--nxa"
|
||||
},
|
||||
{
|
||||
"input": "-x.β",
|
||||
"output": "-x.xn--nxa"
|
||||
},
|
||||
{
|
||||
"comment": "Label with trailing hyphen",
|
||||
"input": "x-.xn--nxa",
|
||||
"output": "x-.xn--nxa"
|
||||
},
|
||||
{
|
||||
"input": "x-.β",
|
||||
"output": "x-.xn--nxa"
|
||||
},
|
||||
{
|
||||
"comment": "Empty labels",
|
||||
"input": "x..xn--nxa",
|
||||
"output": "x..xn--nxa"
|
||||
},
|
||||
{
|
||||
"input": "x..β",
|
||||
"output": "x..xn--nxa"
|
||||
},
|
||||
{
|
||||
"comment": "Invalid Punycode",
|
||||
"input": "xn--a",
|
||||
"output": null
|
||||
},
|
||||
{
|
||||
"input": "xn--a.xn--nxa",
|
||||
"output": null
|
||||
},
|
||||
{
|
||||
"input": "xn--a.β",
|
||||
"output": null
|
||||
},
|
||||
{
|
||||
"comment": "Valid Punycode",
|
||||
"input": "xn--nxa.xn--nxa",
|
||||
"output": "xn--nxa.xn--nxa"
|
||||
},
|
||||
{
|
||||
"comment": "Mixed",
|
||||
"input": "xn--nxa.β",
|
||||
"output": "xn--nxa.xn--nxa"
|
||||
},
|
||||
{
|
||||
"input": "ab--c.xn--nxa",
|
||||
"output": "ab--c.xn--nxa"
|
||||
},
|
||||
{
|
||||
"input": "ab--c.β",
|
||||
"output": "ab--c.xn--nxa"
|
||||
},
|
||||
{
|
||||
"comment": "CheckJoiners is true",
|
||||
"input": "\u200D.example",
|
||||
"output": null
|
||||
},
|
||||
{
|
||||
"input": "xn--1ug.example",
|
||||
"output": null
|
||||
},
|
||||
{
|
||||
"comment": "CheckBidi is true",
|
||||
"input": "يa",
|
||||
"output": null
|
||||
},
|
||||
{
|
||||
"input": "xn--a-yoc",
|
||||
"output": null
|
||||
},
|
||||
{
|
||||
"comment": "processing_option is Nontransitional_Processing",
|
||||
"input": "ශ්රී",
|
||||
"output": "xn--10cl1a0b660p"
|
||||
},
|
||||
{
|
||||
"input": "نامهای",
|
||||
"output": "xn--mgba3gch31f060k"
|
||||
},
|
||||
{
|
||||
"comment": "U+FFFD",
|
||||
"input": "\uFFFD.com",
|
||||
"output": null
|
||||
},
|
||||
{
|
||||
"comment": "U+FFFD character encoded in Punycode",
|
||||
"input": "xn--zn7c.com",
|
||||
"output": null
|
||||
},
|
||||
{
|
||||
"comment": "Label longer than 63 code points",
|
||||
"input": "x01234567890123456789012345678901234567890123456789012345678901x",
|
||||
"output": "x01234567890123456789012345678901234567890123456789012345678901x"
|
||||
},
|
||||
{
|
||||
"input": "x01234567890123456789012345678901234567890123456789012345678901†",
|
||||
"output": "xn--x01234567890123456789012345678901234567890123456789012345678901-6963b"
|
||||
},
|
||||
{
|
||||
"input": "x01234567890123456789012345678901234567890123456789012345678901x.xn--nxa",
|
||||
"output": "x01234567890123456789012345678901234567890123456789012345678901x.xn--nxa"
|
||||
},
|
||||
{
|
||||
"input": "x01234567890123456789012345678901234567890123456789012345678901x.β",
|
||||
"output": "x01234567890123456789012345678901234567890123456789012345678901x.xn--nxa"
|
||||
},
|
||||
{
|
||||
"comment": "Domain excluding TLD longer than 253 code points",
|
||||
"input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x",
|
||||
"output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x"
|
||||
},
|
||||
{
|
||||
"input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--nxa",
|
||||
"output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--nxa"
|
||||
},
|
||||
{
|
||||
"input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.β",
|
||||
"output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--nxa"
|
||||
}
|
||||
]
|
||||
@@ -20,14 +20,14 @@
|
||||
"dateTimeFormats": {
|
||||
"en": "7/25/1980, 1:35:33 AM",
|
||||
"zh": "1980/7/25 01:35:33",
|
||||
"hi": "25/7/1980, 1:35:33 am",
|
||||
"hi": "25/7/1980, पू 1:35:33",
|
||||
"es": "25/7/1980, 1:35:33",
|
||||
"fr": "25/07/1980 01:35:33",
|
||||
"ar": "٢٥/٧/١٩٨٠، ١:٣٥:٣٣ ص",
|
||||
"ar": "25/7/1980، 1:35:33 ص",
|
||||
"bn": "২৫/৭/১৯৮০, ১:৩৫:৩৩ AM",
|
||||
"ru": "25.07.1980, 01:35:33",
|
||||
"pt": "25/07/1980, 01:35:33",
|
||||
"ur": "25/7/1980، 1:35:33 AM",
|
||||
"ur": "25/7/1980، 1:35:33 ق.د.",
|
||||
"id": "25/7/1980, 01.35.33",
|
||||
"de": "25.7.1980, 01:35:33",
|
||||
"ja": "1980/7/25 1:35:33",
|
||||
@@ -41,7 +41,7 @@
|
||||
"hi": "25/7/1980",
|
||||
"es": "25/7/1980",
|
||||
"fr": "25/07/1980",
|
||||
"ar": "٢٥/٧/١٩٨٠",
|
||||
"ar": "25/7/1980",
|
||||
"bn": "২৫/৭/১৯৮০",
|
||||
"ru": "25.07.1980",
|
||||
"pt": "25/07/1980",
|
||||
@@ -77,7 +77,7 @@
|
||||
"hi": "2,75,760.913",
|
||||
"es": "275.760,913",
|
||||
"fr": "275 760,913",
|
||||
"ar": "٢٧٥٬٧٦٠٫٩١٣",
|
||||
"ar": "275,760.913",
|
||||
"bn": "২,৭৫,৭৬০.৯১৩",
|
||||
"ru": "275 760,913",
|
||||
"pt": "275.760,913",
|
||||
@@ -113,7 +113,7 @@
|
||||
"hi": "5,86,920.617 घंटे पहले",
|
||||
"es": "hace 586.920,617 horas",
|
||||
"fr": "il y a 586 920,617 heures",
|
||||
"ar": "قبل ٥٨٦٬٩٢٠٫٦١٧ ساعة",
|
||||
"ar": "قبل 586,920.617 ساعة",
|
||||
"bn": "৫,৮৬,৯২০.৬১৭ ঘন্টা আগে",
|
||||
"ru": "586 920,617 часа назад",
|
||||
"pt": "há 586.920,617 horas",
|
||||
|
||||
1
test/js/node/test/fixtures/import-require-cycle/a.js
vendored
Normal file
1
test/js/node/test/fixtures/import-require-cycle/a.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
module.exports.b = require('./b.js');
|
||||
1
test/js/node/test/fixtures/import-require-cycle/b.js
vendored
Normal file
1
test/js/node/test/fixtures/import-require-cycle/b.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
module.exports.a = require('./a.js');
|
||||
3
test/js/node/test/fixtures/import-require-cycle/c.js
vendored
Normal file
3
test/js/node/test/fixtures/import-require-cycle/c.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
const obj = require('./b.js');
|
||||
|
||||
console.log('cycle equality', obj.a.b === obj);
|
||||
7
test/js/node/test/fixtures/import-require-cycle/preload.mjs
vendored
Normal file
7
test/js/node/test/fixtures/import-require-cycle/preload.mjs
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from "module";
|
||||
|
||||
mod.registerHooks({
|
||||
load(url, context, nextLoad) {
|
||||
return nextLoad(url, context);
|
||||
},
|
||||
});
|
||||
3
test/js/node/test/fixtures/inspect-worker/index.js
vendored
Normal file
3
test/js/node/test/fixtures/inspect-worker/index.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
const { Worker } = require('worker_threads');
|
||||
|
||||
new Worker(__dirname + '/worker.js', { type: 'module' });
|
||||
4
test/js/node/test/fixtures/inspect-worker/worker.js
vendored
Normal file
4
test/js/node/test/fixtures/inspect-worker/worker.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
console.log("worker thread");
|
||||
process.on('exit', () => {
|
||||
console.log('Worker1: Exiting...');
|
||||
});
|
||||
104
test/js/node/test/fixtures/keys/Makefile
vendored
104
test/js/node/test/fixtures/keys/Makefile
vendored
@@ -40,6 +40,14 @@ all: \
|
||||
ec-cert.pem \
|
||||
ec.pfx \
|
||||
fake-cnnic-root-cert.pem \
|
||||
intermediate-ca-cert.pem \
|
||||
intermediate-ca-key.pem \
|
||||
leaf-from-intermediate-cert.pem \
|
||||
leaf-from-intermediate-key.pem \
|
||||
non-trusted-intermediate-ca-cert.pem \
|
||||
non-trusted-intermediate-ca-key.pem \
|
||||
non-trusted-leaf-from-intermediate-cert.pem \
|
||||
non-trusted-leaf-from-intermediate-key.pem \
|
||||
rsa_private.pem \
|
||||
rsa_private_encrypted.pem \
|
||||
rsa_private_pkcs8.pem \
|
||||
@@ -236,6 +244,102 @@ fake-startcom-root-cert.pem: fake-startcom-root.cnf \
|
||||
echo '01' > fake-startcom-root-serial
|
||||
touch fake-startcom-root-database.txt
|
||||
|
||||
|
||||
intermediate-ca-key.pem:
|
||||
openssl genrsa -out intermediate.key 2048
|
||||
|
||||
intermediate-ca-cert.pem: intermediate-ca-key.pem
|
||||
openssl req -new \
|
||||
-sha256 \
|
||||
-nodes \
|
||||
-key intermediate.key \
|
||||
-subj "/C=US/ST=CA/L=SF/O=NODEJS/CN=NodeJS-Test-Intermediate-CA" \
|
||||
-out test-intermediate-ca.csr
|
||||
|
||||
openssl x509 -req \
|
||||
-extensions v3_ca \
|
||||
-extfile fake-startcom-root.cnf \
|
||||
-in test-intermediate-ca.csr \
|
||||
-CA fake-startcom-root-cert.pem \
|
||||
-CAkey fake-startcom-root-key.pem \
|
||||
-CAcreateserial \
|
||||
-out intermediate-ca.pem \
|
||||
-days 99999 \
|
||||
-sha256
|
||||
rm -f test-intermediate-ca.csr
|
||||
|
||||
leaf-from-intermediate-key.pem:
|
||||
openssl genrsa -out leaf-from-intermediate-key.pem 2048
|
||||
|
||||
leaf-from-intermediate-cert.pem: leaf-from-intermediate-key.pem
|
||||
openssl genrsa -out leaf-from-intermediate-key.pem 2048
|
||||
openssl req -new \
|
||||
-sha256 \
|
||||
-nodes \
|
||||
-key leaf-from-intermediate-key.pem \
|
||||
-addext "subjectAltName = DNS:localhost" \
|
||||
-subj "/C=US/ST=CA/L=SF/O=NODEJS/CN=localhost" \
|
||||
-out leaf-from-intermediate-cert.csr
|
||||
openssl x509 -req \
|
||||
-in leaf-from-intermediate-cert.csr \
|
||||
-CA intermediate-ca.pem \
|
||||
-CAkey intermediate.key \
|
||||
-CAcreateserial \
|
||||
-out leaf-from-intermediate-cert.pem \
|
||||
-days 99999 \
|
||||
-copy_extensions copy \
|
||||
-sha256
|
||||
|
||||
rm -f leaf-from-intermediate-cert.csr
|
||||
|
||||
non-trusted-intermediate-ca-key.pem:
|
||||
openssl genrsa -out non-trusted-intermediate.key 2048
|
||||
|
||||
non-trusted-intermediate-ca-cert.pem: non-trusted-intermediate-ca-key.pem
|
||||
openssl req -new \
|
||||
-sha256 \
|
||||
-nodes \
|
||||
-key non-trusted-intermediate.key \
|
||||
-subj "/C=US/ST=CA/L=SF/O=NODEJS/CN=NodeJS-Non-Trusted-Test-Intermediate-CA" \
|
||||
-out non-trusted-test-intermediate-ca.csr
|
||||
|
||||
openssl x509 -req \
|
||||
-extensions v3_ca \
|
||||
-extfile fake-startcom-root.cnf \
|
||||
-in non-trusted-test-intermediate-ca.csr \
|
||||
-passin "pass:password" \
|
||||
-CA ca1-cert.pem \
|
||||
-CAkey ca1-key.pem \
|
||||
-CAcreateserial \
|
||||
-out non-trusted-intermediate-ca.pem \
|
||||
-days 99999 \
|
||||
-sha256
|
||||
rm -f non-trusted-test-intermediate-ca.csr
|
||||
|
||||
non-trusted-leaf-from-intermediate-key.pem:
|
||||
openssl genrsa -out non-trusted-leaf-from-intermediate-key.pem 2048
|
||||
|
||||
non-trusted-leaf-from-intermediate-cert.pem: non-trusted-leaf-from-intermediate-key.pem
|
||||
openssl genrsa -out non-trusted-leaf-from-intermediate-key.pem 2048
|
||||
openssl req -new \
|
||||
-sha256 \
|
||||
-nodes \
|
||||
-key non-trusted-leaf-from-intermediate-key.pem \
|
||||
-addext "subjectAltName = DNS:localhost" \
|
||||
-subj "/C=US/ST=CA/L=SF/O=NODEJS/CN=localhost" \
|
||||
-out non-trusted-leaf-from-intermediate-cert.csr
|
||||
openssl x509 -req \
|
||||
-in non-trusted-leaf-from-intermediate-cert.csr \
|
||||
-CA non-trusted-intermediate-ca.pem \
|
||||
-CAkey non-trusted-intermediate.key \
|
||||
-CAcreateserial \
|
||||
-out non-trusted-leaf-from-intermediate-cert.pem \
|
||||
-days 99999 \
|
||||
-copy_extensions copy \
|
||||
-sha256
|
||||
|
||||
rm -f non-trusted-leaf-from-intermediate-cert.csr
|
||||
|
||||
#
|
||||
# agent1 is signed by ca1.
|
||||
#
|
||||
|
||||
2
test/js/node/test/fixtures/keys/ca1-cert.srl
vendored
2
test/js/node/test/fixtures/keys/ca1-cert.srl
vendored
@@ -1 +1 @@
|
||||
147D36C1C2F74206DE9FAB5F2226D78ADB00A426
|
||||
147D36C1C2F74206DE9FAB5F2226D78ADB00A428
|
||||
|
||||
BIN
test/js/node/test/fixtures/keys/fake-startcom-root-cert.cer
vendored
Normal file
BIN
test/js/node/test/fixtures/keys/fake-startcom-root-cert.cer
vendored
Normal file
Binary file not shown.
25
test/js/node/test/fixtures/keys/intermediate-ca.pem
vendored
Normal file
25
test/js/node/test/fixtures/keys/intermediate-ca.pem
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEOTCCAyGgAwIBAgIULe6EHUBNm9nZz+fYRZx1P8uqmGwwDQYJKoZIhvcNAQEL
|
||||
BQAwfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoMDVN0YXJ0Q29tIEx0ZC4xKzApBgNV
|
||||
BAsMIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMM
|
||||
IFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MCAXDTI1MDIyMTIyMTYx
|
||||
N1oYDzIyOTgxMjA2MjIxNjE3WjBeMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0Ex
|
||||
CzAJBgNVBAcMAlNGMQ8wDQYDVQQKDAZOT0RFSlMxJDAiBgNVBAMMG05vZGVKUy1U
|
||||
ZXN0LUludGVybWVkaWF0ZS1DQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||
ggEBAKfGhM1vXISvBuEJv4yapacu1CFnH9hQ6Z7e8p1kjMjaSg+NSvofPeb6byel
|
||||
Jk7GI9wRN4ZQISpKNxvQAjyc9RqkAwUDPY9KEp38PSQFU4osqvJDP4zf2dn0Hl55
|
||||
4DW22JzaWdwGgvq0admVwUBMnly4fVGBuxvy1m/j5wM6DHoSbC0Kgs13P2TpaqRT
|
||||
jz7jzN5YaT16M3kTDKVcTQGzZOCro0JF+V4xIDiOV9v9Cy4F6FRuksHx/e7gWXSF
|
||||
qaHqzblr9k/c8/3md5aBwHeUGJHe1+U/hhfE4D8IgG3ZdwNFI9KH5Zc8KfGTgr6s
|
||||
fgbpnNg7p9d5VJNOOM4So8ybig8CAwEAAaOBzTCByjAMBgNVHRMEBTADAQH/MB0G
|
||||
A1UdDgQWBBR6olPWoViHQBOxuAyYPRUSGaoEYDCBmgYDVR0jBIGSMIGPoYGBpH8w
|
||||
fTELMAkGA1UEBhMCSUwxFjAUBgNVBAoMDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsM
|
||||
IlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMMIFN0
|
||||
YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggkAgg9vTE81yAowDQYJKoZI
|
||||
hvcNAQELBQADggEBAC7nBG4JxrSFT/mJlCJxeHfFQj3xqduYePWK5H/h+buuX6OW
|
||||
pjMA8se2SjQUfVn81GAtNxb1kX8o9HjmaTvkx8bq6iuF9oyJh96N22Hl3kfWXX6H
|
||||
jy74Ur/pq73gpC90Xx8/DALpAYr9vKOKJM7DHWW9iuksRRvM1yh8kZagO0ewI8xU
|
||||
I9DLzl6+Zu6ZChosMlIn7yGdXB3Wi5mO+1fN+ryFlOVfTurzeinDbLm4xHb6pLnP
|
||||
x3VL1kKzQurUcvQvaIT3x3vd/FP+O7B+pWNyUE7HXZ9J4E2maUC+q81cpgAiCFoN
|
||||
ks7RFmz1z2myhB8opEpgRFYu6lxjCtHsr+meLjo=
|
||||
-----END CERTIFICATE-----
|
||||
28
test/js/node/test/fixtures/keys/intermediate.key
vendored
Normal file
28
test/js/node/test/fixtures/keys/intermediate.key
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCnxoTNb1yErwbh
|
||||
Cb+MmqWnLtQhZx/YUOme3vKdZIzI2koPjUr6Hz3m+m8npSZOxiPcETeGUCEqSjcb
|
||||
0AI8nPUapAMFAz2PShKd/D0kBVOKLKryQz+M39nZ9B5eeeA1ttic2lncBoL6tGnZ
|
||||
lcFATJ5cuH1Rgbsb8tZv4+cDOgx6EmwtCoLNdz9k6WqkU48+48zeWGk9ejN5Ewyl
|
||||
XE0Bs2Tgq6NCRfleMSA4jlfb/QsuBehUbpLB8f3u4Fl0hamh6s25a/ZP3PP95neW
|
||||
gcB3lBiR3tflP4YXxOA/CIBt2XcDRSPSh+WXPCnxk4K+rH4G6ZzYO6fXeVSTTjjO
|
||||
EqPMm4oPAgMBAAECggEAAMP0GSfX6TcPNfmgaRjPhqq9BwX8bDU6S6JCwxsRVV1B
|
||||
lz6Sx/9affJIjYrAWP2objmZ4j/9Vr8N70+MoxAoQh3bcatpHX0+BoB/Gun3TpsT
|
||||
kJVj9dWTnd3yQYYW0sfpxxVr8YgKEvC9xuNbBVsUIeIpmDSaUO9TsSD+DdK2+duX
|
||||
wKPjCe097669ZG994GP9ilG6FdfIlVNWHWPExmFgbx0ydXr97nDuurt72HnqCVRR
|
||||
95g9SNAbkadUVj7iTSVovuaIQpQY4BMFICsGGRo10mMFGTzpAUwsl6OVZTUZXaST
|
||||
dg/Wl8ZD98CucVFmk546pJrfPDvk+qLqt0hlkXA5mQKBgQDrqPCNzz/VhsIlTmuO
|
||||
Dgmf4q9/hglR8JKjMQTuEXLGAhA09ZZrhKsGYSkciXEzmlL5mGZX+83Ss+ns8nI7
|
||||
21e6ZYm5hokltVbZ2Of2xGyeZ0SZ22QwIm4Eg2MmEpmyXAMTKAfvuvfQW1dC0UXG
|
||||
JEiRBYq3Chxv82ExmlkU5gZNIwKBgQC2QaCnPVV/VkwF0912lto8IRpwgZ0Jrj4b
|
||||
xqKTCc7oFNzd4Ua/I0W9qPqR1ORyVpq0li7cjHDmFWCZZMbCgy7+g5eclaZ3qWZZ
|
||||
Faj4rpv7y7ODKz2W2cmug9fWrrtsr96ohW1rfVn5racbHKAsT4f+RB+Gi1NK6aWp
|
||||
tOmh4MRMJQKBgQDLSk5RluJTOc/LTO39emCVG4EXejIaDHUC8Ct3j3e6FleSx/S9
|
||||
xZGfjDth0bLkuBEyHWTUK3UveWKns7IVrq7sLeF0OPmgnOFSRgo81s94ik8khpzT
|
||||
5S+RFyJ12n/Z3AQPB25pQJm8lL8e9dbCCdTLvcMfCUrkzEgg+Sw1mgT/jwKBgQCM
|
||||
7xbB/CW/AAZtgzV/3IsJcDe3xCKhN8IDTIiu1yjOQkPAt9EzQJ1PWfnZBx1YZSvg
|
||||
dTnrhhZPdTxroYgpJbQTT8LPbNF7Ot1QCfXNx4gLH6vCxI8ttV/FuWIQOrHoC99L
|
||||
xVGlixsmfWf5CRu66A0rS5ZtPhO8nAxkvOblLJ/emQKBgQCQkhBrZTDwgD4W6yxe
|
||||
juo/H/y6PMD4vp68zk/GmuV7mzHpYg18+gGAI57dQoxWjjMxxhkB8WKpnEkXXiva
|
||||
5YHq4ARUhXnPuNckvnOBj9jjy8HMeDKTPfZ6frv+B9i1y0N3ArerhPx44zCFpllH
|
||||
BlVhzBa52wYAtbjg291+/G1ndw==
|
||||
-----END PRIVATE KEY-----
|
||||
22
test/js/node/test/fixtures/keys/leaf-from-intermediate-cert.pem
vendored
Normal file
22
test/js/node/test/fixtures/keys/leaf-from-intermediate-cert.pem
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDkjCCAnqgAwIBAgIUPgpDrWcCOmjk4xOAkLpxa7UTx/4wDQYJKoZIhvcNAQEL
|
||||
BQAwXjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEPMA0G
|
||||
A1UECgwGTk9ERUpTMSQwIgYDVQQDDBtOb2RlSlMtVGVzdC1JbnRlcm1lZGlhdGUt
|
||||
Q0EwIBcNMjUwMjIxMjIxNjUyWhgPMjI5ODEyMDYyMjE2NTJaMEwxCzAJBgNVBAYT
|
||||
AlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCU0YxDzANBgNVBAoMBk5PREVKUzES
|
||||
MBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
||||
AQEAnnWYLNbVnE2veKzF28rarJh0En4Rd5+1ZwHp7+iP2gjEVmjBaSGK/F80MV9l
|
||||
S/wtZskUoZH0aKwiq9ly6Jp9IETte9Tk1Td6jTUeG8Vs9N6zoZcXM2Q359xbA+0X
|
||||
YzvHwD6TM5LQ6l3RKhJT2BRNz0oOCVQGHGepbcLbX99E3yXW0yXvZKAIcZY0NEk2
|
||||
AZ1eDz7QAhdPQ6W8QuYjlqOa+wmxqzVb3RReMg3zrL9jfd4AgCT9IN7HMB0FkQys
|
||||
y78EUHa12wlJkzHzz9N8+Qjt0537LjDpBuUBgnPn7Ukvz1kzD6q8a/dbB2RIbfVK
|
||||
7o0I/P9hJuXPhRpZQeDRQmDt+QIDAQABo1gwVjAUBgNVHREEDTALgglsb2NhbGhv
|
||||
c3QwHQYDVR0OBBYEFJHfQLpEP+M7+PYoxk/bY1vuDv/4MB8GA1UdIwQYMBaAFHqi
|
||||
U9ahWIdAE7G4DJg9FRIZqgRgMA0GCSqGSIb3DQEBCwUAA4IBAQCXckUku5JZiXSb
|
||||
qvlFH1JS7/SVeugquYZyI+boIzS2ykrLBkCVCbg6dD75Nu5VlcEGq4UNlY7vdfhk
|
||||
wG/jHNe6Hm36Lm2vbwH3z21IIGZlkw4cbNzdeT5WQuQNoembtbaZSsE7s1Hs052l
|
||||
kVJnq0ZJ7YgO54/0C9mE7dqhWHHWm9wPUC4emucqCKYcu1M9/onZgjjmAh39G473
|
||||
1qlWuTacywQHHCg8B0w+iZlV1rJ93dTyxJvg+fgmQj2FqBNqOXu6ojhOWHt62D3Y
|
||||
55zXFoUqToY6kgF+e9Rkn2vbZsSQO+cXSKVyRjnfIOCC4zO37yl31q02ouVv1Uct
|
||||
ubqxlcPA
|
||||
-----END CERTIFICATE-----
|
||||
28
test/js/node/test/fixtures/keys/leaf-from-intermediate-key.pem
vendored
Normal file
28
test/js/node/test/fixtures/keys/leaf-from-intermediate-key.pem
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCedZgs1tWcTa94
|
||||
rMXbytqsmHQSfhF3n7VnAenv6I/aCMRWaMFpIYr8XzQxX2VL/C1myRShkfRorCKr
|
||||
2XLomn0gRO171OTVN3qNNR4bxWz03rOhlxczZDfn3FsD7RdjO8fAPpMzktDqXdEq
|
||||
ElPYFE3PSg4JVAYcZ6ltwttf30TfJdbTJe9koAhxljQ0STYBnV4PPtACF09DpbxC
|
||||
5iOWo5r7CbGrNVvdFF4yDfOsv2N93gCAJP0g3scwHQWRDKzLvwRQdrXbCUmTMfPP
|
||||
03z5CO3TnfsuMOkG5QGCc+ftSS/PWTMPqrxr91sHZEht9UrujQj8/2Em5c+FGllB
|
||||
4NFCYO35AgMBAAECggEACIfP4A0WPZaEjWhus+cLJ+rCp+qzxcb6KPAWUBkq4lvh
|
||||
tv2neOGKhgzZhlVqgoFST+PgGZUeDWMD8FCx4hIMDahMSSP0SEK29SJgizHxDEsv
|
||||
bDHyOKzq4g9vsmnJfij+F0w/GDINj2pqy9sl+p5YNII5+HhWpmGRwlQQw4vlXSZq
|
||||
hcubO1DyL/3FL0gVMHUZex86QJ9cYXkf++omaFNPaOsiKbZu7Whtg4rxJOBw38FD
|
||||
/fX4U6SQwSxI6ffxFbmGvSBAQW4333Qvbs0xZnusKrcaKNQ3kCoQ7+cgyDogwSAE
|
||||
TQN1mqPynGlMmTW4KyyR1/W0jpQEW+pll2DNCqHb8QKBgQDONX8QXu2mp/5qjXJK
|
||||
Sa1orgqneadbWiUfq+6vWEIwAWbcUYGqgzUNa9OeK8jV5hEsCJOrfPvhKYdyVrfr
|
||||
cu8mLtQFQLZzTlaEyX4a8Euk2xlHIYG7/giEnBugdHcHu9MV7TLRFzunc5Y4cA4W
|
||||
3crScf/gl+LDO3TZ5E3ZHu4u8QKBgQDEuIagHlhcuyEfHUPRJk6ZXexlkQ383f3/
|
||||
g1aqWQxxPnlZuo/wFyxVl7YP5VNELOsiCQHm2efk+8dx0Fc8jzuafp8iSnSOJnNM
|
||||
7C9K5JcbkxsJxArx1Z2ZMPfFM40Nw5kFYNCPhsuzZ/w+/eOe2EyFEZMkWdH5lMpw
|
||||
Y6GvxiS/iQKBgB6WLs/F1OhoeMNjUbWVMiSZ1Di9Qca6G1GUViYqKD8ophI+AMbD
|
||||
CYaBHPWUNwkLRDbM2uKP+miOmWmrVUKWXMTEI2zYCXgXAZxWqt7iD8ZXPWugm7a/
|
||||
2pGY+jwVqmY6RPg2o9gB4zZWXcznSh+4LFKE2Fh/DwK4ef+r7qQrA1dxAoGAdIEI
|
||||
EfoGwNx+cCvnxw0VzZSndTtj+lcKn3GMORTF3qduPOrVZg6DTimsRFu/ZYfotV56
|
||||
RtrUkHNgmhIWKCJ33TaSTj+kKa+x52OVWphouYb0o2L8TF8Dl/89LggqyHUHwfyl
|
||||
Z+sf5p9172RzktZs8v4Gk6eySEqLXeZTkoMZrmkCgYEAg8QV0rE1GprYoL02DiMT
|
||||
/KlRyOUGawz559Rr5Ufdrm/SA37Yhyp/eADq1jrkpoL0uBd4YsqOFAtkCofxnI9i
|
||||
BonK/T1JV1+wDnXYCU9Tis/d043/vCR4RVXQGfucmrPxjuObXCu5c8Q0DzpzLG3u
|
||||
HmotaQ9Z3Wdd9PaX4le87R8=
|
||||
-----END PRIVATE KEY-----
|
||||
25
test/js/node/test/fixtures/keys/non-trusted-intermediate-ca.pem
vendored
Normal file
25
test/js/node/test/fixtures/keys/non-trusted-intermediate-ca.pem
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIESTCCAzGgAwIBAgIUFH02wcL3Qgben6tfIibXitsApCgwDQYJKoZIhvcNAQEL
|
||||
BQAwejELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEPMA0G
|
||||
A1UECgwGSm95ZW50MRAwDgYDVQQLDAdOb2RlLmpzMQwwCgYDVQQDDANjYTExIDAe
|
||||
BgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMCAXDTI1MDIyNzA4MTczM1oY
|
||||
DzIyOTgxMjEyMDgxNzMzWjBqMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExCzAJ
|
||||
BgNVBAcMAlNGMQ8wDQYDVQQKDAZOT0RFSlMxMDAuBgNVBAMMJ05vZGVKUy1Ob24t
|
||||
VHJ1c3RlZC1UZXN0LUludGVybWVkaWF0ZS1DQTCCASIwDQYJKoZIhvcNAQEBBQAD
|
||||
ggEPADCCAQoCggEBAMH8MfKXtkBMn58gJVCwe2w/XOl9rNK0M348KFcYTStC2ta0
|
||||
pwaB4ax7NeXs/xCDqtbuweZ0SLcS/nAOP9KQHN+fNSiXQ0gnHh23rZRri9VCvLWE
|
||||
5mGle2yjBApz7JERLW7gZX1Xtw/X5Qt9CtIYVKf7rGTgkq0kSvJQf6DhJ8e68HwG
|
||||
EQCp8ZmPQTFhIgzB35wYTgeKTU3uvQAYsAIw9fC5Vta8U9uU0VyN7mFxsoMXm4/u
|
||||
prk9L4AYSOFIV+njTd8xL+puSfZSKQA8yLcZ1LeRkAZo3RjUcEUPRDdLxB1UAZvh
|
||||
LYcJggWmx7799MZOsF1u9d2wR9HJ1Nzg3+IJiW0CAwEAAaOB1DCB0TAMBgNVHRME
|
||||
BTADAQH/MB0GA1UdDgQWBBR9aYwxOpYpUe2jMoN0MAqeG4A8GzCBoQYDVR0jBIGZ
|
||||
MIGWoX6kfDB6MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExCzAJBgNVBAcMAlNG
|
||||
MQ8wDQYDVQQKDAZKb3llbnQxEDAOBgNVBAsMB05vZGUuanMxDDAKBgNVBAMMA2Nh
|
||||
MTEgMB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmeCFEqxbI39an0NLfyr
|
||||
35xLDpLGrQIpMA0GCSqGSIb3DQEBCwUAA4IBAQDADBpifaPV4jRtSefetMnhxxwj
|
||||
tPlLXRWqEJpJy+nHYJJdwQHxFHVoZSPinGpYpECCV73Gkh/rMKa+cvR4dBBIK6DP
|
||||
Bl1IQNP4Jr90z9c0T/zzUxVXE4iwcv2/Vg5OvVHU3z5gW4Mk3R4Rb+69UWHB1z8D
|
||||
41sm9w4u30vKGJrkdQ5ZLtfRLonncwLQexTlj1k/8VRytP4S9uIAmXwQpEPZxsto
|
||||
pRcMO2aWW0PvDzk7WPU+ZKnf1RC+pQx+PPH1/ZfyXHy7njJKZ04plIdTA/ah9pPw
|
||||
Bl++VCO7LSwDz+FlmuHnxc2LMR2EIRiNV03ooSc5XGGhIOKLl6+nMPQ0dlta
|
||||
-----END CERTIFICATE-----
|
||||
1
test/js/node/test/fixtures/keys/non-trusted-intermediate-ca.srl
vendored
Normal file
1
test/js/node/test/fixtures/keys/non-trusted-intermediate-ca.srl
vendored
Normal file
@@ -0,0 +1 @@
|
||||
78A88418149F0BFCEC38DC14D085BA43D36090F0
|
||||
28
test/js/node/test/fixtures/keys/non-trusted-intermediate.key
vendored
Normal file
28
test/js/node/test/fixtures/keys/non-trusted-intermediate.key
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDB/DHyl7ZATJ+f
|
||||
ICVQsHtsP1zpfazStDN+PChXGE0rQtrWtKcGgeGsezXl7P8Qg6rW7sHmdEi3Ev5w
|
||||
Dj/SkBzfnzUol0NIJx4dt62Ua4vVQry1hOZhpXtsowQKc+yRES1u4GV9V7cP1+UL
|
||||
fQrSGFSn+6xk4JKtJEryUH+g4SfHuvB8BhEAqfGZj0ExYSIMwd+cGE4Hik1N7r0A
|
||||
GLACMPXwuVbWvFPblNFcje5hcbKDF5uP7qa5PS+AGEjhSFfp403fMS/qbkn2UikA
|
||||
PMi3GdS3kZAGaN0Y1HBFD0Q3S8QdVAGb4S2HCYIFpse+/fTGTrBdbvXdsEfRydTc
|
||||
4N/iCYltAgMBAAECggEALR4V1OVd1Xss1gMRQsDlV/Itzz20dEZGwrnFrSohCqqQ
|
||||
QQc/4MbVIPuAN/PFCEeDdN2PuiS6I+B2TsQ1qmjr2kQKhmAWHUJB4ioOJHrWCVou
|
||||
D27zcWsed5A7uJ2pPD1ZSpRE7p/32ya85kzlNyPDDtX9jPHhk4UhLFY2NQohKTYF
|
||||
CM2+YL6V8x2Kq9OOjGxPrX3t5H0cgVW7f+mMwhCSevJQAoLWO7cNbbN/fWHEK0jn
|
||||
ovHkpmK7dWejWN8MYMQOhmIuUV54aLIKoNLEAhnFj70/36I/GMUSQf+rCjjQtLXb
|
||||
lmNiKF33+3L6ti9HdcznhJujtMjiAXloRkESKcYPoQKBgQDoKO9wj7ZUvapt7ZnD
|
||||
9ALwkVpxPPCA7rDdu9DmEmXt8Zf3pVCaw1K2qPWM1iAoL6/AZDPs2E1nJGsmDNYv
|
||||
wMPt09TsZTURKvQYfdFs0uZPcTCJAXg36+dgxXq1OUNirB7Z+F1QPE3EHZT5AaPc
|
||||
vxRfA4RyJ+DcfMFzUcjePd2MTQKBgQDV57bQKf5wHkWCLVl/ZJB+hy1futN9In6u
|
||||
n0UeqSK+8m7Go8rPvNFlTeY6/lz/bm58u0mJFKd7vNQs+l7Y1DitC7BLItNwtcuW
|
||||
OEnhltbhry6i/9lieF607kwq9sNTVpp+iROF1BRmeDh3d3ByBa9Y9HSjfMPUgy6r
|
||||
Tb6lgMgBoQKBgDmL9BYtuV92CCnpjITzFkt1bDrHhUIgaHz+EkEFbHi3uxiqxLko
|
||||
E3etl/hKF3x+nY0OCYT69OzNLTYoVmtN2AM6z/us9qODxy/O+DuGZ4pnn0VGtPr/
|
||||
ocHuEYWcZSSvT5JuKws5d3lWb9ftXSXZw33tzEXTtrxQvE8OhcD5CtK9AoGBAMk0
|
||||
kqOwPKOd9egDXGIWaEx8PtQDWpgkcGE1c8Dpe8N9K3Ix874AcD8ITX5EcZnbeJZf
|
||||
XUZSZVBhSHuebsUqqr0rd4LVmWo1tvDwtZ47UpkrPYUZgJO9gehTFtZ7EzQ7DEvm
|
||||
CLUjzqSshQDrGpxGeLAGEgkOfO5TDv0XvjLTtk7BAoGBAM9ObVMPg+RhnVUY5oNT
|
||||
2A+Qq/3sitcbaJ2JKCjJEhttF0fF+0VYXf8c1YNE1AOfA/YnEazfCvPEOVmXGAeq
|
||||
iKf0FohQ1+dh9ShOK5tcR3jmMzrCwBJFlqjX942m/8FFg6B1za8nrrkSnWNCbJi5
|
||||
rmSv7B4llshgzTeEKqgM6GX1
|
||||
-----END PRIVATE KEY-----
|
||||
22
test/js/node/test/fixtures/keys/non-trusted-leaf-from-intermediate-cert.pem
vendored
Normal file
22
test/js/node/test/fixtures/keys/non-trusted-leaf-from-intermediate-cert.pem
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDnjCCAoagAwIBAgIUeKiEGBSfC/zsONwU0IW6Q9NgkPAwDQYJKoZIhvcNAQEL
|
||||
BQAwajELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEPMA0G
|
||||
A1UECgwGTk9ERUpTMTAwLgYDVQQDDCdOb2RlSlMtTm9uLVRydXN0ZWQtVGVzdC1J
|
||||
bnRlcm1lZGlhdGUtQ0EwIBcNMjUwMjI3MDgxNzUwWhgPMjI5ODEyMTIwODE3NTBa
|
||||
MEwxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCU0YxDzANBgNV
|
||||
BAoMBk5PREVKUzESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAQ8AMIIBCgKCAQEAshskMqfwX4J5IA0poqWfm2jF23rBDBFw5FTdZP/dbYrS
|
||||
UCBOYqg5Jxgq4BxCnGq8ArGAQajOAAiwISK3h/WQ+XqaeEh5PmL4/dW3UZCvcR8I
|
||||
NN7LCXPnQcvJu1G4VbBDm8WbkkmGJvy6553kA+8SXyeoEs3nXTqQWVINo/8alt6m
|
||||
bRe2KA8FWgPrEUJgb+Vvl/z7a1V7PQSvWSuL0pBcj04tJQ5WrXAl72GI6eArJrM4
|
||||
Yl7Z08ZeGsSKAN+9aFnFyBfRmUeHgDTI9OQjw6FcwArCXZRmaX3CyGZJYgL6DAyf
|
||||
ukyyRXUT8Ii37W306Vp6d1prqZ4A2fih2sfbcpeLrwIDAQABo1gwVjAUBgNVHREE
|
||||
DTALgglsb2NhbGhvc3QwHQYDVR0OBBYEFAa6wwZ2tpzJdeCtsG0sUw7MpG39MB8G
|
||||
A1UdIwQYMBaAFH1pjDE6lilR7aMyg3QwCp4bgDwbMA0GCSqGSIb3DQEBCwUAA4IB
|
||||
AQBWyVgyhKnRomPa23axktq8/8RC7h6mSJEOW+uTlwam/TqnWQFJspwosStOQFu4
|
||||
pg7Ww9MtKJSr9/vxxsyvNaKH5ZNTtgqqlzfYzVLbfwOirNSx4Mp1izQ0G5mfx3Yj
|
||||
+WEXarNaY8R0benqWMeArTFb9CdDcxvMcSdtkGrMXMuKXFN67zou8NQVkvGzc/tb
|
||||
imS/Ur9goJYUPlg2xor+P09tiIT+pEG+bpjYZ0U/1D5lIjQYCmZiy9ECL3WBc4df
|
||||
NKsJnlA2GZ4TXh2jFzQw3yZPSLCqNdy+9RdOB058wRYooaFYrOkRiUe9ZV5w1MW5
|
||||
mVuwUmrRSI79K26jdTav44PZ
|
||||
-----END CERTIFICATE-----
|
||||
28
test/js/node/test/fixtures/keys/non-trusted-leaf-from-intermediate-key.pem
vendored
Normal file
28
test/js/node/test/fixtures/keys/non-trusted-leaf-from-intermediate-key.pem
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCyGyQyp/Bfgnkg
|
||||
DSmipZ+baMXbesEMEXDkVN1k/91titJQIE5iqDknGCrgHEKcarwCsYBBqM4ACLAh
|
||||
IreH9ZD5epp4SHk+Yvj91bdRkK9xHwg03ssJc+dBy8m7UbhVsEObxZuSSYYm/Lrn
|
||||
neQD7xJfJ6gSzeddOpBZUg2j/xqW3qZtF7YoDwVaA+sRQmBv5W+X/PtrVXs9BK9Z
|
||||
K4vSkFyPTi0lDlatcCXvYYjp4CsmszhiXtnTxl4axIoA371oWcXIF9GZR4eANMj0
|
||||
5CPDoVzACsJdlGZpfcLIZkliAvoMDJ+6TLJFdRPwiLftbfTpWnp3WmupngDZ+KHa
|
||||
x9tyl4uvAgMBAAECggEAMKa1VpkFUjGjwJuX2fQAC0Wtdmyruw4wlk6QQ3yZEckv
|
||||
9e89OjnVktZJL/rIP03wmZO/AzCHRP8ajZKcK6lqtptFAsJZTC9g8IWmk8NACVh+
|
||||
t2J8d9KPQyvVqTODdPS3Ix/xhR5MZO34aDh7BpARpqiAgtJ39sF+mMePLlMLAlbO
|
||||
U7/u1cttplvgiBRWTIiisyl9O+G2OCre1CXacEqkZ8jYWTP7sLofGCXCpgjBVKgl
|
||||
8q4ktgPlREMVD/QW78CIdrKuOdmzV42zSeFfPoZjUC3nLCdIALquPJyBSSZvDEeA
|
||||
T+eWSaIm5JcSTBjxG0f9riLQdup2Gz5NjPALHUTxMQKBgQDq2jyr1g0BUMFAJTQR
|
||||
6LraWcCOz+7l/oH6WuFGm7gUBf5yrdykeWvd8cSfwZRm2tzoxVu44+M05X3ORMHR
|
||||
wPyckITG9kWndzcOXpEOSiaObfqmEuz5gkpyzaUs5c9AE4pMhzIKNnruavPbD9Hy
|
||||
4AiLIT3ssjAL14/cjFuZTXl/dQKBgQDCJMxq0jf2rtVfrPrpEh8CyNu4sUQs8O5t
|
||||
9u4cvjGmHCfFpcdvCjS7gLuAZeFww3qjiv4pM0K5b7rjY3CelB+jlF2TG+4Jxf6h
|
||||
y/9iPSN98i2FT4Jxc02GYxsPa3mYAxykmqqvIkak+2omaJake2tCyjE49QrfGx0r
|
||||
TivZnwn+EwKBgQDe0a4MjqqKG/cuB94uO7PEZLE4DfooRl9Fi6H+3tE4VjOC1Ifp
|
||||
mLYJvk+CDyTgrTg4tL8AXV59GltRL5UAkGxbkxYWuyN87rPSs1BG0X1hVuEfXgdt
|
||||
9vrxj0Dupx8KOT/WudJ1NBlQSTMSHSFhoMMaVbCt+KVzJtL8OkLR4Vqr3QKBgAy8
|
||||
MziSn58r6s1C4JanXKdnG5qq7ijwiQNnnkj+ZO1bjXRWopVzGvBtyl7qz/YArKvL
|
||||
s05qkWbuoFjILhwI5WZqlhTPUTcM6N4eLpt4HTrmxvumsozUnnJBUAYb67cABUH6
|
||||
71VbrzylTVpFpBQYEHoqHz54PIVUFv6/OvskhphHAoGAJukr8k+rvxXIXOjvgE2O
|
||||
9sf2h7YZoW2AKK3tHPlG7XCuIFZJKKhkh+cVRorg/Ws5LLF/5egf234sfeZzdrvP
|
||||
O2TA/0Hf4mhaJhn53E/PLSLEDVTzORs1L+PfLrFptrP2Eq7iAnbTwaWnjMfAcsy2
|
||||
4ukRw65bBMLqv62KLTEZ5uk=
|
||||
-----END PRIVATE KEY-----
|
||||
1
test/js/node/test/fixtures/module-mocking/basic.json
vendored
Normal file
1
test/js/node/test/fixtures/module-mocking/basic.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"foo":"bar"}
|
||||
1
test/js/node/test/fixtures/module-require/relative/subdir/relative-subdir.js
vendored
Normal file
1
test/js/node/test/fixtures/module-require/relative/subdir/relative-subdir.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
exports.value = 'relative subdir';
|
||||
0
test/js/node/test/fixtures/packages/unrecognised-export-keys/index.js
vendored
Normal file
0
test/js/node/test/fixtures/packages/unrecognised-export-keys/index.js
vendored
Normal file
10
test/js/node/test/fixtures/packages/unrecognised-export-keys/package.json
vendored
Normal file
10
test/js/node/test/fixtures/packages/unrecognised-export-keys/package.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "pkg-with-unrecognised-export-keys",
|
||||
"exports": {
|
||||
".": {
|
||||
"default": "./index.js",
|
||||
"FtLcAG": "./whatever.ext",
|
||||
"types": "./index.d.ts"
|
||||
}
|
||||
}
|
||||
}
|
||||
15
test/js/node/test/fixtures/permission/fs-read-loader.js
vendored
Normal file
15
test/js/node/test/fixtures/permission/fs-read-loader.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
const fs = require('node:fs')
|
||||
const path = require('node:path')
|
||||
const assert = require('node:assert');
|
||||
|
||||
{
|
||||
fs.readFileSync(__filename);
|
||||
console.log('Read its own contents') // Should not throw
|
||||
}
|
||||
{
|
||||
const simpleLoaderPath = path.join(__dirname, 'simple-loader.js');
|
||||
fs.readFile(simpleLoaderPath, (err) => {
|
||||
assert.ok(err.code, 'ERR_ACCESS_DENIED');
|
||||
assert.ok(err.permission, 'FileSystemRead');
|
||||
}); // Should throw ERR_ACCESS_DENIED
|
||||
}
|
||||
10
test/js/node/test/fixtures/permission/fs-read.js
vendored
10
test/js/node/test/fixtures/permission/fs-read.js
vendored
@@ -14,6 +14,16 @@ const blockedFolder = process.env.BLOCKEDFOLDER;
|
||||
const allowedFolder = process.env.ALLOWEDFOLDER;
|
||||
const regularFile = __filename;
|
||||
|
||||
// Guarantee the error message suggest the --allow-fs-read
|
||||
{
|
||||
fs.readFile(blockedFile, common.expectsError({
|
||||
message: 'Access to this API has been restricted. Use --allow-fs-read to manage permissions.',
|
||||
code: 'ERR_ACCESS_DENIED',
|
||||
permission: 'FileSystemRead',
|
||||
resource: path.toNamespacedPath(blockedFile),
|
||||
}));
|
||||
}
|
||||
|
||||
// fs.readFile
|
||||
{
|
||||
fs.readFile(blockedFile, common.expectsError({
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
const common = require('../../common');
|
||||
common.skipIfWorker();
|
||||
const { isMainThread } = require('worker_threads');
|
||||
|
||||
if (!isMainThread) {
|
||||
common.skip('This test only works on a main thread');
|
||||
}
|
||||
|
||||
const assert = require('assert');
|
||||
const fs = require('fs');
|
||||
@@ -21,6 +25,15 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
|
||||
assert.ok(!process.permission.has('fs.write', blockedFile));
|
||||
}
|
||||
|
||||
// Guarantee the error message suggest the --allow-fs-write
|
||||
{
|
||||
fs.writeFile(blockedFile, 'example', common.expectsError({
|
||||
message: 'Access to this API has been restricted. Use --allow-fs-write to manage permissions.',
|
||||
code: 'ERR_ACCESS_DENIED',
|
||||
permission: 'FileSystemWrite',
|
||||
}));
|
||||
}
|
||||
|
||||
// fs.writeFile
|
||||
{
|
||||
assert.throws(() => {
|
||||
@@ -553,4 +566,4 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
|
||||
}, {
|
||||
code: 'ERR_ACCESS_DENIED',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
1
test/js/node/test/fixtures/permission/hello-world.js
vendored
Normal file
1
test/js/node/test/fixtures/permission/hello-world.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
console.log('Hello world')
|
||||
@@ -1,5 +1,9 @@
|
||||
const common = require('../../common');
|
||||
common.skipIfWorker();
|
||||
const { isMainThread } = require('worker_threads');
|
||||
|
||||
if (!isMainThread) {
|
||||
common.skip('This test only works on a main thread');
|
||||
}
|
||||
|
||||
const assert = require('assert');
|
||||
|
||||
@@ -11,14 +15,6 @@ const assert = require('assert');
|
||||
}));
|
||||
}
|
||||
|
||||
{
|
||||
assert.throws(() => {
|
||||
process.binding('async_wrap');
|
||||
}, common.expectsError({
|
||||
code: 'ERR_ACCESS_DENIED',
|
||||
}));
|
||||
}
|
||||
|
||||
{
|
||||
assert.throws(() => {
|
||||
process.binding('fs');
|
||||
|
||||
3
test/js/node/test/fixtures/permission/simple-loader.js
vendored
Normal file
3
test/js/node/test/fixtures/permission/simple-loader.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// Simulate a regular loading without fs operations
|
||||
// but with access to Node core modules
|
||||
require('node:fs')
|
||||
@@ -1,136 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const assert = require('assert');
|
||||
|
||||
function getTestCases(isWorker = false) {
|
||||
const cases = [];
|
||||
function exitsOnExitCodeSet() {
|
||||
process.exitCode = 42;
|
||||
process.on('exit', (code) => {
|
||||
assert.strictEqual(process.exitCode, 42);
|
||||
assert.strictEqual(code, 42);
|
||||
});
|
||||
}
|
||||
cases.push({ func: exitsOnExitCodeSet, result: 42 });
|
||||
|
||||
function changesCodeViaExit() {
|
||||
process.exitCode = 99;
|
||||
process.on('exit', (code) => {
|
||||
assert.strictEqual(process.exitCode, 42);
|
||||
assert.strictEqual(code, 42);
|
||||
});
|
||||
process.exit(42);
|
||||
}
|
||||
cases.push({ func: changesCodeViaExit, result: 42 });
|
||||
|
||||
function changesCodeZeroExit() {
|
||||
process.exitCode = 99;
|
||||
process.on('exit', (code) => {
|
||||
assert.strictEqual(process.exitCode, 0);
|
||||
assert.strictEqual(code, 0);
|
||||
});
|
||||
process.exit(0);
|
||||
}
|
||||
cases.push({ func: changesCodeZeroExit, result: 0 });
|
||||
|
||||
function exitWithOneOnUncaught() {
|
||||
process.exitCode = 99;
|
||||
process.on('exit', (code) => {
|
||||
// cannot use assert because it will be uncaughtException -> 1 exit code
|
||||
// that will render this test useless
|
||||
if (code !== 1 || process.exitCode !== 1) {
|
||||
console.log('wrong code! expected 1 for uncaughtException');
|
||||
process.exit(99);
|
||||
}
|
||||
});
|
||||
throw new Error('ok');
|
||||
}
|
||||
cases.push({
|
||||
func: exitWithOneOnUncaught,
|
||||
result: 1,
|
||||
error: /^Error: ok$/,
|
||||
});
|
||||
|
||||
function changeCodeInsideExit() {
|
||||
process.exitCode = 95;
|
||||
process.on('exit', (code) => {
|
||||
assert.strictEqual(process.exitCode, 95);
|
||||
assert.strictEqual(code, 95);
|
||||
process.exitCode = 99;
|
||||
});
|
||||
}
|
||||
cases.push({ func: changeCodeInsideExit, result: 99 });
|
||||
|
||||
function zeroExitWithUncaughtHandler() {
|
||||
process.on('exit', (code) => {
|
||||
assert.strictEqual(process.exitCode, 0);
|
||||
assert.strictEqual(code, 0);
|
||||
});
|
||||
process.on('uncaughtException', () => { });
|
||||
throw new Error('ok');
|
||||
}
|
||||
cases.push({ func: zeroExitWithUncaughtHandler, result: 0 });
|
||||
|
||||
function changeCodeInUncaughtHandler() {
|
||||
process.on('exit', (code) => {
|
||||
assert.strictEqual(process.exitCode, 97);
|
||||
assert.strictEqual(code, 97);
|
||||
});
|
||||
process.on('uncaughtException', () => {
|
||||
process.exitCode = 97;
|
||||
});
|
||||
throw new Error('ok');
|
||||
}
|
||||
cases.push({ func: changeCodeInUncaughtHandler, result: 97 });
|
||||
|
||||
function changeCodeInExitWithUncaught() {
|
||||
process.on('exit', (code) => {
|
||||
assert.strictEqual(process.exitCode, 1);
|
||||
assert.strictEqual(code, 1);
|
||||
process.exitCode = 98;
|
||||
});
|
||||
throw new Error('ok');
|
||||
}
|
||||
cases.push({
|
||||
func: changeCodeInExitWithUncaught,
|
||||
result: 98,
|
||||
error: /^Error: ok$/,
|
||||
});
|
||||
|
||||
function exitWithZeroInExitWithUncaught() {
|
||||
process.on('exit', (code) => {
|
||||
assert.strictEqual(process.exitCode, 1);
|
||||
assert.strictEqual(code, 1);
|
||||
process.exitCode = 0;
|
||||
});
|
||||
throw new Error('ok');
|
||||
}
|
||||
cases.push({
|
||||
func: exitWithZeroInExitWithUncaught,
|
||||
result: 0,
|
||||
error: /^Error: ok$/,
|
||||
});
|
||||
|
||||
function exitWithThrowInUncaughtHandler() {
|
||||
process.on('uncaughtException', () => {
|
||||
throw new Error('ok')
|
||||
});
|
||||
throw new Error('bad');
|
||||
}
|
||||
cases.push({
|
||||
func: exitWithThrowInUncaughtHandler,
|
||||
result: isWorker ? 1 : 7,
|
||||
error: /^Error: ok$/,
|
||||
});
|
||||
|
||||
function exitWithUndefinedFatalException() {
|
||||
process._fatalException = undefined;
|
||||
throw new Error('ok');
|
||||
}
|
||||
cases.push({
|
||||
func: exitWithUndefinedFatalException,
|
||||
result: 6,
|
||||
});
|
||||
return cases;
|
||||
}
|
||||
exports.getTestCases = getTestCases;
|
||||
5
test/js/node/test/fixtures/rc/broken-node-options.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/broken-node-options.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"inspect-port
|
||||
}
|
||||
}
|
||||
1
test/js/node/test/fixtures/rc/broken.json
vendored
Normal file
1
test/js/node/test/fixtures/rc/broken.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{
|
||||
5
test/js/node/test/fixtures/rc/default/node.config.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/default/node.config.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"max-http-header-size": 10
|
||||
}
|
||||
}
|
||||
5
test/js/node/test/fixtures/rc/default/override.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/default/override.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"max-http-header-size": 20
|
||||
}
|
||||
}
|
||||
6
test/js/node/test/fixtures/rc/duplicate-namespace-option/node.config.json
vendored
Normal file
6
test/js/node/test/fixtures/rc/duplicate-namespace-option/node.config.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"testRunner": {
|
||||
"test-name-pattern": "first-pattern",
|
||||
"test-name-pattern": "second-pattern"
|
||||
}
|
||||
}
|
||||
3
test/js/node/test/fixtures/rc/empty-object.json
vendored
Normal file
3
test/js/node/test/fixtures/rc/empty-object.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
|
||||
}
|
||||
3
test/js/node/test/fixtures/rc/empty-valid-namespace.json
vendored
Normal file
3
test/js/node/test/fixtures/rc/empty-valid-namespace.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"testRunner": {}
|
||||
}
|
||||
1
test/js/node/test/fixtures/rc/empty.json
vendored
Normal file
1
test/js/node/test/fixtures/rc/empty.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
5
test/js/node/test/fixtures/rc/host-port.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/host-port.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"inspect-port": 65535
|
||||
}
|
||||
}
|
||||
5
test/js/node/test/fixtures/rc/import-as-string.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/import-as-string.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"nodeOptions":{
|
||||
"import": "./test/fixtures/printA.js"
|
||||
}
|
||||
}
|
||||
9
test/js/node/test/fixtures/rc/import.json
vendored
Normal file
9
test/js/node/test/fixtures/rc/import.json
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"import": [
|
||||
"./test/fixtures/printA.js",
|
||||
"./test/fixtures/printB.js",
|
||||
"./test/fixtures/printC.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
5
test/js/node/test/fixtures/rc/inspect-false.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/inspect-false.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"inspect": false
|
||||
}
|
||||
}
|
||||
5
test/js/node/test/fixtures/rc/inspect-true.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/inspect-true.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"inspect": true
|
||||
}
|
||||
}
|
||||
7
test/js/node/test/fixtures/rc/invalid-import.json
vendored
Normal file
7
test/js/node/test/fixtures/rc/invalid-import.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"import": [
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
5
test/js/node/test/fixtures/rc/namespace-with-array.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/namespace-with-array.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"testRunner": {
|
||||
"test-coverage-exclude": ["config-pattern1", "config-pattern2"]
|
||||
}
|
||||
}
|
||||
6
test/js/node/test/fixtures/rc/namespace-with-disallowed-envvar.json
vendored
Normal file
6
test/js/node/test/fixtures/rc/namespace-with-disallowed-envvar.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"testRunner": {
|
||||
"test-concurrency": 1,
|
||||
"experimental-test-coverage": true
|
||||
}
|
||||
}
|
||||
5
test/js/node/test/fixtures/rc/namespaced/node.config.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/namespaced/node.config.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"testRunner": {
|
||||
"test-isolation": "none"
|
||||
}
|
||||
}
|
||||
5
test/js/node/test/fixtures/rc/negative-numeric.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/negative-numeric.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"max-http-header-size": -1
|
||||
}
|
||||
}
|
||||
5
test/js/node/test/fixtures/rc/no-op.json
vendored
Normal file
5
test/js/node/test/fixtures/rc/no-op.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"nodeOptions": {
|
||||
"http-parser": true
|
||||
}
|
||||
}
|
||||
3
test/js/node/test/fixtures/rc/non-object-node-options.json
vendored
Normal file
3
test/js/node/test/fixtures/rc/non-object-node-options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"nodeOptions": "string"
|
||||
}
|
||||
1
test/js/node/test/fixtures/rc/non-object-root.json
vendored
Normal file
1
test/js/node/test/fixtures/rc/non-object-root.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
[]
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user