mirror of
https://github.com/oven-sh/bun
synced 2026-02-11 11:29:02 +00:00
49 lines
1.5 KiB
C++
49 lines
1.5 KiB
C++
#pragma once
|
|
#include "root.h"
|
|
#include "headers-handwritten.h"
|
|
#include "BakeGlobalObject.h"
|
|
#include "JavaScriptCore/SourceOrigin.h"
|
|
|
|
namespace Bake {
|
|
|
|
class SourceProvider;
|
|
|
|
extern "C" void Bun__addBakeSourceProviderSourceMap(void* bun_vm, SourceProvider* opaque_source_provider, BunString* specifier);
|
|
|
|
class SourceProvider final : public JSC::StringSourceProvider {
|
|
public:
|
|
static Ref<SourceProvider> create(
|
|
JSC::JSGlobalObject* globalObject,
|
|
const String& source,
|
|
const JSC::SourceOrigin& sourceOrigin,
|
|
String&& sourceURL,
|
|
const TextPosition& startPosition,
|
|
JSC::SourceProviderSourceType sourceType)
|
|
{
|
|
auto provider = adoptRef(*new SourceProvider(source, sourceOrigin, WTFMove(sourceURL), startPosition, sourceType));
|
|
auto* zigGlobalObject = jsCast<Zig::GlobalObject*>(globalObject);
|
|
auto specifier = Bun::toString(provider->sourceURL());
|
|
Bun__addBakeSourceProviderSourceMap(zigGlobalObject->bunVM(), provider.ptr(), &specifier);
|
|
return provider;
|
|
}
|
|
|
|
private:
|
|
SourceProvider(
|
|
const String& source,
|
|
const JSC::SourceOrigin& sourceOrigin,
|
|
String&& sourceURL,
|
|
const TextPosition& startPosition,
|
|
JSC::SourceProviderSourceType sourceType)
|
|
: StringSourceProvider(
|
|
source,
|
|
sourceOrigin,
|
|
JSC::SourceTaintedOrigin::Untainted,
|
|
WTFMove(sourceURL),
|
|
startPosition,
|
|
sourceType)
|
|
{
|
|
}
|
|
};
|
|
|
|
} // namespace Bake
|