Skip to content

Commit

Permalink
Merge branch 'chloe/node-fs-1' of https://github.com/oven-sh/bun into…
Browse files Browse the repository at this point in the history
… chloe/node-fs-1
  • Loading branch information
dylan-conway committed Jan 14, 2025
2 parents c657dc7 + 7c0bf07 commit 1942c75
Show file tree
Hide file tree
Showing 11 changed files with 204 additions and 412 deletions.
343 changes: 33 additions & 310 deletions packages/bun-usockets/certdata.txt

Large diffs are not rendered by default.

86 changes: 0 additions & 86 deletions packages/bun-usockets/src/crypto/root_certs.h
Original file line number Diff line number Diff line change
Expand Up @@ -596,27 +596,6 @@ static struct us_cert_string_t root_certs[] = {
"dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=\n"
"-----END CERTIFICATE-----",.len=1473},

/* SecureSign RootCA11 */
{.str="-----BEGIN CERTIFICATE-----\n"
"MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UE\n"
"ChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJl\n"
"U2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNV\n"
"BAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRww\n"
"GgYDVQQDExNTZWN1cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\n"
"CgKCAQEA/XeqpRyQBTvLTJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1y\n"
"fIw/XwFndBWW4wI8h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyK\n"
"yiyhFTOVMdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9\n"
"UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V\n"
"1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsCh8U+iQIDAQABo0Iw\n"
"QDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud\n"
"EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKChOBZmLqdWHyGcBvod7bkixTgm2E5P\n"
"7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI\n"
"6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAY\n"
"ga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR\n"
"7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN\n"
"QSdJQO7e5iNEOdyhIta6A/I=\n"
"-----END CERTIFICATE-----",.len=1246},

