This commit is contained in:
27
crates/kreuzberg-node/format-metadata-wrapper.js
generated
Normal file
27
crates/kreuzberg-node/format-metadata-wrapper.js
generated
Normal file
@@ -0,0 +1,27 @@
|
||||
// Wrap JsFormatMetadata to add getters for format-specific metadata
|
||||
// This works around the limitation that #[napi(getter)] doesn't work on #[napi(object)]
|
||||
|
||||
export function wrapFormatMetadata(fmt) {
|
||||
if (!fmt || typeof fmt !== "object") return fmt;
|
||||
|
||||
const tag = fmt.format_type;
|
||||
const payload = fmt["0"];
|
||||
|
||||
if (!payload) return fmt;
|
||||
|
||||
try {
|
||||
const data = JSON.parse(payload);
|
||||
|
||||
// Add the typed variant property as a non-enumerable property
|
||||
Object.defineProperty(fmt, tag, {
|
||||
value: data,
|
||||
enumerable: false,
|
||||
writable: false,
|
||||
configurable: false,
|
||||
});
|
||||
} catch (e) {
|
||||
// Ignore JSON parse errors
|
||||
}
|
||||
|
||||
return fmt;
|
||||
}
|
||||
Reference in New Issue
Block a user