const bun = @import("root").bun; const logger = bun.logger; const std = @import("std"); const Fs = bun.fs; const string = bun.string; const Resolver = @import("../resolver//resolver.zig"); const JSC = bun.JSC; const JSGlobalObject = JSC.JSGlobalObject; const strings = bun.strings; const default_allocator = bun.default_allocator; const ZigString = JSC.ZigString; pub const ResolveMessage = struct { msg: logger.Msg, allocator: std.mem.Allocator, referrer: ?Fs.Path = null, logged: bool = false, pub usingnamespace JSC.Codegen.JSResolveMessage; pub fn constructor( globalThis: *JSC.JSGlobalObject, _: *JSC.CallFrame, ) callconv(.C) ?*ResolveMessage { globalThis.throw("ResolveMessage is not constructable", .{}); return null; } pub fn getCode(this: *ResolveMessage, globalObject: *JSC.JSGlobalObject) callconv(.C) JSC.JSValue { switch (this.msg.metadata) { .resolve => |resolve| { const label: []const u8 = brk: { if (resolve.import_kind.isCommonJS()) { break :brk "MODULE_NOT_FOUND"; } break :brk switch (resolve.import_kind) { .stmt, .dynamic => "ERR_MODULE_NOT_FOUND", else => "RESOLVE_ERROR", }; }; var atom = bun.String.createAtom(label); defer atom.deref(); return atom.toJS(globalObject); }, else => return .undefined, } } pub fn fmt(allocator: std.mem.Allocator, specifier: string, referrer: string, err: anyerror) !string { switch (err) { error.ModuleNotFound => { if (Resolver.isPackagePath(specifier) and !strings.containsChar(specifier, '/')) { return try std.fmt.allocPrint(allocator, "Cannot find package \"{s}\" from \"{s}\"", .{ specifier, referrer }); } else { return try std.fmt.allocPrint(allocator, "Cannot find module \"{s}\" from \"{s}\"", .{ specifier, referrer }); } }, error.InvalidDataURL => { return try std.fmt.allocPrint(allocator, "Cannot resolve invalid data URL \"{s}\" from \"{s}\"", .{ specifier, referrer }); }, else => { if (Resolver.isPackagePath(specifier)) { return try std.fmt.allocPrint(allocator, "{s} while resolving package \"{s}\" from \"{s}\"", .{ @errorName(err), specifier, referrer }); } else { return try std.fmt.allocPrint(allocator, "{s} while resolving \"{s}\" from \"{s}\"", .{ @errorName(err), specifier, referrer }); } }, } } pub fn toStringFn(this: *ResolveMessage, globalThis: *JSC.JSGlobalObject) JSC.JSValue { var text = std.fmt.allocPrint(default_allocator, "ResolveMessage: {s}", .{this.msg.data.text}) catch { globalThis.throwOutOfMemory(); return .zero; }; var str = ZigString.init(text); str.setOutputEncoding(); if (str.isUTF8()) { const out = str.toValueGC(globalThis); default_allocator.free(text); return out; } return str.toExternalValue(globalThis); } pub fn toString( // this this: *ResolveMessage, globalThis: *JSC.JSGlobalObject, _: *JSC.CallFrame, ) callconv(.C) JSC.JSValue { return this.toStringFn(globalThis); } pub fn toPrimitive( this: *ResolveMessage, globalThis: *JSC.JSGlobalObject, callframe: *JSC.CallFrame, ) callconv(.C) JSC.JSValue { const args_ = callframe.arguments(1); const args = args_.ptr[0..args_.len]; if (args.len > 0) { if (!args[0].isString()) { return JSC.JSValue.jsNull(); } const str = args[0].getZigString(globalThis); if (str.eqlComptime("default") or str.eqlComptime("string")) { return this.toStringFn(globalThis); } } return JSC.JSValue.jsNull(); } pub fn toJSON( this: *ResolveMessage, globalThis: *JSC.JSGlobalObject, _: *JSC.CallFrame, ) callconv(.C) JSC.JSValue { var object = JSC.JSValue.createEmptyObject(globalThis, 7); object.put(globalThis, ZigString.static("name"), ZigString.init("ResolveMessage").toValueGC(globalThis)); object.put(globalThis, ZigString.static("position"), this.getPosition(globalThis)); object.put(globalThis, ZigString.static("message"), this.getMessage(globalThis)); object.put(globalThis, ZigString.static("level"), this.getLevel(globalThis)); object.put(globalThis, ZigString.static("specifier"), this.getSpecifier(globalThis)); object.put(globalThis, ZigString.static("importKind"), this.getImportKind(globalThis)); object.put(globalThis, ZigString.static("referrer"), this.getReferrer(globalThis)); return object; } pub fn create( globalThis: *JSGlobalObject, allocator: std.mem.Allocator, msg: logger.Msg, referrer: string, ) JSC.JSValue { var resolve_error = allocator.create(ResolveMessage) catch unreachable; resolve_error.* = ResolveMessage{ .msg = msg.clone(allocator) catch unreachable, .allocator = allocator, .referrer = Fs.Path.init(referrer), }; return resolve_error.toJS(globalThis); } pub fn getPosition( this: *ResolveMessage, globalThis: *JSC.JSGlobalObject, ) callconv(.C) JSC.JSValue { return JSC.BuildMessage.generatePositionObject(this.msg, globalThis); } pub fn getMessage( this: *ResolveMessage, globalThis: *JSC.JSGlobalObject, ) callconv(.C) JSC.JSValue { return ZigString.init(this.msg.data.text).toValueGC(globalThis); } pub fn getLevel( this: *ResolveMessage, globalThis: *JSC.JSGlobalObject, ) callconv(.C) JSC.JSValue { return ZigString.init(this.msg.kind.string()).toValueGC(globalThis); } pub fn getSpecifier( this: *ResolveMessage, globalThis: *JSC.JSGlobalObject, ) callconv(.C) JSC.JSValue { return ZigString.init(this.msg.metadata.resolve.specifier.slice(this.msg.data.text)).toValueGC(globalThis); } pub fn getImportKind( this: *ResolveMessage, globalThis: *JSC.JSGlobalObject, ) callconv(.C) JSC.JSValue { return ZigString.init(this.msg.metadata.resolve.import_kind.label()).toValueGC(globalThis); } pub fn getReferrer( this: *ResolveMessage, globalThis: *JSC.JSGlobalObject, ) callconv(.C) JSC.JSValue { if (this.referrer) |referrer| { return ZigString.init(referrer.text).toValueGC(globalThis); } else { return JSC.JSValue.jsNull(); } } pub fn finalize(this: *ResolveMessage) callconv(.C) void { this.msg.deinit(bun.default_allocator); } }; on> Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/test/exports (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2023-07-30FIx Uint8Array to a ReadableStream code snippet (#3895)Gravatar audothomas 1-1/+1
2023-07-30Micro-optimize LineOffsetTable.generateGravatar Jarred Sumner 1-1/+4
2023-07-30skip flay testGravatar Jarred Sumner 2-5/+4
2023-07-30Support `bun .` to run the entry point (#3891)Gravatar Jarred Sumner 8-164/+110
2023-07-30Update install.md (#3890)Gravatar Tiramify (A.K. Daniel) 1-1/+1
2023-07-30Fix issue with file loader (#3889)Gravatar Jarred Sumner 5-6/+34
2023-07-30Fixes #3884Gravatar Jarred Sumner 2-42/+7
2023-07-30BumpGravatar Jarred Sumner 1-1/+1
2023-07-30remove unnecessary moveGravatar Jarred Sumner 1-1/+1
2023-07-30Fix memory leak (#3887)Gravatar Jarred Sumner 10-87/+191
2023-07-30Fix coredump when reading an empty file(`node:stream:createReadStream`) (#3882)Gravatar Ai Hoshino 2-0/+30
2023-07-30Improv. (#3885)Gravatar Tiramify (A.K. Daniel) 3-37/+38
2023-07-29Make `bun:jsc` memoryUsage more accurate (#3876)Gravatar Jarred Sumner 6-68/+61
2023-07-29docs: fixed small errors (#3879)Gravatar 0xflotus 4-4/+4
2023-07-29fix: small error (#3878)Gravatar 0xflotus 1-1/+1
2023-07-29typo spawn.md (#3875)Gravatar Jhorman Tito 1-1/+1
2023-07-28Update nodejs-apis.mdGravatar Jarred Sumner 1-4/+4
2023-07-28Update nodejs-apis.mdGravatar Jarred Sumner 1-5/+5
2023-07-28Defer task destructionbun-v0.7.1Gravatar Jarred Sumner 1-1/+17
2023-07-28Stat largefile test (#3870)Gravatar Jarred Sumner 1-0/+22
2023-07-28Ignore when printing to stdout errors (#3869)Gravatar Jarred Sumner 1-2/+4
2023-07-28Fix bug with `/path/to/absolute/bun.lockb`Gravatar Jarred Sumner 1-10/+13
2023-07-28markBindingGravatar Dylan Conway 1-0/+1
2023-07-28optional parameterGravatar Dylan Conway 1-3/+3
2023-07-28Fixes #3868Gravatar Jarred Sumner 1-2/+3
2023-07-28Fix assertion failure and possible infinite loop when printing as yarn lock f...Gravatar Jarred Sumner 2-3/+16
2023-07-28Mark broken test as todoGravatar Jarred Sumner 2-1/+5
2023-07-28fix types and add message channel/port gc testGravatar Dylan Conway 2-62/+18
2023-07-28`MessageChannel` and `MessagePort` (#3860)Gravatar Dylan Conway 57-247/+3752
2023-07-28mark tests as todoGravatar Jarred Sumner 2-81/+75
2023-07-28add fork to child_process (#3851)Gravatar Vlad Sirenko 7-19/+446
2023-07-28feat(bun/test): Impl. expect().pass() & expect().fail() (#3843)Gravatar Tiramify (A.K. Daniel) 6-5/+212
2023-07-28fix the chunk boundary (`node:stream:createReadStream`) (#3853)Gravatar Ai Hoshino 3-8/+90
2023-07-28Support file: URLs in `fetch` (#3858)Gravatar Jarred Sumner 6-183/+281
2023-07-28fix(tls) exposes native canonicalizeIP and fix rootCertificates (#3866)Gravatar Ciro Spaciari 7-29/+125
2023-07-28Fixes #3795 (#3856)Gravatar Jarred Sumner 11-6/+140
2023-07-28Add todoGravatar Jarred Sumner 2-0/+8
2023-07-28Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1
2023-07-28Update pull_request_template.mdGravatar Jarred Sumner 1-11/+16
2023-07-27Fix bug with // @bun annotation in main thread (#3855)Gravatar Jarred Sumner 4-2/+53
2023-07-27Add `Bun.isMainThread`Gravatar Jarred Sumner 7-3/+48
2023-07-27Uncomment testGravatar Jarred Sumner 1-1/+1
2023-07-27Resolve watch directories outside main thread + async iterator and symlink fi...Gravatar Ciro Spaciari 8-197/+523
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-2/+2
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-0/+4
2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-5/+11