/* Microsec e-Szigno Root CA 2009 */
{.str="-----BEGIN CERTIFICATE-----\n"
"MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJI\n"
Expand Down Expand Up @@ -2337,40 +2316,6 @@ static struct us_cert_string_t root_certs[] = {
"UvToiIMrVCjU8jVStDKDYmlkDJGcn5fqdBb9HxEGmpv0\n"
"-----END CERTIFICATE-----",.len=2069},

/* Entrust Root Certification Authority - G4 */
{.str="-----BEGIN CERTIFICATE-----\n"
"MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJ\n"
"BgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVu\n"
"dHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMu\n"
"IC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0\n"
"aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDEx\n"
"Nlowgb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9T\n"
"ZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRy\n"
"dXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3Qg\n"
"Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOC\n"
"Ag8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3DumSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJT\n"
"meH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV3imz/f3ET+iq4qA7ec2/a0My3dl0ELn3\n"
"9GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds8ELl3FFLFUHtSUrJ3hCX1nbB76W1\n"
"NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQe9IFWrhAnoanw5CGAlZSCXqc\n"
"0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7ibT/mCzPfB3pAqoEmh64\n"
"3IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5XxNMhIWNlUpEbsZmO\n"
"eX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV7rtNOzK+mndm\n"
"nqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8dWbrAuMI\n"
"NClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mWHv0l\n"
"iqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T\n"
"AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6\n"
"sb9nMA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ\n"
"9POrYs4QjbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5\n"
"ZDIBf9PD3Vht7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0g\n"
"kLpHZPt/B7NTeLUKYvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uI\n"
"AeV8KEsD+UmDfLJ/fOPtjqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS\n"
"02FREAutp9lfx1/cH6NcjKF+m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m\n"
"9IUe2K4GS0qn0jFmwvjO5QimpAKWRGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLl\n"
"YsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjAJOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuI\n"
"jnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh\n"
"7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPTkcpG2om3PVODLAgfi49T3f+sHw==\n"
"-----END CERTIFICATE-----",.len=2239},

/* Microsoft ECC Root Certificate Authority 2017 */
{.str="-----BEGIN CERTIFICATE-----\n"
"MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQG\n"
Expand Down Expand Up @@ -3188,37 +3133,6 @@ static struct us_cert_string_t root_certs[] = {
"Nzf43TNRnXCve1XYAS59BWQOhriR\n"
"-----END CERTIFICATE-----",.len=739},

/* Security Communication RootCA3 */
{.str="-----BEGIN CERTIFICATE-----\n"
"MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQ\n"
"MSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1\n"
"cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYx\n"
"NzE2WjBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4s\n"
"TFRELjEnMCUGA1UEAxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkq\n"
"hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltz\n"
"kBtnTCHsXzW7OT4rCmDvu20rhvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOz\n"
"QD11EKzAlrenfna84xtSGc4RHwsENPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MG\n"
"TfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH\n"
"7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGmnpjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e\n"
"4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtYXLVqAvO4g160a75BflcJdURQVc1aEWEh\n"
"CmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPKp7FKFSBWFHA9K4IsD50VHUeAR/94\n"
"mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC3PsXuKHqy6C0rtOUfnrQq8Ps\n"
"OC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOfGAN0iltSIEdrRU0id4xV\n"
"J/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0VcwCBEF/VfR2ccCAwEA\n"
"AaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB/wQEAwIBBjAP\n"
"BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybSYpOnpSNy\n"
"ByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHuTofj\n"
"can0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O\n"
"H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn\n"
"2ASxYfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQD\n"
"dwj98ClZXSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO\n"
"0QR4ynKudtml+LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU\n"
"1cXrvMUVnuiZIesnKwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD\n"
"2NCcnWXL0CsnMQMeNuE9dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAu\n"
"c1Uh6N//g7kdPjIe1qZ9LPFm6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR\n"
"16/9M51NZg==\n"
"-----END CERTIFICATE-----",.len=1964},

/* Security Communication ECC RootCA1 */
{.str="-----BEGIN CERTIFICATE-----\n"
"MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYTAkpQMSUw\n"
Expand Down
11 changes: 11 additions & 0 deletions src/bun.zig
Original file line number Diff line number Diff line change
Expand Up @@ -3353,12 +3353,23 @@ pub inline fn resolveSourcePath(
}

const RuntimeEmbedRoot = enum {
/// Relative to `<build>/codegen`.
codegen,
/// Relative to `src`
src,
/// Reallocates the slice at every call. Avoid this if possible. An example
/// using this reasonably is referencing incremental_visualizer.html, which
/// is reloaded from disk for each request, but more importantly allows
/// maintaining the DevServer state while hacking on the visualizer.
src_eager,
/// Avoid this if possible. See `.src_eager`.
codegen_eager,
};

/// Load a file at runtime. This is only to be used in debug builds,
/// specifically when `Environment.codegen_embed` is false. This allows quick
/// iteration on files, as this skips the Zig compiler. Once Zig gains good
/// incremental support, the non-eager cases can be deleted.
pub fn runtimeEmbedFile(
comptime root: RuntimeEmbedRoot,
comptime sub_path: []const u8,
Expand Down
2 changes: 1 addition & 1 deletion src/cli.zig
Original file line number Diff line number Diff line change
Expand Up @@ -2327,7 +2327,7 @@ pub const Command = struct {
try HelpCommand.exec(allocator);
},
.ExecCommand => {
const ctx = try Command.init(allocator, log, .RunCommand);
const ctx = try Command.init(allocator, log, .ExecCommand);

if (ctx.positionals.len > 1) {
try ExecCommand.exec(ctx);
Expand Down
45 changes: 35 additions & 10 deletions src/cli/pack_command.zig
Original file line number Diff line number Diff line change
Expand Up @@ -835,22 +835,47 @@ pub const PackCommand = struct {
const bundled_deps = json.get(field) orelse return null;

invalid_field: {
var iter = bundled_deps.asArray() orelse switch (bundled_deps.data) {
.e_array => return .{},
switch (bundled_deps.data) {
.e_array => {
var iter = bundled_deps.asArray() orelse return .{};

while (iter.next()) |bundled_dep_item| {
const bundled_dep = try bundled_dep_item.asStringCloned(allocator) orelse break :invalid_field;
try deps.append(allocator, .{
.name = bundled_dep,
.from_root_package_json = true,
});
}
},
.e_boolean => {
const b = bundled_deps.asBool() orelse return .{};
if (!b == true) return .{};

if (json.get("dependencies")) |dependencies_expr| {
switch (dependencies_expr.data) {
.e_object => |dependencies| {
for (dependencies.properties.slice()) |*dependency| {
if (dependency.key == null) continue;
if (dependency.value == null) continue;

const bundled_dep = try dependency.key.?.asStringCloned(allocator) orelse break :invalid_field;
try deps.append(allocator, .{
.name = bundled_dep,
.from_root_package_json = true,
});
}
},
else => {},
}
}
},
else => break :invalid_field,
};
while (iter.next()) |bundled_dep_item| {
const bundled_dep = try bundled_dep_item.asStringCloned(allocator) orelse break :invalid_field;
try deps.append(allocator, .{
.name = bundled_dep,
.from_root_package_json = true,
});
}

return deps;
}

Output.errGeneric("expected `{s}` to be an array of strings", .{field});
Output.errGeneric("expected `{s}` to be a boolean or an array of strings", .{field});
Global.crash();
}

Expand Down
2 changes: 1 addition & 1 deletion src/node_fallbacks.zig
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ pub const FallbackModule = struct {
return @embedFile(code_path);
}

return bun.runtimeEmbedFile(.codegen_eager, code_path);
return bun.runtimeEmbedFile(.codegen, code_path);
}
};

Expand Down
2 changes: 1 addition & 1 deletion src/runtime.zig
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ pub const Runtime = struct {
return if (Environment.codegen_embed)
@embedFile("runtime.out.js")
else
bun.runtimeEmbedFile(.src_eager, "runtime.out.js");
bun.runtimeEmbedFile(.src, "runtime.out.js");
}

pub fn versionHash() u32 {
Expand Down
73 changes: 73 additions & 0 deletions test/cli/install/bun-pack.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,79 @@ describe("bundledDependnecies", () => {
});
}

test(`basic (bundledDependencies: true)`, async () => {
await Promise.all([
write(
join(packageDir, "package.json"),
JSON.stringify({
name: "pack-bundled",
version: "4.4.4",
dependencies: {
"dep1": "1.1.1",
},
devDependencies: {
"dep2": "1.1.1",
},
bundledDependencies: true,
}),
),
write(
join(packageDir, "node_modules", "dep1", "package.json"),
JSON.stringify({
name: "dep1",
version: "1.1.1",
}),
),
write(
join(packageDir, "node_modules", "dep2", "package.json"),
JSON.stringify({
name: "dep2",
version: "1.1.1",
}),
),
]);

await pack(packageDir, bunEnv);

const tarball = readTarball(join(packageDir, "pack-bundled-4.4.4.tgz"));
expect(tarball.entries).toMatchObject([
{ "pathname": "package/package.json" },
{ "pathname": "package/node_modules/dep1/package.json" },
]);
});

test(`invalid bundledDependencies value should throw`, async () => {
await Promise.all([
write(
join(packageDir, "package.json"),
JSON.stringify({
name: "pack-bundled",
version: "4.4.4",
bundledDependencies: "a",
}),
),
]);

const { stdout, stderr, exited } = Bun.spawn({
cmd: [bunExe(), "pm", "pack"],
cwd: packageDir,
stdout: "pipe",
stderr: "pipe",
stdin: "ignore",
env: bunEnv,
});

const err = await Bun.readableStreamToText(stderr);
expect(err).toContain("error:");
expect(err).toContain("to be a boolean or an array of strings");
expect(err).not.toContain("warning:");
expect(err).not.toContain("failed");
expect(err).not.toContain("panic:");

const exitCode = await exited;
expect(exitCode).toBe(1);
});

test("resolve dep of bundled dep", async () => {
// Test that a bundled dep can have it's dependencies resolved without
// needing to add them to `bundledDependencies`. Also test that only
Expand Down
2 changes: 1 addition & 1 deletion test/js/node/process-binding.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ describe("process.binding", () => {

const map = uv.getErrorMap();
expect(map).toBeDefined();
expect(map.get(-56)).toEqual(["EISCONN", "socket is already connected"]);
expect(map.get(uv.UV_EISCONN)).toEqual(["EISCONN", "socket is already connected"]);
});
});
Loading

0 comments on commit 1942c75

Please sign in to comment.